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 đó.
Samza Aeon: Latency Insights for Asynchronous One-Way Flows
Metric request/response chỉ đo được tới khi response trả về. Một request khởi động chuỗi xử lý bất đồng bộ qua nhiều hệ (gửi tin nhắn → push notification tới APNS/GCM) trông như rất nhanh trên dashboard nhưng thật ra…
Managing Software Dependency at Scale
LinkedIn có hơn 10.000 codebase (multiproduct), mỗi cái một repo, phụ thuộc nhau qua artifact nhị phân (Gradle/Maven) chứ không qua mã nguồn mới nhất. Sửa một product phải biết không làm hỏng product phụ thuộc…
From shallow to deep learning in fraud
Hệ quyết định gian lận ban đầu được xây cho luật nghiệp vụ dễ đọc; model chỉ là "phần mở rộng của luật": hệ số logistic regression được chép tay vào code. Bug đầu tiên tác giả sửa là một feature tính khác nhau giữa…
Predictive test selection
Facebook dùng trunk-based development: thay đổi vào trunk phải hiện ngay với mọi kỹ sư, nên mỗi thay đổi phải được test hồi quy trước khi vào.
Private by Design: How we built Firefox Sync
Firefox Sync sync bookmark, lịch sử, mật khẩu giữa các thiết bị cho hàng triệu người dùng. Mozilla muốn dữ liệu sync được mã hoá mặc định sao cho chính Mozilla không đọc được.
Lessons from Building Observability Tools at Netflix
Netflix có 125 triệu thành viên, xem trên hơn 1.000 loại thiết bị (2018). Đội làm công cụ observability (log, trace, metric) cho cả thiết bị lẫn server, để người dùng vào một công cụ thay vì nhiều công cụ theo loại dữ…
Rethinking Netflix's Edge Load Balancing
Cloud Gateway (Zuul) nhận hơn 1 triệu request/giây (2018). Zuul dùng Ribbon round-robin + loại server có tỉ lệ lỗi kết nối cao, kèm vài tuỳ biến bớt traffic cho server mới khởi động; một số cluster origin vẫn có lỗi do…
Evolution of Application Data Caching: From RAM to SSD
EVCache (từ 2013): cache phân tán dựa trên memcached, tích hợp với AWS, được gọi là "microservice ẩn". Đến 2018 là dịch vụ tier-0: hàng PB dữ liệu, hàng trăm tỷ item, hàng nghìn tỷ thao tác/ngày, hàng nghìn server ở 3…
Scaling Time Series Data Storage — Part I
Lịch sử xem (viewing history) dùng cho bookmark và gợi ý; hội viên xem hơn 140 triệu giờ/ngày, hơn 100 triệu hội viên (2018). Dữ liệu tăng theo ba chiều: thời gian, số hội viên, số giờ xem mỗi người.
Scaling Time Series Data Storage — Part II
1/2016 Netflix mở ra 130 nước, 20 ngôn ngữ; cuối 2016 thêm video preview khi duyệt trên TV. Kiến trúc phần 1 coi mọi dữ liệu xem như nhau.
Building a dynamic and responsive Pinterest
2015: phần lớn nội dung được sinh sẵn cho user trước khi họ đăng nhập, lưu tĩnh trong HBase. Kiến trúc này đưa Pinterest tới 100 triệu MAU.
Automated Infrastructure Cost Optimization at Scale with AWS EC2 Reserved Instances
Quora chạy cả service online và tác vụ offline trên EC2; web server dùng autoscaling kết hợp on-demand và spot.
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…
Implementing ChatOps into our Incident Management Procedure
Production engineer (PE) của Shopify được coi là chuyên gia xử lý incident, nhưng xử lý incident vẫn rối và mệt: gặp lỗi mới, bám vào triệu chứng, quên các thói quen tốt khi bị áp lực.
A Pods Architecture To Allow Shopify To Scale
2015: không thể tiếp tục mua server DB to hơn, nên Shopify shard database. Scale được, nhưng mất khả năng chịu lỗi: code đầy những đoạn Sharding.witheachshard do ... end, nên chỉ cần một shard hỏng là cả hành động đó…
Re-architecting Slack's Workspace Preferences: Moving to an EAV Model
Thiết kế ban đầu: lưu tuỳ chọn của workspace dưới dạng một JSON blob ngay trong bảng workspaces (MySQL). Hợp lý khi Slack còn nhỏ.
Keeping Counts In Sync
Số lượt nghe, like, repost của mỗi track: vừa là thống kê cho creator (tổng theo khoảng thời gian bất kỳ, xem chi tiết theo ngày/giờ và phải cộng khớp), vừa là bộ đếm công khai hiện ở mọi nơi track xuất hiện, được đọc…
Stack Overflow: How We Do Monitoring - 2018 Edition
Cuối 2018, Stack Overflow vẫn chạy ASP.NET MVC5 và đang chuyển sang .NET Core. Bài chia dữ liệu monitoring thành logs, metrics, health checks và profiling, rồi kể các công cụ (phần lớn tự viết và open source) dùng cho…
Building a Pipeline to Process Clickstream Data
Clickstream là một trong những dataset lớn nhất: gần một tỷ event/ngày, dataset lớn nhất khoảng 2 TB/ngày chưa nén, bảng rộng nhất khoảng 700 cột (2018). Dùng cho dashboard, cá nhân hoá, gợi ý, ML.
Tracking the Money — Scaling Financial Reporting at Airbnb
Thanh toán của Airbnb chạy ở 191 nước, hơn 70 loại tiền, hơn 20 bộ xử lý thanh toán (2017); sản phẩm mở rộng ngoài đặt phòng (trả tiền thợ ảnh, phiên dịch, trải nghiệm).
Incidents, fixes, and the day after
Kỹ sư Booking.com được tự deploy thẳng lên production 24/7. Năm 2012 bộ phận còn nhỏ, vài trang wiki là đủ; đến 2017 bộ phận có gần 2.000 người trên toàn cầu, nên làm lại hướng dẫn xử lý incident.
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…
Infrastructure update: evolution of the Dropbox backbone network
Đưa hàng trăm PB dữ liệu về data center riêng () trong khi user vẫn tăng đòi hỏi network phải lớn nhanh. Họ xây song song một edge network toàn cầu và một backbone nối các data center ở Bắc Mỹ với nhau và với các edge…
Deployment of etcd on AWS EC2
etcd là kho key-value strong consistency, replicate sync bằng Raft; là nền cho control plane Kubernetes, lock phân tán, config, secret.