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 đó.
Rust's CI is moving to GitHub Actions
Rust muốn master luôn xanh, nên test và merge từng PR một: các PR đã duyệt xếp hàng trong bors. CI rộng: 57 máy build và test compiler trên mọi nền tảng hỗ trợ; trên hệ cũ (Azure Pipelines, VM 2 core) mỗi builder mất…
Under Deconstruction: The State of Shopify's Monolith
18 tháng sau . Monolith chính có 2,8 triệu dòng Ruby, 500.000 commit, phát triển liên tục từ 2006, hàng trăm developer đang thêm tính năng.
Scaling Datastores at Slack with Vitess
Slack bắt đầu bằng LAMP. Mọi dữ liệu trên MySQL, gồm ba loại cluster:
How Does Spam Protection Work on Stack Exchange?
"Đặt một ô nhập liệu lên Internet thì sẽ có người nhét spam vào." Một network có hàng triệu lượt truy cập mỗi ngày và rất nhiều ô nhập liệu cần chống spam ở nhiều lớp, mỗi lớp của đường đi request (CDN → load balancer →…
How we built it: our new Articles feature for Stack Overflow for Teams
Articles là loại nội dung dài mới trong Stack Overflow for Teams; phải hiện cùng câu hỏi/trả lời trong search, profile, thông báo theo tag, có vote và comment. Mỗi article có một "loại" (Knowledge Article, Announcement,…
Phoenix — Tinder's Testing Platform, Part III (Metrics System)
Sản phẩm rộng và đổi nhanh, mỗi thành phần hành xử khác nhau theo vùng; muốn biết "sức khoẻ" cần nhiều chiều metric, và muốn tiến hoá nhanh thì phải thử nhiều và nhanh.
The Ultimate Load Test
Swipe Night (video tương tác) ra mắt ở Mỹ tối Chủ nhật 6/10/2019, chỉ trong khung 18h–24h. Thường Tinder rollout dần từ thị trường nhỏ, nhưng lần này phải bí mật và mở cho tất cả cùng lúc.
Acceptance Tests On CI Pipeline
Team test tính năng theo sprint rồi mới đưa lên production, nhưng việc giao hàng hay trễ vì lỗi do môi trường (môi trường test dùng chung, dependency thật), làm tăng Lead Time (một trong bốn chỉ số của sách Accelerate).
Introducing Domain-Oriented Microservice Architecture
Uber có khoảng 2.200 microservice quan trọng (2020).
Incrementally Adopting Next.js
Codebase frontend nhiều năm tuổi mà viết lại hết tốn nhiều năm. Bài đề xuất đưa Next.js vào từng phần.
Next.js 9.5
ISR ổn định: trang tĩnh được dựng lại ở nền khi có traffic, theo kiểu stale-while-revalidate: người dùng luôn nhận bản tĩnh đang có, bản mới chỉ thay vào sau khi dựng xong. Cùng với fallback: true (thêm trang tĩnh lúc…
Retail Graph — Walmart's Product Knowledge Graph
Catalog thương mại điện tử lấy dữ liệu từ seller và nhà cung cấp; dữ liệu hay thiếu, đôi khi sai, và không có một nguồn sự thật duy nhất. Thông tin hữu ích nằm lẫn trong tiêu đề và mô tả.
6 Event-Driven Architecture Patterns — Part 1
Team data-streams của Wix lo hạ tầng event-driven trên Kafka cho hơn 1.400 microservice (2020). Bài là ba mẫu dùng thực tế ở Wix, mỗi mẫu một use case.
6 Event-Driven Architecture Patterns — Part 2
Ba mẫu tiếp theo của team data-streams (Kafka cho hơn 1.400 microservice), dựng trên thư viện consumer Greyhound do Wix tự viết và mở mã nguồn.
Making Order in CI/CD Mess
Khoảng 2011 (bài nói "9 năm trước"), Wix có 5 monolith backend, một project Flash và khoảng 50 developer; cả 5 monolith build trên một server TeamCity. Deploy là thủ công: tải artifact từ TeamCity, FTP lên production,…
Orchestrating Cassandra on Kubernetes with Operators
Cassandra ở Yelp dùng cho cả dữ liệu chính lẫn dữ liệu dẫn xuất; mỗi cluster production trải nhiều region AWS, chạy trên EC2 + ASG, dữ liệu trên EBS (backup bằng snapshot), seed provider dựa trên synapse.
A lesson in creating and using niche business DSLs at scale
Mỗi lệnh đặt vào OMS (Order Management System) phải qua nhiều kiểm tra nghiệp vụ tốn CPU, và lệnh sau phải chờ lệnh trước. Để giảm latency, Zerodha tách một phần kiểm tra ra một thành phần đứng trước tên là Veto: một…
Infrastructure monitoring with Prometheus
Năm 2020 Zerodha xử lý khoảng 15% khối lượng giao dịch bán lẻ hằng ngày trên các sàn ở Ấn Độ; tự host gần như mọi phụ thuộc (CRM, database lớn, Kafka, mail server).
Building a Data Streaming Platform
Ba cách đưa dữ liệu vào data lake S3 trước đó, đều có vấn đề:
On-Device Stitching with Zillow 3D Home
App Zillow 3D Home (iPhone, ra 10/2017) chụp tour ảnh 360° bằng cách người dùng xoay tại chỗ. Bản đầu chụp 180 frame và gửi 70 MB trở lên mỗi panorama lên cloud để ghép.
How to Pitch Apache Kafka
Zillow chạy trên AWS và dùng SQS, SNS, Kinesis. Theo tác giả, lý lẽ "Kafka throughput tốt hơn" không thuyết phục được lãnh đạo; ở công ty trước, chính ông từ chối Kafka vì không thấy ROI của việc thêm người vận hành.
ML Model Deployment for Zillow Floor Plans with SageMaker
Zillow Floor Plan: model phát hiện cửa sổ, cửa ra vào, lối mở trong ảnh panorama của tour 3D để tự động hoá việc vẽ sơ đồ nhà. Cần hạ tầng deploy và phục vụ model dễ tích hợp, tin cậy, dễ thêm model, dùng lại được cho…
How Zillow Tests Clickstream Analytics
Event analytics (page view, sự kiện) do dev gắn vào trang, gửi Google Analytics, rồi được kéo từ BigTable về data lake (bảng Hive). Zillow chưa có schema chung cho event.
Dynein: Building a Distributed Delayed Job Queueing System
Job nền ở Airbnb gồm cả job hẹn giờ xa (nhắc check-in trước nhiều tháng, thậm chí nhiều năm). Yêu cầu: at-least-once, scale ngang, cô lập theo service, p95 lệch giờ dưới 10 giây, ack từng message, dead letter queue, mỗi…