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. 82 bài (đã lọc). Đọ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 8.979 bài thuộc 133 công ty có trang riêng được hiển thị cho thành viên. Cảm ơn những người duy trì các danh sách đó.
Scaling Our Geo-Search Service For 10x Load
Available Driver Service (ADS) trả lời: "quanh vị trí này, tài xế nào thoả điều kiện?" (ví dụ xe có nước rửa tay). ADS sập thì không phân được tài xế cho đơn.
How HRT Thinks About Data
Mô hình đơn giản nhất của một thuật toán giao dịch: hộp đen nhận dữ liệu, trả quyết định giao dịch. Bên trong hộp mỗi chiến lược một khác, nhưng chung một điều: dữ liệu vào hỏng thì chiến lược hỏng.
Moving on-premise macOS build to AWS
Hạ tầng Grammarly nằm trên AWS từ lâu, trừ một chỗ: build iOS/macOS, vì Apple bắt phải build trên phần cứng Apple. Họ có một dàn máy Apple đặt tại văn phòng.
Herding elephants: Lessons learned from sharding Postgres at Notion
Một Postgres monolith (RDS) đã chạy 5 năm qua 4 bậc độ lớn tăng trưởng. Đến giữa 2020 rõ ràng nó sẽ không theo kịp.
The Legends of Runeterra CI/CD Pipeline
Legends of Runeterra (2021): monorepo Git LFS khoảng 100 GB, một triệu file, 270k commit, khoảng 700 nhánh; Jenkins với scripted pipeline (logic phức tạp viết bằng Python, Groovy chỉ làm keo). Build farm trên AWS: 100…
5-year Evolution of Ele.me's Transaction System - Part 2
DB đơn hàng: 1 primary MySQL + 5 secondary + 1 node cho MHA. Không chịu được tải đột biến: nếu phòng kinh doanh không báo trước khuyến mãi thì secondary sập và chỉ còn biết chuyển qua lại giữa các DB.
Scaling Email Infrastructure for Medium Digest
Digest là email cá nhân hoá hằng ngày, phải tới 8–9 giờ sáng theo giờ địa phương. Gửi hàng triệu email/ngày; là một trong những tải nặng nhất.
Reliable load testing with regards to unexpected nuances
Khoảng đầu 2019, ở mốc 12.000 user online đồng thời, Miro bắt đầu dựng hạ tầng load test; ba tháng sau bản test đầu tiên ra đời, và đúng lúc đó production chạm giới hạn, sập hai giờ. Sự cố đẩy họ từ test thỉnh thoảng…
Making Order in CI/CD Mess
Khoảng 2011 (bài nói "9 năm trước"), Wix có 5 monolith backend, một project Flash và khoảng 50 developer; cả 5 monolith build trên một server TeamCity. Deploy là thủ công: tải artifact từ TeamCity, FTP lên production,…
Building Scalable Real Time Analytics, Alerting and Anomaly Detection Architecture at Dream11
Dream11 (2019): hơn 3 TB dữ liệu/ngày, hơn 10 triệu giao dịch/ngày, 2,8 triệu người đồng thời, hàng tỉ sự kiện clickstream/ngày.
The Consul outage that never happened
GitLab.com (2019): khoảng 4 triệu user, 12 triệu project, 271 server production, đội Infrastructure 20–24 kỹ sư rải khắp thế giới. Đang dần chuyển sang Consul cho service discovery; thành phần chính dựa vào Consul là…
6 Lessons we learned when debugging a scaling problem on GitLab.com
Khách hàng báo lỗi git pull qua SSH chập chờn, chủ yếu từ CI và job tự động: sshexchangeidentification: connection closed by remote host. Không tái hiện được, không thấy gì rõ trên graph hay log.
Implementation of a monitoring strategy for products based on microservices
Một sản phẩm Salesforce sắp GA, ghép từ nhiều microservice do nhiều team sở hữu. Câu hỏi đơn giản "sản phẩm có đang dùng được không?" nằm rải trong các service.
Why isn't all test automation run on the pipeline?
Unit test đã chạy trong mọi pipeline, nhưng test API, UI, tích hợp, module thường vẫn chạy tay trên laptop. Theo tác giả, lý do quy về ba thứ: giá trị (chưa ai tin đáng làm), kiến trúc (hệ không chia module) và khả thi…
Gradle Remote Build Cache Misses
Thời gian build tăng là một trong những rủi ro kỹ thuật hàng đầu của đội Android SoundCloud, nằm trong mục tiêu quý của công ty dưới tên modularization. Ngoài module hoá, cách thứ hai là tránh làm lại việc bằng build…
Solving Remote Build Cache Misses by Annoying Your Colleagues
Gradle khuyên CI ghi cache từ build sạch, developer chỉ đọc; SoundCloud cho cả CI đọc cache để CI nhanh hơn. Miss xảy ra khi danh sách input của cùng một task khác nhau giữa CI và máy developer.
Diagnostics with Tracing
Trong code đồng bộ, thứ tự log ngầm cho biết ngữ cảnh: các dòng giữa "accepted connection" và "closing connection" thuộc về kết nối đó. Trong hệ async như Tokio, một thread chạy xen kẽ nhiều task, nhiều worker thread…
Architecting Restaurant Wait Time Predictions
Yelp Waitlist cho khách xếp hàng online ở nhà hàng không nhận đặt chỗ; mỗi lần xếp hàng, một model dự đoán thời gian chờ. Hệ phải bám trạng thái hiện tại của nhà hàng (bao nhiêu người đang chờ, giờ đóng cửa) và chịu QPS…
Open Sourcing Coinbase's Secure Deployment Pipeline (Odin)
Theo Coinbase (5/2018): deploy hàng trăm lần mỗi ngày trên hàng trăm project; một tính năng đi từ ý tưởng tới production dưới một giờ.
Predicting the real-time availability of 200 million grocery items
Hơn 100.000 shopper quét hàng triệu món mỗi ngày ở 20.000 cửa hàng (2018). Instacart không sở hữu chuỗi cung ứng; đối tác bán lẻ gửi dữ liệu tồn kho khoảng một lần mỗi ngày, trong khi hàng có thể hết trong ngày. Hàng…
Microservice Architecture at Medium
Medium bắt đầu năm 2012 bằng một monolith Node.js; có vài service vệ tinh nhưng chưa có chiến lược.
Scaling Kubernetes to 2,500 nodes
OpenAI chạy Kubernetes cho thí nghiệm deep learning hơn 2 năm (workload lớn nhất thì quản lý VM trực tiếp). Kubernetes cho vòng lặp nhanh, scale vừa đủ, ít boilerplate. Trên đường lên 2.500 node, lần lượt các thành phần…
Secure access to 100 AWS accounts
Segment bắt đầu trong một tài khoản AWS, năm 2017 tách thành dev, stage, prod và "ops". Đầu 2018 họ có vài chục tài khoản và thêm khoảng một tài khoản mỗi 1–2 tuần, hướng tới tài khoản riêng theo team và theo hệ thống.
AWS Multi-Account Architecture with Terraform, Yeoman, and Jenkins
Một tài khoản AWS đơn giản lúc đầu, nhưng theo Slalom hầu hết tổ chức thấy cách này không scale và muốn cô lập workload theo tài khoản.