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. 351 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 đó.
Wix Inbox Journey: 3 Approaches for Zero Downtime Database Migration
Wix có hơn 200 triệu user ở 190 nước. Ứng dụng chat của Wix Inbox (trong bộ CRM) chạy trên Cassandra tự quản lý trên EC2, dùng chung cho nhiều microservice.
How We Improved Website Performance by Evolving Our Infrastructure
Wix phục vụ hàng triệu site, nhiều site làm từ lâu và không ai sửa nữa; là môi trường quản lý nên phần lớn hiệu năng nằm trong tay nền tảng chứ không phải người dùng. Từ 6/2021 Google đưa page experience vào xếp hạng…
Moving Velo to Multiple Container Sites: The Why, The How and The Lessons Learned
Velo (trước gọi là Corvid) cho người dùng Wix viết code backend và frontend cho site. Nó được thiết kế rất rẻ để phục vụ hàng chục triệu khách nhỏ: mỗi site chạy trên một container. Khách lớn xuất hiện thì cần chạy…
The process: Implementing Yelp's failover strategy
Yelp phục vụ từ hai region AWS ở hai bờ nước Mỹ. Request chỉ đọc (phần lớn traffic) đi tới region gần nhất, có logic cân tải giữa hai bên.
Kafka on PaaSTA: Running Kafka on Kubernetes at Yelp (Part 1 - Architecture)
Kafka của Yelp nhận hàng chục tỷ message mỗi ngày (2021).
Working with PostgreSQL
Các database của Console (báo cáo, lịch sử giao dịch) tự host trên EC2: hàng trăm tỷ dòng, gần 20 TB, 4 node shard (2021). HA bằng failover replica đơn giản; backup bằng snapshot đĩa AWS.
Building an Effective Test Pipeline in a Service Oriented World
Airbnb đang chuyển từ một ứng dụng Rails khổng lồ sang SOA. Các luồng nghiệp vụ quan trọng từng nằm trong monorepo nay nằm ở nhiều service: REST + DB, Kafka producer/consumer, job hẹn giờ.
How we modified our infrastructure to deploy an EU data center
Khách hàng doanh nghiệp muốn chọn nơi đặt dữ liệu; Asana mở hạ tầng ở châu Âu (12/2019).
Automated testing: 5 lessons from Atlassian's Kubernetes team on testing infrastructure as code
Team KITT (Kubernetes Infrastructure Technology Team) vận hành hơn 22 cluster Kubernetes tự cấu hình (không dùng EKS/GKE vì lúc bắt đầu chúng chưa có hoặc thiếu tính năng), từ cluster dev nhỏ tới cluster production rất…
Catching bugs on the client-side: how we developed our error tracking system
Bumble và Badoo có web (desktop, mobile) và app Android, iOS với hàng triệu người dùng. Web phát hành 1–2 lần mỗi ngày, app native khoảng một lần mỗi tuần; phân tích lỗi là một bước của mỗi lần phát hành: release…
Active-Active Shared-Nothing Database Architecture
Một DB sập kéo theo nhiều service; CTO hỏi "năm 2020 rồi, sao không chạy DB active-active?". Bài giải thích vì sao active-active shared-nothing (AASN) ở tầng DB, tức là hai bản DB ở hai vùng, cùng nhận ghi, nhân bản hai…
Terraform Poka-Yokes: Writing Effective, Scalable, Dynamic, and Error-Resistant Terraform
Tác giả hỗ trợ sáu team chạy hơn 75 microservice trên ECS; môi trường non-prod có ngày tới khoảng 100 lần deploy. Mục tiêu: hỗ trợ được nhiều team mà không cần thêm người theo tỉ lệ 1–1, và developer tự quản ứng dụng…
Why Discord is switching from Go to Rust
Service Read States ghi nhận kênh/tin nào mỗi user đã đọc. Nó nằm trên đường nóng: mỗi lần kết nối, gửi tin hoặc đọc tin đều gọi tới.
Prefetch Caching of Items at eBay
Phần lớn traffic vào trang item đến từ trang kết quả tìm kiếm. Những năm trước eBay đã prefetch ảnh item sau khi trang tìm kiếm tải xong. Lần này họ muốn phục vụ cả trang item từ cache khi user bấm vào từ kết quả tìm…
5-year Evolution of Ele.me's Transaction System - Part 4
Sau khi shard (đầu 2016), nút cổ chai dời từ DB sang Redis (khoảng 6/2016). Twemproxy và Codis gặp nhiều vấn đề, nên Ele.me tự viết proxy Redis corvus có đủ metric (bộ nhớ, kết nối, hit rate, số key). Code dùng Redis…
5-year Evolution of Ele.me's Transaction System - Part 5
Incident RabbitMQ: test hiệu năng cho thấy throughput ổn, nhưng thực tế CPU cao tới mức kích hoạt cơ chế tự bảo vệ của RabbitMQ, chặn producer. Gốc nằm ở client RabbitMQ do một phòng khác tự đóng gói, dùng sai chế độ…
Autoscaling in Kubernetes: Why doesn't the Horizontal Pod Autoscaler work for me?
Chủ ứng dụng ở Expedia bật HPA theo tài liệu (ví dụ: scale khi CPU trung bình quá 80%) rồi thấy nó "không chạy". Series đặt bốn tiêu chí cho autoscaling: reliability, efficiency, responsiveness, resilience; bài này chỉ…
Inside Figma: a case study on strict null checks
Figma dùng TypeScript từ trước bản 2.0 (khi strictNullChecks ra đời); code mới vẫn không nhất thiết qua được cờ này. Bật cờ trên frontend khoảng 1.162 file sinh hơn 4.000 lỗi, sửa một lỗi thường lộ thêm lỗi khác.
How we scaled async workload processing at GitLab.com using Sidekiq
GitLab (Rails) xử lý việc nền bằng Sidekiq trên Redis. Lịch sử: 2013 mỗi worker class một queue, không ai quản; 2016 gom theo tính năng; 2017 lại mỗi worker class một queue, gom thành nhóm realtime, asap, besteffort để…
Fear-free PostgreSQL migrations for Rails
Postgres là database mặc định của GoCardless, đứng sau monolith API chính (Rails). Schema đổi qua migration của Rails.
Incident review: Service outage on 25 October 2020
GoCardless quản lý secret bằng HashiCorp Vault chạy trên Kubernetes: kỹ sư tự ghi secret (không đọc được), ứng dụng chỉ đọc secret của chính nó theo service account. Vault là phụ thuộc của gần như mọi service production.
How We Upgrade Kubernetes on GKE
Kubernetes ra một bản minor mỗi quý; team Engineering Platform của Gojek phải theo kịp trên nhiều cluster GKE.
Three months, 30x demand: How we scaled Google Meet during COVID-19
Từ 17/2/2020, SRE của Meet nhận page về năng lực theo region (alert kiểu triệu chứng: "quá nhiều task lỗi", "cắt tải quá nhiều"), bắt đầu ở châu Á rồi Ý. Dùng lượng tăng 30 lần trong khoảng ba tháng; lúc kết thúc có hơn…
GoCD on Kubernetes
Mục tiêu của Platform Team ở Hotstar: tự động hoá mọi bước can thiệp tay trong deploy, từ lúc merge vào trunk tới production. Muốn vậy, không chỉ code mà cả script deploy, hạ tầng, cấu hình ứng dụng đều phải được…