Bài tóm tắt
Tóm tắt bằng lời riêng, luôn dẫn về bài gốc. 979 bài. Đọc miễn phí.
Nguồn dữ liệu danh sách bài viết của blog công ty
Danh sách bài trên trang công ty gồm 10.013 bài. Khoảng 73,6% (7.365 bài) do SWE Wiki thu thập thủ công từ kho lưu trữ blog chính chủ của các công ty, kèm ngày đăng. Phần còn lại lấy từ các danh sách công khai trên GitHub: binhnguyennus/awesome-scalability (667), abhivaikar/howtheytest (551), upgundecha/howtheysre (499), eugeneyan/applied-ml (376), Engineer1999/ML-System-Design-Case-Studies (239), upgundecha/howtheyaws (149) và một số danh sách nhỏ khác. Mọi link luôn dẫn về bài gốc trên blog của tác giả; SWE Wiki không sao chép nội dung bài. Hiện 9.115 bài thuộc 135 công ty có trang wiki riêng và 897 bài thuộc 261 trang danh sách bài viết (công ty chưa có trang wiki); thành viên xem được toàn bộ danh sách. Cảm ơn những người duy trì các danh sách đó.
Designing Experimentation Guardrails
Mỗi tuần hàng nghìn thí nghiệm online chạy song song trên Airbnb, mỗi thí nghiệm theo dõi khoảng vài chục metric (2021).
Himeji: A Scalable Centralized System for Authorization at Airbnb
Ở thời monolith Rails, mỗi resource có một API duy nhất để đọc dữ liệu, và kiểm tra quyền nằm trong API đó, nên rất dễ quản lý.
The Enterprise Multi-Active Disaster Recovery System
DR 1.0: chỉ backup dữ liệu (cold backup) sang một datacenter khác. Theo Alibaba, người ta không dám chuyển sang: bản cold backup lệch phiên bản với production, và sợ chuyển đi rồi không chuyển về được.
Business-Driven Upgrade of Alibaba Group: The Evolution of Dubbo 3.0
Cuối 2020 Alibaba đặt mục tiêu hợp nhất công nghệ nội bộ, mã nguồn mở và sản phẩm thương mại. Bên trong dùng framework RPC HSF (đã qua nhiều mùa Double 11), bên ngoài là Dubbo mã nguồn mở. Dubbo 3.0 là bản hợp nhất hai…
The history of Amazon's forecasting algorithm
Forecast nhu cầu cho hơn 400 triệu sản phẩm ở hơn 185 nước để quyết định tồn kho; đội forecast từ 10 người không có nhà khoa học lên gần 200 người (2021).
An AKS Performance Journey: Part 1 — Sizing Everything Up
2019–2020, đội ASOS Web chuyển một số micro-frontend từ Azure Cloud Services sang AKS để tăng mật độ service, khả năng scale và quyền kiểm soát. Mọi thay đổi kiến trúc lớn ở ASOS phải qua một loạt cổng kiểm tra trước…
An AKS Performance Journey: Part 2 — Networking It Out
Sau phần 1, PLP trên AKS vẫn chậm hơn Cloud Services khoảng 100 ms ở percentile cao. Log có nhiều timeout gọi API, kèm lỗi getaddrinfo EAIAGAIN từ NodeJS và các lần chờ đúng 5 giây.
Multilingual message content moderation at scale (part 1)
Bumble Inc. (vận hành Badoo và Bumble) có mặt ở 150 nước, 50 ngôn ngữ. Cần một bộ phát hiện tin nhắn độc hại (Rude Message Detector trên Badoo) chạy được mọi ngôn ngữ mà không cần biết trước ngôn ngữ của tin nhắn, để…
Moving to DynamoDB to Increase Application Resiliency
Một team ở Capital One chạy stack active-active ở hai region AWS (East, West), service tự failover gần như tức thì, trừ PostgreSQL: primary ở một region, read replica ở region kia, promote mất 10–15 phút.
Maintaining Machine Learning Model Accuracy Through Monitoring
Model của DoorDash ước thời gian nấu, thời gian giao, quyết định giao đơn nào cho Dasher. Theo DoorDash, model bắt đầu xuống cấp ngay khi lên production (model drift) vì dữ liệu đổi: thêm khách, thêm sản phẩm, hay sự…
Lessons learned from running GraphQL at scale
Dream11 từ 300.000 người dùng (2015) lên hơn 110 triệu (2021), chuyển sang microservice. Khi số service tăng, frontend khó tự gom dữ liệu từ nhiều service, nên năm 2017 dựng một tầng GraphQL (Express.js) đứng trước toàn…
To Scale In Or Scale Out? Here's How We Scale at Dream11
Fantasy sports, hơn 100 triệu user, hơn 5,5 triệu đồng thời, hơn 100 triệu request/phút ở edge, hơn 30.000 tài nguyên compute lúc cao điểm IPL, hơn 100 microservice.
Finding Order in Chaos: How We Automated Performance Testing with Torque
IPL 2020: hơn 5,5 triệu user đồng thời, có service nhận hơn 80 triệu request/phút.
Atlas: Our journey from a Python monolith to a managed platform
Metaserver, monolith Python từ 2007, hơn 3 triệu dòng; khoảng một nửa commit vào repo server sửa nó. Mô hình "hệ mặt trời": tính năng sản phẩm nằm trong monolith, các thành phần nền (xác thực, metadata, filesystem,…
How image search works at Dropbox
Ảnh là loại file phổ biến trên Dropbox nhưng tên file do máy ảnh đặt (2017-07-04 12.37.54.jpg) nên search theo tên vô dụng. Cần search theo nội dung ảnh bằng vài từ mô tả.
Lessons learned in incident management
Dropbox cam kết SLA 99,9% với một số khách hàng (khoảng 43 phút down/tháng), mục tiêu nội bộ 99,95% (khoảng 21 phút/tháng, 2021). Muốn giữ ngân sách đó thì phải rút ngắn cả ba pha của một incident availability: phát…
Fastest Table Sort in the West – Redesigning DuckDB's Sort
Sort trong DB không phải sort một mảng số: sắp cả hàng (gồm các cột "payload" không nằm trong ORDER BY), theo nhiều cột, có chiều tăng/giảm và vị trí NULL. Bộ so sánh kiểu if/else cho mỗi hàng, cộng với lưu trữ cột, gây…
How Etsy Prepared for Historic Volumes of Holiday Traffic in 2020
Quý 2/2020 (lockdown) traffic tăng bằng mức thường mất vài năm. Mùa lễ cuối năm không đoán được; scale thừa thì phí tiền, thiếu thì hại người bán. Cuối 2020: 81 triệu người mua hoạt động, hơn 85 triệu sản phẩm.
Etsy's Journey to TypeScript
Etsy hơn 16 năm tuổi; monorepo có hơn 17.000 file JavaScript trải qua nhiều thế hệ site. Khó biết phần nào là thực hành tốt, phần nào là nợ kỹ thuật; JavaScript ít ràng buộc nên dùng thư viện sai dễ xảy ra. Một năm rưỡi…
How We Built A Context-Specific Bidding System for Etsy Ads
Etsy Ads là đấu giá second-price thời gian thực; năm 2019 mọi seller được chuyển sang giá thầu tự động. Bộ đặt giá cũ tĩnh: ước lượng tỉ lệ mua sau click (PC-CVR) cho mỗi listing một lần mỗi ngày, nên đặt cùng giá lúc…
Improving how we deploy GitHub
Trong một năm, số developer đóng góp vào app GitHub.com tăng gấp đôi, và công cụ deploy cũ không còn theo kịp.
Partitioning GitHub's relational databases to handle scale
Hơn 10 năm trước GitHub bắt đầu bằng Rails + một MySQL.
How we prevented security fixes leaking into our public repositories
GitLab làm việc "công khai mặc định", trừ bản vá bảo mật (làm công khai là lộ lỗ hổng trước khi có bản vá). Mỗi project công khai có một fork Security riêng tư; repo công khai (Canonical) được push mirror sang fork đó…
Building Multi-Region Resiliency with Amazon RDS and Amazon Aurora
Mảng Transaction Banking của Goldman Sachs phải chứng minh với cơ quan quản lý và kiểm toán rằng hệ thống vẫn chạy khi mất cả một vùng địa lý hoặc khi nhà cung cấp cloud incident lớn.