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 đó.
Dismissing Python Garbage Collection at Instagram
Web server Django chạy uWSGI ở chế độ pre-fork: process master fork ra hàng chục worker để chia sẻ bộ nhớ theo copy-on-write (CoW). Worker bị restart khi RSS vượt ngưỡng để tránh OOM.
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.
Couchbase Ecosystem at LinkedIn
LinkedIn dùng Couchbase từ 2012. Năm 2017: hơn 10 triệu query/giây, hơn 200 cluster (production, staging, corp), cluster từ 3 tới 72 node. Dùng làm cache backend cho recruiter và jobs, counter cho cơ chế chống tấn công,…
Open Sourcing Iris and Oncall
Trước 2015, kỹ sư NOC escalate incident bằng tay: không rõ ai là người liên hệ thứ hai và liên hệ bằng gì; số alert tăng nhanh hơn nhiều so với số người ở NOC. Đường escalate cũ lấy theo quản lý trong LDAP nên incident…
Improving Resiliency and Stability of a Large-scale Monolithic API Service
Voyager-API: API layer cho web và mobile của LinkedIn, ra đời từ chiến lược "mobile-first". Hai nguyên tắc thiết kế:
Resilience Engineering at LinkedIn with Project Waterbear
Càng nhiều microservice thì càng nhiều phụ thuộc, điểm hỏng và miền lỗi. Năm 2017 trang chủ phụ thuộc hơn 550 endpoint. SRE nhận "độ bền ứng dụng như một dịch vụ": đo, phân tích và đưa best practice cho chủ service.
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 strong consistency 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…
Distributed tracing at Pinterest with new open source tools
Backend Pinterest (2017): hàng trăm microservice trên hàng chục nghìn máy; một request home feed có thể network call hàng trăm lần tới hàng chục service. Metric (OpenTSDB) và log (ELK) cho biết request chậm, không cho…
The Evolution of Security at Riot
Khoảng 4 năm trước bài, đội bảo mật của Riot là đội "nói không": người gác cổng chặn việc giao tính năng, nên các team đi vòng qua. Thời gian bị nuốt vào ứng cứu incident; có incident công khai (mất dữ liệu từ database…
Our Journey to a Near Perfect Log Pipeline
Log của ứng dụng lõi Salesforce trong các data center phục vụ nhiều nhóm (Product Intelligence, Security, điều tra incident), nên phải tới "Secure Zone" gần như đầy đủ. Pipeline cũ (agent tự viết + LFTP + SAN) ngày càng…
The million dollar engineering problem
Cuối quý 3/2016: 2/3 giá vốn (COGS) của Segment là hoá đơn AWS.
A Brief History of the UUID (KSUID)
Bài giới thiệu KSUID, thư viện Go sinh ID của Segment. Phần lớn bài là lịch sử của UUID. Bối cảnh trực tiếp: một hệ thống nội bộ dùng UUIDv4, vài tuần sau phát sinh yêu cầu sắp ID theo thời gian để lưu log lên S3 theo…
Flannel: An Application-Level Edge Cache to Make Slack Scale
Slack thiết kế cho team vài trăm người: khi khởi động, client gọi rtm.start nhận toàn bộ snapshot của team (user, channel, thành viên, tin mới nhất, DM...) rồi mở WebSocket nhận event real-time.
Maximum Warp: Building Migrations for Slack Enterprise Grid
Mô hình dữ liệu Slack: mọi dữ liệu của một team nằm trên cùng một shard MySQL, băm theo ID 64-bit của team. Dàn tải tốt, nhưng khó với dữ liệu vượt ranh giới một team.
Scaling Slack's Job Queue
Job queue chạy mọi việc không làm kịp trong request web: mỗi tin nhắn, push notification, unfurl URL, nhắc lịch, tính tiền. Ngày bận nhất hơn 1,4 tỉ job, đỉnh 33.000 job/giây.
Secret Management Architectures: Finding the balance between security and complexity
Nhiều team để secret dạng plain text trong code hoặc file cấu hình, chỉ dựa vào việc repo là private. Slalom đề nghị tự hỏi: nhân viên nghỉ thì rotate secret có dễ không, bị lộ thì mất bao lâu để khoanh vùng, có audit…
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 network; thao tác bật chỉ là một feature flag, nhưng chuẩn bị mất 4 năm (2013→2017).
Scaling your API with rate limiters
Thêm capacity chỉ đỡ được mấy lần tăng traffic đầu; API production còn phải chống một người dùng (vô tình hay cố ý) làm ảnh hưởng mọi người, ưu tiên request quan trọng hơn request ít quan trọng, và bỏ bớt request khi…
Kabootar — Swiggy's Communication Platform
Swiggy (giao đồ ăn, Ấn Độ) cần liên lạc với khách hàng, shipper, nhà hàng và nhân viên chăm sóc khách hàng qua push, SMS, email.
Ratequeue: Core Queueing-And-Rate-Limiting System (chaos engineering cho failover)
Tin nhắn gửi đi của Twilio có thể bị rate limiting (quy định nhà mạng, hợp đồng, năng lực), nên mỗi sender ID có một queue tạm và được dequeue theo tốc độ cho phép.
Taming architecture complexity in V8 — the CodeStubAssembler
Builtin là các hàm có sẵn trong mọi chương trình JavaScript (Array.prototype....). V8 viết chúng theo hai cách, cả hai đều có giá:
Avoid pitfalls in scaling your Cassandra cluster: lessons and remedies
Nhiều team ở Walmart dùng Cassandra làm nguồn dữ liệu chính, đọc ghi hàng chục tới hàng trăm nghìn ops/giây. Theo bài, để tới được đó họ phải "quên" nhiều mẹo của thế giới RDBMS và chấp nhận schema trông "lạ" nhưng…
Open Sourcing Screwdriver, Yahoo's Continuous Delivery Build System for Dynamic Infrastructure
Theo Yahoo, mọi sản phẩm đang hoạt động của họ đã deploy từ commit tới production hoàn toàn tự động (2017). Screwdriver là hệ build và release nội bộ đã dùng khoảng 5 năm, xử lý hơn 25.000 build/ngày và hơn 12.000…
Airflow at Zillow
Team Data Science and Engineering (DSE) chạy nhiều ETL; trước đó mỗi job là một service tự lên lịch riêng. Gặp Airflow năm 2016.