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. 531 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 đó.
Ensuring High Availability of Ads Realtime Streaming Services
Mảng quảng cáo của Pinterest tăng nhiều lần trong vài năm. Luồng thời gian thực: Ads Server ghi event hiển thị và hành động → Spend Aggregator (Flink) gộp thành event chi tiêu theo nhà quảng cáo → ba service Kafka…
How we designed our continuous integration system to be more than 50% faster
Đội Engineering Productivity của Pinterest làm CI cho các repo lớn, phục vụ hơn 1.000 engineer (2020). Repo được nói tới là Optimus: monorepo Java hơn 120 service, gồm nhiều nền tảng dữ liệu quan trọng, khoảng 300 người…
What we learned from an iOS app OOMs incident
Đầu 2020: crash out-of-memory trên app iOS tăng mạnh; tỉ lệ người dùng không gặp crash (CFUR) giảm từ 99% xuống 96%.
Evolving Reddit's ML Model Deployment and Serving Architecture
Hệ ML của Reddit (2021) phục vụ hàng nghìn request inference mỗi giây cho feed, video, push, email. Inference nằm trong Minsky, một service Thrift Python (baseplate.py) vốn phục vụ dữ liệu relevance (độ giống giữa…
The Legends of Runeterra CI/CD Pipeline
Legends of Runeterra (2021): monorepo Git LFS khoảng 100 GB, một triệu file, 270k commit, khoảng 700 nhánh; Jenkins với scripted pipeline (logic phức tạp viết bằng Python, Groovy chỉ làm keo). Build farm trên AWS: 100…
Slack's Outage on January 4th 2021
Ngày làm việc đầu năm: Slack đi từ lúc vắng nhất năm sang một trong những ngày đông nhất chỉ qua một đêm; cache của client nguội nên lần kết nối đầu kéo nhiều dữ liệu hơn thường. Traffic còn có các đỉnh nhỏ đầu mỗi giờ…
Migrating Millions of Concurrent Websockets to Envoy
Hàng triệu user kết nối đồng thời lúc cao điểm, gửi nhau rất nhiều tin nhắn nhỏ qua websocket vào hệ "wss" (tin nhắn, presence, app). Từ đầu Slack dùng HAProxy ở nhiều region AWS để kết thúc websocket gần user.
Service Architecture at SoundCloud — Part 3: Domain Gateways
Bài cuối của series 3 phần về tiến hoá kiến trúc service của SoundCloud. Phần 1: ; phần 2: . Theo phần tóm tắt trong bài, kiến trúc có ba tầng:
Service Architecture at SoundCloud — Part 2: Value-Added Services
Sau nhiều năm dùng BFF, logic nghiệp vụ và phân quyền bị nhân bản ở từng BFF và lệch nhau (). Với SoundCloud, lộ track riêng tư hoặc chưa phát hành là kịch bản tệ nhất.
A deeper dive into our May 2019 security incident
Ngày 12/5/2019, cộng đồng báo một tài khoản lạ có quyền moderator và developer trên toàn network Stack Exchange. Điều tra cho thấy đó chỉ là phần nổi: kẻ tấn công đã lấy được mã nguồn và làm lộ thông tin cá nhân của 184…
Service Level Testing for Microservices in Swiggy
Năm 2021 Swiggy chạy hơn 400 microservice production; vài năm trước chỉ vài chục. Cùng lúc tốc độ deploy giảm: tính năng kéo từ ngày thành tuần, sửa nhỏ cũng mất nhiều ngày dev và test.
How we build the Image Gallery on trivago
Một pipeline ETL sinh gallery ảnh đã sắp thứ tự cho mỗi chỗ ở (theo tag nội dung và chất lượng ảnh) rồi gửi cho các đội frontend. Pipeline chạy trên AWS, rồi được chuyển sang GCP và thiết kế lại toàn bộ để thêm tính…
Next.js 12
Compiler Rust (SWC) thay Babel: theo Vercel, biến đổi mã nhanh hơn Babel 17 lần, refresh local nhanh khoảng 3 lần và build nhanh khoảng 5 lần. Phải viết lại các phép biến đổi Babel của Next.js bằng Rust, kể cả một…
How WhatsApp is enabling end-to-end encrypted backups
Tin nhắn đã mã hoá đầu cuối, nhưng bản sao lưu lịch sử chat lên Google Drive hay iCloud thì chỉ được bảo vệ bởi chính nhà cung cấp lưu trữ. Đó là lỗ hổng lớn nhất còn lại của lời hứa "chỉ hai đầu đọc được".
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…