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 đó.
How Stripe's document databases supported 99.999% uptime with zero-downtime data migrations
Stripe chọn MongoDB từ 2011 (Atlas chưa có) và xây DocDB, DB-as-a-service nội bộ trên MongoDB Community: hơn 5 triệu query/giây, hơn 10.000 dạng query, hơn 5.000 collection trên hơn 2.000 shard, hàng petabyte dữ liệu…
Rediscovering Transaction Processing From History and First Principles
Năm 1985, Jim Gray đề xuất đo OLTP bằng TPS và gắn TPS với giá thành mỗi transaction. "Transaction" chuẩn của ông không phải SQL transaction mà là DebitCredit: ghi nợ một tài khoản, ghi sổ kép, trả lời terminal. Mỗi…
How we stopped xmin horizon blocking Postgres vacuuming
Trigger.dev (nền tảng chạy background job) dùng Postgres làm DB chính. Queue chính cho run (v3) nằm trên Redis; còn tác vụ nội bộ (lịch, email cảnh báo...) chạy bằng Graphile Worker, một job queue trên chính Postgres,…
Image Migration to Google Cloud Platform
trivago nhận ảnh khách sạn từ OTA, chuỗi khách sạn, nhà cung cấp nội dung; nhiều pipeline lọc, gắn nhãn (ML), chọn ảnh chính và gallery.
Our Journey with Caching
Theo Vercel, nút thắt frontend phổ biến nhất là waterfall client-server. App Router đưa fetch về server (Server Components, một round-trip), nhưng server đôi khi phải dynamic; Partial Prerendering ra đời để giữ cả tốc…
Next.js 15
Đổi mặc định cache (breaking): fetch, GET Route Handler và Client Router Cache chuyển từ "cache mặc định" sang "không cache mặc định". Theo Vercel, mặc định cũ được chọn vì nhanh nhất nhưng tương tác kém với Partial…
Turbopack Dev is Now Stable
Sau 8 năm, webpack (nền bundling của Next.js) không theo kịp: chờ route biên dịch, chờ thay đổi code hiện lên, chờ build. Theo Vercel, họ đã bỏ nhiều công tối ưu webpack nhưng lợi ích giảm dần, và cần nền mới cho Server…
Anatomy of a serverless usage-based billing system
WarpStream (Kafka trên object storage) tính tiền theo ba chiều: cluster minutes (cluster có xử lý request, tính theo khối 15 phút), throughput ghi (GiB/s), lưu trữ (GiB-giờ). Theo họ, hệ billing theo usage tốt phải tách…
Secure by default: WarpStream's BYOC deployment model
Hai mô hình triển khai hạ tầng dữ liệu quen thuộc: tự quản lý (mua license) và SaaS (nhà cung cấp chạy trong cloud của họ). BYOC chia phần mềm thành control plane (ở nhà cung cấp) và data plane (compute + storage ở tài…
Making messaging interoperability with third parties safe for users in Europe
Luật DMA của EU (hiệu lực 7/3/2024) buộc WhatsApp và Messenger cho dịch vụ nhắn tin bên thứ ba kết nối vào. Năm đầu: tin 1:1 và gửi ảnh, voice, video, file; về sau mở rộng sang group và cuộc gọi.
IPLS: Privacy-preserving storage for your WhatsApp contacts
Danh bạ trước đây chỉ nằm trong điện thoại: mất máy là mất danh bạ, chỉ thêm được liên hệ từ điện thoại. Multi-device và nhiều account trên một máy (công việc, cá nhân) cần danh bạ riêng cho WhatsApp, sync qua thiết bị…
MLow: Meta's low bitrate audio codec
Âm thanh thô của một cuộc gọi khoảng 768 kbps; codec hiện đại nén còn 25–30 kbps. Meta dùng Opus (2012) cho mọi cuộc gọi.
Failing to Auto Scale Elasticsearch in Kubernetes
Lounge by Zalando lưu mô tả sản phẩm trong một cluster Elasticsearch trên Kubernetes, vận hành bằng es-operator (custom resource ElasticsearchDataSet → StatefulSet). Pod rải qua mọi AZ; Elasticsearch bật zone awareness…
Migrating from AWS to Self-Hosting
ziglang.org (website và file tarball phát hành) chạy trên S3 + CloudFront. Traffic tăng thì chi phí AWS tăng theo.
Navigating Fair Housing Guardrails in LLMs
Zillow thử trợ lý hội thoại bằng LLM cho người tìm nhà. Rủi ro riêng của bất động sản: luật Fair Housing cấm "steering" (dẫn khách tới hoặc tránh khu vực theo đặc điểm được bảo vệ). Ví dụ một LLM trả lời vui vẻ cho câu…
Koios: A lightweight workflow service combined with server-driven UI for a better customer experience
StreetEasy (thương hiệu của Zillow cho New York): mỗi lần muốn hỏi người dùng thêm một câu (lần đầu mua nhà? đã có khoản vay chưa?) là một giải pháp làm riêng trên web và app, mất vài tháng tới vài quý; sửa lại thì…
Next Best Action platform: democratizing personalization with contextual bandits
Team sản phẩm và marketing chọn thông điệp, CTA bằng luật tay và A/B test tuần tự, rồi áp người thắng cho tất cả. Theo Zillow: thông điệp thắng với 60% khách bỏ quên 40% còn lại; mỗi vòng thử mất vài tuần tới vài tháng;…
Building a strong foundation to accelerate StreetEasy's data science efforts
Dữ liệu event thô của StreetEasy là một bảng hàng tỷ dòng, hàng trăm cột. Tính một chỉ số đơn giản (tỉ lệ session có gửi yêu cầu xem nhà) cần biết nhiều chi tiết ngầm: giá trị nào là huỷ, desktop và iOS ghi cùng hành…
Zkafka by Zillow: Go Library for Simplifying Kafka Consumption
Năm năm qua Kafka dùng rộng ở Zillow: cluster nội bộ hơn 1.500 topic (2024). Team Java có Flink và nhiều framework; team Go, Python, JS tự viết consumer.
Load Testing Kubernetes: Building a Framework (Part 1)
Achievers chạy nền tảng Kubernetes nhiều cluster; đội SRE cần một framework để engineer tự tạo tải và đọc kết quả, vì nền tảng phải chịu được cả traffic dự đoán trước lẫn bất ngờ.
Load Testing Kubernetes: Resolving bottlenecks and improving performance (Part 2)
Sau khi có baseline, đội đặt mục tiêu cho từng tiêu chí (throughput, lỗi, latency, scale) và dựng dashboard New Relic để thấy nút thắt ngay trong lúc chạy test.
Alibaba Upgrades Dubbo3 to Fully Replace HSF2
Sau khi đưa toàn bộ lên cloud, Alibaba muốn stack microservice nội bộ chạy trên middleware mã nguồn mở thay cho framework RPC nội bộ HSF (và Dubbo2 ở Alibaba Cloud).
From 3TB to 100GB: A Cost-Saving Journey in Database Maintenance
Một database Azure SQL (mô hình vCore) chứa nhiều dữ liệu lịch sử, phục vụ audit. Ở 4 vCore, dung lượng tối đa là 1 TB; dữ liệu tăng lên 3 TB, buộc phải lên 12 vCore vì Azure gắn dung lượng với CPU/RAM. Chi phí khoảng…
Goodbye to sequential integers, hello UUIDv7
Vài năm trước 2023, Buildkite chuẩn hoá hai định danh cho mọi bảng: số nguyên tăng dần làm khoá chính (join, khoá ngoại nhanh) và UUID làm khoá phụ cho mọi thứ lộ ra ngoài (API, URL; không lộ số liệu nội bộ, khó đoán).