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 đó.
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…
Sharding Cash
Cash App bắt đầu là thử nghiệm Hack Week trên một MySQL; tới cuối 2016 đã hơn nửa triệu dòng code, chật vật giữ uptime lúc đỉnh. Đã dùng hết "sách giáo khoa": cache, chuyển dữ liệu lịch sử ra, đọc replica, mua phần cứng…
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…
Tokio Reform is Shipped and the Road to 0.2
Trước bản này, người dùng phải tự tạo và quản lý event loop, dù hầu hết đều làm giống nhau; chạy code trên thread của reactor khác hẳn chạy từ thread khác (thread pool). Reactor của Tokio vừa lo I/O vừa thực thi task…
Splitting a Monitoring Monolith into Separate Components
Team Website-Performance có một ứng dụng PHP nguyên khối (Symfony, Orchestra) kéo metric từ API của các CDN (ChinaCache, Edgecast…) và vài dịch vụ khác, đẩy vào InfluxDB qua Graphite. Code nhiều phụ thuộc chéo giữa các…
Introducing Flint: A Time-Series Library for Apache Spark
Dữ liệu tăng tới mức giải pháp một máy không còn đủ; Spark đã thành chuẩn cho big data, nhưng thiếu các thao tác chuỗi thời gian mà nghiên cứu cần.
How we build a robust analytics platform using Spark, Kafka and Cassandra
Người dùng nghiệp vụ cần dashboard mức độ còn hàng (item availability) tổng hợp ở các địa điểm then chốt, không theo dõi được từng SKU.
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.
Debugging Production with Event Logging
Trang tìm căn hộ: khi lưu một bản ghi vào SQL, các thuộc tính tìm kiếm được index vào Elasticsearch; search chạy trên Elasticsearch, rồi lấy bản ghi đầy đủ từ SQL theo ID.
Alerting Framework at Airbnb
Năm 2017 Airbnb không có đội vận hành riêng: từng team tự cấu hình monitoring và tự xử lý incident của service mình. Họ dùng Datadog.
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…
Serverless Transactions Serve Customers
Core banking chạy trên mainframe nguyên khối: chu kỳ release dài, giá mỗi GB và mỗi MIPS cao, scale phải nâng cấp đắt, capacity mua theo đỉnh, phụ thuộc chằng chịt nên khó thử cái mới.
How Discord Stores Billions of Messages
Bản đầu của Discord được viết trong chưa tới 2 tháng (đầu 2015). Mọi thứ nằm trong một replica set MongoDB, và họ nói rõ là cố ý: làm nhanh để kiểm chứng sản phẩm, nhưng luôn chừa đường sang giải pháp bền hơn. Họ biết…
How Discord Scaled Elixir to 5,000,000 Concurrent Users
Discord dùng Elixir/Erlang VM (BEAM) từ prototype đầu tiên. Sau 2 năm: gần 5 triệu user đồng thời, hàng triệu event/giây (2017).
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.
How Etsy caches: hashing, Ketama, and cache smearing
Etsy dùng memcached làm look-aside cache (kết quả query DB, search, tính toán đắt) cho PHP và Java, và Varnish làm cache HTTP cho request nội bộ giữa API server (key gồm URL, query, header trong Vary như locale).
Reducing Image File Size in the Photos Infrastructure
Hạ tầng ảnh: người bán upload, máy ImgWriter chuyển thành JPEG, lưu ở Mediastore (có dư thừa); khi xem, ImgCache lấy từ Mediastore, có cache trong bộ nhớ cho ảnh hay xem và hash để tránh làm trùng; trước đó là CDN.
An alternative approach to rate limiting
Figma bị tấn công spam lần đầu: kẻ xấu dùng tính năng mời vào tài liệu để gửi email hàng loạt. Nếu không phát hiện kịp thì chi phí gửi email tăng vọt và uy tín người gửi email (sender reputation) bị ảnh hưởng.
Postmortem of database outage of January 31
Đầu 2017, GitLab.com chạy một primary + một secondary hot standby PostgreSQL; secondary chỉ để failover, mọi tải dồn vào primary. Primary đã là shared point of failure trong vài incident trước (bloat, polling của CI giữ…
Incident review: API and Dashboard outage on 10 October 2017
Dữ liệu quan trọng nhất nằm trên Postgres 3 node: primary + 1 synchronous replica + 1 replica bất đồng bộ (mỗi lần ghi thành công đều có ít nhất 2 bản).
Driving Southeast Asia Forward with AWS
Đây là bài nói của VP Engineering tại một sự kiện AWS, nên mang tính giới thiệu và quảng bá nhiều hơn kỹ thuật.