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 đó.
Timestone: Netflix's High-Throughput, Low-Latency Priority Queueing System
Năm 2018, khi thiết kế Cosmos thay hệ encode media Reloaded, cần priority queue giữa ba thành phần (API Optimus, rule engine Plato, lớp serverless Stratum). Yêu cầu:
Best Practices for Real-time Machine Learning: Alerting
Model real-time chấm điểm theo yêu cầu, nên gặp mọi lỗi của phần mềm thường (latency tăng vì tải dồn, sập vì upstream, deploy hỏng) cộng thêm lỗi riêng của ML: feature thiếu hoặc hỏng, phân phối dân số đổi đột ngột.…
Lessons Learned From Running Apache Airflow at Scale
Shopify chạy Airflow production hơn hai năm (2022) cho trích xuất dữ liệu, huấn luyện model, bảo trì bảng Iceberg, mô hình hoá DBT; Airflow 2.2 trên Kubernetes, Celery executor, MySQL 8.
Caching Without Marshal Part 1: Marshal from the Inside Out
Mọi loại cache của Rails (trang, partial, query, low-level) dùng chung read/write trên Rails.cache, và mọi backend (monolith lõi của Shopify dùng Memcached) đều serialize bằng Marshal.dump/Marshal.load. Hướng dẫn Rails…
Caching Without Marshal Part 2: The Path to MessagePack
MessagePack từ chối object lạ: chỉ mã hoá kiểu cơ bản và extension type đã đăng ký; object khác ném NoMethodError có tham chiếu tới object. Đó là điểm để log xem thứ gì đang bị đưa vào cache.
Building Self-driving Kafka clusters using open source components
Kafka ở Slack là xương sống của Job Queue (), pipeline log, trace, billing, analytics. Năm 2018 mỗi team tự chạy cluster Kafka riêng: nhiều phiên bản, lặp công sức.
Slack's Incident on 2-22-22
Client Slack phải boot (tải danh sách kênh, preference, hội thoại gần nhất) mới dùng được; boot lỗi là trang lỗi.
Why We Switched Our Data Orchestration Service
Spotify chạy 20.000 pipeline batch mỗi ngày, định nghĩa trong hơn 1.000 repo, của hơn 300 team (2022). Đa số dựa vào Luigi (Python) và Flo (Java): workflow là các task phụ thuộc đệ quy, đóng gói cả vào một image Docker,…
Search Journey Towards Better Experimentation Practices
Spotify đầu tư khoảng hai năm (2020–2021) vào nền tảng thí nghiệm mới; theo bài, nền tảng đã đủ tính năng và tiến nhanh hơn tốc độ các team áp dụng.
How We Built Infrastructure to Run User Forecasts at Spotify
Forecast số người dùng theo thị trường là một trong các chỉ số sức khoẻ kinh doanh được dùng nhiều nhất, khi Spotify mở rộng ra hơn 180 nước. Trước đó việc tune hyperparameter chạy trên một máy, mất vài tháng.
Stack under attack: what we learned about handling DDoS attacks
Trong vài tháng trước 5/2022, Stack Overflow liên tục bị DDoS theo hai kiểu: tầng ứng dụng nhắm vào API, và dồn lưu lượng nhắm vào site chính. Đến lúc viết bài, nhiều đợt chỉ còn thấy trong log và dashboard.
Migrating millions of lines of code to TypeScript
Stripe làm front-end lớn từ 2012; năm 2016 dùng sớm Flow (type checker của Meta). Engineer khổ với Flow: tốn bộ nhớ tới mức treo laptop, tích hợp editor chậm và không ổn định; TypeScript thành yêu cầu hàng đầu. Cuối…
How we built the Tinder API Gateway
Tinder có hơn 500 microservice (2022) nói chuyện với nhau qua service mesh (Envoy); dùng ở 190 quốc gia, nhận cả traffic thật lẫn traffic của kẻ xấu.
Measuring the impact of Twitter network latency with CausalImpact
Để giảm latency, Twitter làm thí nghiệm đổi edge mặc định sang edge của cloud công cộng ở một số nước, vì cloud công cộng phủ địa lý rộng hơn ở vài vùng (2022). Do cấu hình network, không chia ngẫu nhiên người dùng…
Twitter Sparrow tackles data storage challenges of scale
Mọi tương tác (bấm, vuốt, cuộn) được log thành event từ hàng chục nghìn microservice ở nhiều data center; quy mô hàng chục nghìn node, hàng trăm petabyte, hàng nghìn tỉ event/ngày (2022).
How We Halved Go Monorepo CI Build Time
Monorepo Go của Uber build bằng Bazel, hơn 10 triệu target, khoảng 500.000 file. Luồng một thay đổi: review trên Phabricator, CI chạy build + test, rồi SubmitQueue áp thay đổi lên HEAD mới nhất và chạy lại trước khi…
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ỗ.
VTOrc: Vitess-native Orchestrator
Orchestrator là công cụ phát hiện và sửa lỗi cho MySQL với gần như mọi topology (kể cả replication nhiều tầng). Vitess từng tích hợp với nó từ bên ngoài, nhưng phần tích hợp cồng kềnh và từng gây bug.
Code Verify: verifying code authenticity on WhatsApp Web
Sau multi-device (), nhiều người dùng WhatsApp thẳng trên trình duyệt.
How We Built a Cross-Region Caching Library
Wix (2022): hơn 500 tỷ HTTP request và 30 tỷ event Kafka mỗi ngày, hơn 2.500 microservice ở nhiều data center.
Kafka on PaaSTA: Running Kafka on Kubernetes at Yelp (Part 2 - Migration)
Chuyển các cluster Kafka đang chạy từ EC2 sang Kubernetes (PaaSTA) mà producer và consumer không bị gián đoạn. Ba thành phần phải thay:
Utilizing Amazon DynamoDB and AWS Lambda for Asynchronous Event Publication
Order Store của Zalando Payments lưu dữ liệu thanh toán theo đơn hàng trong DynamoDB, cập nhật qua REST sync; mỗi thay đổi phải phát event lên Nakadi (message bus của Zalando).
Optimizing Elasticsearch for Low Latency, Real-Time Recommendations
Gợi ý xuất hiện trong kết quả tìm kiếm, module gợi ý ở trang chi tiết nhà, các collection cá nhân hoá. Trước đây phần lớn (ngoài kết quả tìm kiếm) tính batch; năm 2022 chuyển phần lớn sang realtime để bắt kịp listing…
Serving Machine Learning Models Efficiently at Scale at Zillow
Nhiều tính năng của Zillow (Zestimate, gợi ý nhà, floor plan, semantic search) chạy bằng model ML. Đưa một model đã train lên làm web service cần nhiều logic nghiệp vụ quanh nó: tiền xử lý request, trích feature tức…