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 đó.
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.
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: tầng API 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…
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…
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).
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.
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…
The static-all Split - Dividing Zillow's JavaScript Monolith Repository
Năm 2012, dự án "The Great Schism" tách mọi tài nguyên tĩnh (JS, CSS, ảnh, template) khỏi ứng dụng monolith Java vào một repo tên static-all.
Avoid webpack bloat: Optimize your dependencies
Mỗi dependency npm là một nguồn lỗi và bảo trì; thư viện phổ biến cũng phình dần (Moment.js 2,2 KB lúc 1.0 → hơn 20 KB gzip).
Nebula as a Storage Platform to Build Airbnb's Search Backends
2015: dữ liệu cá nhân hoá cho search vượt sức một máy. Thay vì chỉ làm lại service đó, Airbnb xây nền tảng chung vì thấy nhiều service sẽ cần cùng thứ: phục vụ latency ms cho traffic site, nhận cập nhật realtime từ…
The great adventure of migrating Allegro infrastructure to new Data Center - DC5
DC2 ở Poznań là data center "thật" đầu tiên của Allegro (từ 2007). Đến 2014 có khoảng 2.000 thiết bị trong 90 tủ rack, phục vụ allegro.pl và các site khác của Naspers ở Ba Lan: khoảng 75 website ở 20 nước, khoảng 250…
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.
Scaling to exabytes and beyond (Magic Pocket)
Dropbox luôn là hybrid cloud: metadata và web server ở data center riêng, nội dung file trên Amazon S3. Họ là khách hàng sớm của S3 và nói thẳng là không thể lớn nhanh như vậy nếu không có AWS.
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.
Completing the Netflix Cloud Migration
8/2008: database bị hỏng dữ liệu nghiêm trọng, 3 ngày không gửi được DVD. Netflix kết luận phải rời các điểm hỏng đơn lẻ scale dọc (DB quan hệ trong data center) để sang hệ phân tán, scale ngang trên cloud (AWS).
Netflix Conductor: A microservices orchestrator
Content Platform Engineering chạy các quy trình nghiệp vụ bất đồng bộ trải qua nhiều microservice, có cái kéo dài nhiều ngày: nhận nội dung từ studio, ingest IMF, dựng title mới, encode và đẩy lên CDN.
Running an automated test pipeline for the League client update
Client cũ của League of Legends viết bằng Adobe AIR, có những lỗi lọt ra người chơi. Client mới (League client update) gồm frontend dựa trên Chromium và backend C++ cung cấp REST và websocket, nên tự động hoá được:…