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. 72 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 đó.
From Event-Driven Chaos to a Blazingly Fast Serving API
2016: Zalando dựng microservices với các CRUD API riêng cho từng phần dữ liệu sản phẩm. Mỗi sản phẩm hoàn chỉnh được phát thành event; ai cần dữ liệu thì phải "subscribe stream, replay từ đầu, tự dựng kho riêng". Không…
Migrating billions of records: moving our active DNS database while it's in use
Theo W3Techs (10/2024), Cloudflare là authoritative DNS của 14,5% website. Zone lớn nhất có ~4 triệu record, phần lớn zone dưới 100.
How Figma's databases team lived to tell the scale
Stack DB của Figma tăng gần 100 lần từ 2020. Cuối 2022 đã có cache, read replica và khoảng 12 DB tách dọc ().
Maxjourney: Pushing Discord's Limits with a Million+ Online Users in a Single Server
Mỗi server (guild) là một process Elixir làm điểm định tuyến trung tâm; mỗi client kết nối là một process session. Guild fan-out mọi hành động tới session, session đẩy qua websocket.
How Discord Stores Trillions of Messages
Tiếp nối . Cụm cassandra-messages tăng từ 12 node (2017) lên 177 node, hàng nghìn tỷ tin nhắn (đầu 2022).
Scaling Etsy Payments with Vitess: Part 1 – The Data Model
Cuối 2020, hai database thanh toán đã ở cấu hình máy cao nhất của Google Cloud, không scale dọc được nữa; tăng đột biến có thể gây chậm hoặc mất giao dịch.
Scaling Etsy Payments with Vitess: Part 2 – The "Seamless" Migration
Dữ liệu thanh toán phải chia lại vào 40 shard mới, kiểm đủ, rồi chuyển đọc/ghi khỏi DB production đang chạy, trên đường thanh toán của cả Etsy.com.
Scaling Etsy Payments with Vitess: Part 3 – Reducing Cutover Risk
Tác giả ở đội Data Access Platform (giữ ORM nội bộ của Etsy; đã upstream hơn 30 patch vào Vitess và giữ một fork nội bộ). Vai trò: đảm bảo query do ORM sinh ra tương thích vindex và cấu hình Vitess giữ đúng đảm bảo dữ…
How Discord Supercharges Network Disks for Extreme Low Latency
Discord chạy các cụm ScyllaDB trên Google Cloud, khoảng 4 tỉ tin nhắn/ngày (2022). Khi tải cao, hàng đợi đọc đĩa của DB tăng mãi và query bắt đầu timeout.
Building Scalable Real Time Event Processing with Kafka and Flink
Event từ service và thiết bị phải tới warehouse OLAP (Snowflake), tới nền tảng ML (feature realtime như thời gian chờ trung bình của nhà hàng), tới backend metric (Chronosphere) để giám sát bản app mới.
Increasing Magic Pocket write throughput by removing our SSD cache disks
2017: Magic Pocket dùng ổ SMR (mật độ cao, nhưng nổi tiếng chậm khi ghi ngẫu nhiên). Mọi lượt ghi trực tiếp đi vào SSD làm write-back cache, ack ngay, rồi một tiến trình nền dồn xuống SMR thành ghi tuần tự.
Cut-over logic in vitess schema migrations
Online DDL (pt-online-schema-change, fb-osc, gh-ost, Vitess): tạo bảng bóng với schema mới, chép dữ liệu, bắt kịp thay đổi, rồi cut-over: đổi tên bảng gốc đi và đưa bảng bóng vào chỗ.
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 sự cố lớn.
Scaling Kubernetes to 7,500 nodes
Một cụm duy nhất 7.500 node, chọn vì hạ tầng đơn giản cho phép team nghiên cứu scale mà không đổi code.
Migration from HBase to MyRocks at Quora
Quora có hai kho dữ liệu chính, MySQL (đã tự shard dọc và ngang) và HBase (key-value, 3 cluster để cô lập). Hai hệ rất phức tạp và không chia sẻ được kiến thức hay công cụ với nhau.
Sparkplug — a non-optimizing JavaScript compiler
Từ 2016 V8 thôi theo benchmark tổng hợp (Octane) để đo hiệu năng thực tế; với phiên ngắn (tải trang web, công cụ dòng lệnh) phần lớn thời gian trôi qua trước khi compiler tối ưu TurboFan kịp chạy. Họ đã làm parser,…
A new Protocol Buffers generator for Go
Mọi giao tiếp giữa các thành phần của Vitess đi qua gRPC, mọi message là Protobuf. Năm 2020 Google ra Go Protobuf APIv2, không tương thích APIv1. Vitess không vội nâng: việc lớn, không có lợi ích trực tiếp (không dùng…
Resiliency and Disaster Recovery with Kafka
Team Motors Vertical (eBay Classifieds Group) chạy phần mềm ở nhiều region, định kỳ diễn tập tắt cả một region. Kafka là thành phần quan trọng nhất, nhưng chạy Kafka nhiều cluster active/active vẫn khó, kể cả với…
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…
LIquid: The soul of a new graph database, Part 1
Theo LinkedIn, giá trị của đồ thị nằm chủ yếu ở mạng cấp 2: bạn của bạn, thường ít nhất 50.000 entity (người, trường, công ty). Mạng cấp 1 (vài trăm kết nối) để trong bảng hay KV là đủ; mạng cấp 3 quá lớn và khó hành…
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.
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.
Scaling Datastores at Slack with Vitess
Slack bắt đầu bằng LAMP. Mọi dữ liệu trên MySQL, gồm ba loại cluster:
6 Event-Driven Architecture Patterns — Part 2
Ba mẫu tiếp theo của team data-streams (Kafka cho hơn 1.400 microservice), dựng trên thư viện consumer Greyhound do Wix tự viết và mở mã nguồn.