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. 160 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 đó.
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 đó.
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ề…
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à…
Courier: Dropbox migration to gRPC
Dropbox chạy hàng trăm service bằng nhiều ngôn ngữ, trao đổi hàng triệu request mỗi giây (2019). Trước Courier có giao thức tự serialize, Thrift cho pipeline log, và "legacy RPC" chính là HTTP/1.1 + protobuf.
How we optimized Magic Pocket for cold storage
Magic Pocket () lưu block bất biến tối đa 4 MB trên đĩa quay (SMR từ 2018, ); trong một region thì mới upload là replication n-way, sau đó erasure coding nền.
Centralized Application Logging at eBay (CAL Ingress)
CAL gom log cục bộ của các application server về một chỗ và làm báo cáo cho mọi mảng của eBay. CAL Ingress nhận log từ hàng nghìn client qua kết nối TCP sống lâu, chia ra: raw log tới Filer, metric VID (gộp lại) qua…
Debugging the Postgres query planner
Năm 2019, DB Postgres chính của GoCardless khoảng 2 TB. Bảng paymenttransitions (mỗi lần payment đổi trạng thái là một dòng, mô hình state machine bằng Statesman) có gần nửa tỉ dòng.
Building Pubsub for 50M concurrent socket connections
IPL 2019, Hotstar ra Social Feed dưới video trên app mobile: nội dung gắn với diễn biến trận đấu nên phải đẩy realtime, không cache được, thời điểm không đoán trước (mỗi quả bóng dài ngắn khác nhau), và không được làm…
Python at Scale: Strict Modules
Instagram Server là monolith Python vài triệu dòng, hàng trăm commit mỗi ngày, deploy production vài phút một lần (2019). Theo Instagram, các tính năng động của Python ổn với codebase nhỏ và đội có kỷ luật, nhưng thành…
How We Improved Our Performance Using ElasticSearch Plugins: Part 1
Hệ gợi ý của Tinder lưu document người dùng trong Elasticsearch (6.3); mỗi lượt lấy gợi ý là một query lọc rồi sắp theo hàm relevance viết bằng Painless script.
Business Continuity & Disaster Recovery in the Microservices world
Hệ Integrated Fulfilment (app và backend cho nhân viên cửa hàng soạn đơn pickup/giao hàng) tăng trưởng mạnh và được viết lại. Yêu cầu chính: liên tục kinh doanh; một sự cố ảnh hưởng khách hàng nhiều nước.
The Evolution of Alibaba Cloud's Relational Database Services Architecture - PolarDB
Theo Alibaba, khi user, dữ liệu, service trên cloud tăng, RDS liên tục gặp vấn đề về backup, hiệu năng, migration, nâng cấp, read-only instance, dung lượng đĩa, trễ binlog; gốc phần lớn là nút cổ chai I/O (lưu trữ và…
Cross Shard Transactions at 10 Million Requests Per Second
Edgestore là lớp trừu tượng trên hàng nghìn node MySQL, giữ hàng petabyte metadata, hơn 10 triệu request/giây. Developer gom dữ liệu hay đi cùng nhau vào một colo (cùng shard vật lý): trong colo có transaction mạnh,…
Concourse: Generating Personalized Content Notifications in Near-Real-Time
Thông báo về nội dung trong mạng (Project Pepper) chạy bằng workflow Hadoop vài lần mỗi ngày: event Kafka được ETL vào HDFS, join với đồ thị fan-out, gắn feature, chấm điểm bằng model, rồi chuyển cho ATC (cổng chung cho…
Dynamometer: Scale Testing HDFS on Minimal Hardware with Maximum Fidelity
Tháng 3/2015: ngay sau khi thêm 500 máy vào cụm HDFS chính, thao tác chậm tới hai bậc độ lớn hoặc timeout, job dồn ứ. Gỡ máy ra không dễ vì chúng đã nhận dữ liệu. Nguyên nhân là một thay đổi khoảng 24 dòng trong bản…
Centrifuge: a reliable system for delivering billions of events per day
Segment nhận hàng trăm nghìn event mỗi giây và chuyển tới hàng trăm đích (Google Analytics, Salesforce, webhook của khách). Bất kỳ lúc nào cũng có vài chục đích đang hỏng: latency tăng 10 lần, 5xx, rate limit với từng…
Troubleshooting: A journey into the unknown
Distributed Load Balancing (DLB) của Booking: các server nối thẳng Internet, dual-home, peer BGP với switch hai phía, chia traffic bằng ECMP; anycast-healthchecker rút route khi service hỏng; BFD gửi hello UDP mỗi 400…
Building the Activity Graph, Part 2
FollowFeed index mọi Activity thành danh sách theo thời gian của từng actor, key là URN của actor. Bản ghi TimelineRecord phải nhỏ để index vừa RAM.
Building Venice with Apache Helix
LinkedIn có nhiều kho chuyên biệt với đánh đổi khác nhau (kho chỉ cần put/get nhanh, kho cần nhất quán mạnh và index). Theo bài, họ không viết mỗi kho từ đầu mà dùng thư viện chung; Helix (ra đời cho Espresso) lo quản…
HTTPS on Stack Overflow: The End of a Long Road
22/5/2017: HTTPS thành mặc định trên Stack Overflow, site cuối cùng và lớn nhất của mạng; thao tác bật chỉ là một feature flag, nhưng chuẩn bị mất 4 năm (2013→2017).
Evaluating MySQL Parallel Replication Part 4: More Benchmarks in Production
Phần 3 đo parallel replication kiểu "bảo thủ" (MariaDB 10.0): master đánh dấu transaction nào song song được, slave chỉ chạy song song những cái đó. Kết quả chỉ 1,3 đến 2,1 lần.
FollowFeed: LinkedIn's Feed Made Faster and Smarter
Mọi trải nghiệm feed của LinkedIn chạy trên một hạ tầng chung. Trước đó là Sensei: hệ search phân tán trên Lucene, query viết bằng BQL gồm cả lọc lẫn relevance, broker fan-out tới mọi searcher node rồi gộp top N.
Netflix Billing Migration to AWS — Part III
Mảnh cuối: database billing giao dịch, khoảng 10 TB (2016), dữ liệu đổi liên tục, chỉ chuyển một phần dataset, khác phần cứng, khác OS, khác hệ quản trị (Oracle → ?), giữa DC và AWS.