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 đó.
Finding memory leaks with Memtrace
Trước đó OCaml có Spacetime: ghi mọi lần cấp phát. Tìm leak tốt nhưng overhead cao, cần một cấu hình compiler riêng, profile rất lớn và cần rất nhiều RAM để xử lý.
Jepsen: PostgreSQL 12.3
Trước 9.1, chế độ "serializable" của PostgreSQL thực ra là snapshot isolation (SI); từ 9.1 (2011) có serializable snapshot isolation (SSI): SI cộng kiểm lúc chạy các "cấu trúc nguy hiểm" (hai cạnh phụ thuộc đọc-ghi kề…
Production testing with dark canaries
Code ở LinkedIn có thể lên production trong vòng một giờ, nhiều lần mỗi ngày; code, config hay model AI xấu vẫn gây incident dù có unit và integration test. Một số thứ (bộ nhớ, CPU/GPU, concurrency, latency) chỉ đo đúng…
Making the LinkedIn experimentation engine 20x faster
Mọi release ở LinkedIn đều qua thí nghiệm. Năm 2020 nền tảng: tới 800.000 QPS, khoảng 35.000 thí nghiệm chạy cùng lúc, tới 23 nghìn tỷ lượt evaluate/ngày, latency trung bình 700 ns (p99 3 µs), dùng trong khoảng 500…
Fixing Linux filesystem performance regressions
Fleet tăng từ hàng trăm lên hàng trăm nghìn server. Các đợt reimage trước đó làm theo kiểu dồn sức toàn đội mỗi khi có lý do bên ngoài (lỗi CPU công bố). Rút kinh nghiệm, LinkedIn dựng quy trình reimage tự động hơn và…
LIquid: The soul of a new graph database, Part 1
Theo LinkedIn, giá trị của đồ thị nằm chủ yếu ở network cấp 2: bạn của bạn, thường ít nhất 50.000 entity (người, trường, công ty). Network cấp 1 (vài trăm kết nối) để trong bảng hay KV là đủ; network cấp 3 quá lớn và…
LIquid: The soul of a new graph database, Part 2
Đồ thị biểu diễn bằng một bảng cạnh (adjacency list) là đúng mô hình quan hệ: không NULL, dạng chuẩn 5, dễ chuyển dữ liệu. Nhưng DB quan hệ truyền thống chạy rất tệ với schema này, và SQL khó dùng để dựng ứng dụng.
How LinkedIn handles merging code in high-velocity repositories
Gần 10 năm trước (tức khoảng 2010) LinkedIn bỏ một codebase monolith sang microservice, mỗi team một repo. Năm 2020: hàng nghìn dev, hơn 10.000 repo đang hoạt động, có repo hơn 300 commit/ngày. Trunk-based development.
DataHub: Popular metadata architectures explained
Tác giả từng xây Espresso, Databus, Kafka; khi sang team hạ tầng analytics (Hadoop) thấy người ta hỏi nhau "dataset nào đúng" suốt: lưu trữ và tính toán đã scale nhưng tìm dữ liệu thì chưa.
Our Evolution Towards T-REX: The Prehistory of Experimentation Infrastructure at LinkedIn
2020: T-REX (Targeting, Ramping, and Experimentation) phục vụ tới 41.000 A/B test cùng lúc trên hơn 700 triệu thành viên; gồm targeting, cấu hình động, hạ tầng thí nghiệm, pipeline báo cáo, thông báo, UI.
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.
Rebuilding our tech stack for the new Facebook.com
Facebook.com ra đời năm 2004 là một website PHP render ở server. Qua nhiều năm, từng lớp công nghệ được thêm vào cho tính năng tương tác; mỗi lớp làm site chậm thêm một chút và khó bảo trì hơn, đến mức tính năng như…
Managing hundreds of servers for load testing: autoscaling, custom monitoring, DevOps culture
Mỗi lần test dùng khoảng 100 server sinh tải và 150 server chạy service (2020); tất cả phải được tạo, cấu hình, khởi động, xoá.
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ờ. Incident đẩy họ từ test thỉnh thoảng…
Prometheus High Availability and Fault Tolerance Strategy, Long Term Storage with VictoriaMetrics
Theo Miro, Prometheus giỏi scrape và giữ metric ngắn hạn (phần lớn điều tra chỉ cần khoảng 10 ngày gần nhất), nhưng giữ lâu thì đắt vì cần đĩa nhanh, và HA không có sẵn kiểu cluster. Federation hợp để gom một phần…
Autoscaling Monzo: How we optimise our platform to be just the right size
Gần như mọi hệ thống của Monzo chạy microservice trên Kubernetes (trừ vài hạ tầng có trạng thái như Cassandra, etcd). Mỗi service build từ cùng một framework, deploy cùng một kiểu: một container service + một sidecar…
Keeping Customers Streaming — The Centralized Site Reliability Practice at Netflix
Netflix theo mô hình service ownership ("full cycle developer"): team vận hành cái mình xây; phần lớn lỗi được team sở hữu bắt trước khi khách thấy.
How Netflix Scales its API with GraphQL Federation (Part 1)
Mảng Studio (sản xuất nội dung) có hàng trăm ứng dụng; dữ liệu và quan hệ nằm rải trong vô số microservice.
Ready for changes with Hexagonal Architecture
Studio Engineering của Netflix có nhiều app phục vụ sản xuất phim (mua kịch bản, đàm phán, lịch quay...). Một app đời đầu là monolith: phát triển nhanh khi chưa ai hiểu miền nghiệp vụ; có lúc hơn 30 developer và hơn 300…
Scaling Cache Infrastructure at Pinterest
Tầng cache phân tán nằm gần đáy stack, đứng trước nhiều service và DB, hấp thụ phần lớn traffic backend: hàng nghìn máy EC2, hàng trăm TB, hơn 150 triệu request/giây lúc cao điểm (2020).
How Postman Engineering handles a million concurrent connections
Service Sync là một trong những service đầu tiên của Postman: sync mọi hoạt động trên client với server qua WebSocket theo kiểu pub/sub. Ban đầu chỉ lo giao dịch DB (ví dụ cập nhật collection), dần ôm thêm việc thông…
MySQL sharding at Quora
MySQL giữ câu hỏi, câu trả lời, upvote, comment: hàng chục TB (chưa kể replica), hàng trăm nghìn QPS; thêm Memcache và Redis cho đọc. Dữ liệu và QPS ghi tăng nên phải shard.
The Great K8S Migration
Reddit 15 tuổi (2020): nhiều kỹ sư hơn thì nhiều deploy hơn và codebase phức tạp hơn. Họ gom hạ tầng về một chuẩn trên Kubernetes để service owner chỉ lo service của mình.
Scalability and Load Testing for VALORANT
Nền tảng của VALORANT (ngoài game server) là hơn 30 microservice Go: party, matchmaking, chọn Agent, cấp trận về datacenter theo ping, lưu kết quả, store, loadout. Microservice từ đầu là bài học từ League of Legends,…