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

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 · eBay · 2020 Trung bình

Prefetch Caching of Items at eBay

Phần lớn traffic vào trang item đến từ trang kết quả tìm kiếm. Những năm trước eBay đã prefetch ảnh item sau khi trang tìm kiếm tải xong. Lần này họ muốn phục vụ cả trang item từ cache khi user bấm vào từ kết quả tìm…

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

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.

Bài tóm tắt · Ele.me · 2020 Dễ

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

Team giao dịch chưa từng có kỹ sư test; mọi thứ do R&D tự test bằng tay. Team framework cho rằng kỹ sư phải tự bảo đảm chất lượng. Tác giả thấy vậy là quá lý tưởng, nên chia vai: R&D chịu trách nhiệm chất lượng code, kỹ…

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 · Ele.me · 2020 Trung bình

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

Tách giao dịch thuận và nghịch (giữa 2016): giao dịch nghịch (hoàn, huỷ, khiếu nại) chỉ chiếm khoảng 1% đơn nhưng logic phân nhánh phức tạp hơn nhiều. Giao dịch thuận cần hiệu năng, đồng thời, ổn định. Hai bên khác nhau…

Bài tóm tắt · Ele.me · 2020 Dễ

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

2012: Zeus là một ứng dụng Python gom các module lõi (đơn hàng, user, nhà hàng) trong một repo, chạy trên cùng máy. Module đơn hàng EOS (Ele.me Order Service) có commit đầu tiên ngày 1/9/2012.

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 · Fly.io · 2020 Dễ

Fly Behind The Scenes: Fresh Logging

Fly.io gom log của mọi app trên nền tảng (flyctl logs). Hệ cũ là 7 server Graylog lớn tập trung; với 20.000–30.000 log/giây, có lúc trong ngày không xử lý kịp và log bị rơi. Log tới user bằng cách poll API của Graylog.

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

From 48k lines of code to 10: the story of GitHub's JavaScript SDK

@octokit/rest khởi đầu là package cộng đồng github (commit đầu 6/2010, thời Node v0.1). Năm 2017 GitHub nhận nó làm SDK chính thức cho REST API, chạy cả Node lẫn trình duyệt; lúc đó khoảng 16.000 dòng, lõi là…

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 · GitLab · 2020 Dễ

How we optimized infrastructure spend at GitLab

GitLab.com chạy trên GCP. Họ muốn kiểm soát chi phí cloud mà vẫn ra tính năng, theo hướng dữ liệu: mục tiêu là mọi thay đổi chi phí đều được hiểu, không còn bất ngờ.

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 Dễ

How We Monitor Apache Airflow in Production

Đội Data Engineering của Gojek chạy hơn một nghìn pipeline trên Airflow (2020). Ngoài scheduler, webserver, worker, executor, họ có thêm tiến trình riêng: sync DAG từ GCS/git, sync biến Airflow tuỳ biến. Theo họ, càng…

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