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. 625 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 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 đó.

Mọi giai đoạn 1. Khởi đầu2. Tăng trưởng3. Quy mô lớn4. Điều chỉnh
Mọi độ khó DễCơ bảnTrung bìnhKhóNâng cao
Bài tóm tắt · Ele.me · 2020 Trung bình

5-year Evolution of Ele.me's Transaction System - Part 4

Sau khi shard (đầu 2016), nút cổ chai dời từ DB sang Redis (khoảng 6/2016). Twemproxy và Codis gặp nhiều vấn đề, nên Ele.me tự viết proxy Redis corvus có đủ metric (bộ nhớ, kết nối, hit rate, số key). Code dùng Redis…

Bài tóm tắt · Ele.me · 2020 Trung bình

5-year Evolution of Ele.me's Transaction System - Part 5

Incident RabbitMQ: test hiệu năng cho thấy throughput ổn, nhưng thực tế CPU cao tới mức kích hoạt cơ chế tự bảo vệ của RabbitMQ, chặn producer. Gốc nằm ở client RabbitMQ do một phòng khác tự đóng gói, dùng sai chế độ…

Bài tóm tắt · Expedia · 2020 Trung bình

Autoscaling in Kubernetes: Why doesn't the Horizontal Pod Autoscaler work for me?

Chủ ứng dụng ở Expedia bật HPA theo tài liệu (ví dụ: scale khi CPU trung bình quá 80%) rồi thấy nó "không chạy". Series đặt bốn tiêu chí cho autoscaling: reliability, efficiency, responsiveness, resilience; bài này chỉ…

Bài tóm tắt · Figma · 2020 Trung bình

Inside Figma: a case study on strict null checks

Figma dùng TypeScript từ trước bản 2.0 (khi strictNullChecks ra đời); code mới vẫn không nhất thiết qua được cờ này. Bật cờ trên frontend khoảng 1.162 file sinh hơn 4.000 lỗi, sửa một lỗi thường lộ thêm lỗi khác.

Bài tóm tắt · GitLab · 2020 Trung bình

How we scaled async workload processing at GitLab.com using Sidekiq

GitLab (Rails) xử lý việc nền bằng Sidekiq trên Redis. Lịch sử: 2013 mỗi worker class một queue, không ai quản; 2016 gom theo tính năng; 2017 lại mỗi worker class một queue, gom thành nhóm realtime, asap, besteffort để…

Bài tóm tắt · GitLab · 2020 Dễ

How we built Status Page

Incident của GitLab.com được xử lý trong issue của một project công khai; người trực tự đăng cập nhật lên status.gitlab.com mỗi 15 phút. Người xử lý mất thời gian đổi công cụ và chép lại thông tin.

Bài tóm tắt · GoCardless · 2020 Trung bình

Fear-free PostgreSQL migrations for Rails

Postgres là database mặc định của GoCardless, đứng sau monolith API chính (Rails). Schema đổi qua migration của Rails.

Bài tóm tắt · GoCardless · 2020 Trung bình

Incident review: Service outage on 25 October 2020

GoCardless quản lý secret bằng HashiCorp Vault chạy trên Kubernetes: kỹ sư tự ghi secret (không đọc được), ứng dụng chỉ đọc secret của chính nó theo service account. Vault là phụ thuộc của gần như mọi service production.

Bài tóm tắt · Gojek · 2020 Trung bình

How We Upgrade Kubernetes on GKE

Kubernetes ra một bản minor mỗi quý; team Engineering Platform của Gojek phải theo kịp trên nhiều cluster GKE.

Bài tóm tắt · Google · 2020 Trung bình

Three months, 30x demand: How we scaled Google Meet during COVID-19

Từ 17/2/2020, SRE của Meet nhận page về năng lực theo region (alert kiểu triệu chứng: "quá nhiều task lỗi", "cắt tải quá nhiều"), bắt đầu ở châu Á rồi Ý. Dùng lượng tăng 30 lần trong khoảng ba tháng; lúc kết thúc có hơn…

Bài tóm tắt · Disney Hotstar · 2020 Dễ

Journey from EC2 to Containers

Đỉnh user đồng thời: ~4,7 triệu (2017), ~10,3 triệu (IPL 2018).

Bài tóm tắt · Disney Hotstar · 2020 Trung bình

GoCD on Kubernetes

Mục tiêu của Platform Team ở Hotstar: tự động hoá mọi bước can thiệp tay trong deploy, từ lúc merge vào trunk tới production. Muốn vậy, không chỉ code mà cả script deploy, hạ tầng, cấu hình ứng dụng đều phải được…

Bài tóm tắt · Disney Hotstar · 2020 Dễ

Infrastructure Security as a product for Hotstar

Engineer Hotstar tự vận hành thứ mình xây, deploy qua AWS Console, manifest Kubernetes hay Terraform. Đội security mới lập được vài tháng (cuối 2019), trước mùa cricket lớn.

Bài tóm tắt · Instacart · 2020 Nâng cao

Creating a Logical Replica from a Snapshot in RDS Postgres

Instacart cần bật mã hoá at-rest cho các DB RDS Postgres có sẵn (cỡ vài TB). Quy trình AWS khuyên: tắt DB, snapshot, mã hoá snapshot, restore: nhiều giờ downtime, trong khi cửa sổ trống chỉ khoảng 2 giờ (giữa chuyến…

Bài tóm tắt · Jane Street · 2020 Khó

Memory allocator showdown

OCaml 4.10 thêm allocator best-fit bên cạnh allocator mặc định next-fit. Jane Street chuyển sang best-fit và thấy cải thiện lớn, nhưng bài kể cái khó là chứng minh điều đó.

Bài tóm tắt · Jane Street · 2020 Trung bình

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ý.

Bài tóm tắt · Jepsen · 2020 Khó

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ề…

Bài tóm tắt · LinkedIn · 2020 Trung bình

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…

Bài tóm tắt · LinkedIn · 2020 Khó

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à…

Bài tóm tắt · LinkedIn · 2020 Nâng cao

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à…

Bài tóm tắt · LinkedIn · 2020 Nâng cao

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.

Bài tóm tắt · LinkedIn · 2020 Trung bình

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.

Bài tóm tắt · LinkedIn · 2020 Trung bình

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.

Bài tóm tắt · Monzo · 2020 Trung bình

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…