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 đó.
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…
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…
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.
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…
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…
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;…
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.
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).
How we built the Internal Data Warehouse at ClickHouse
ClickHouse Cloud ra private preview 5/2022. Lúc đầu VP Product phân tích workload khách hàng bằng Excel, tra cứu tay mỗi ngày. Từ đó có DWH nội bộ đầu tiên.
25% or 6 to 4: The 11/6/23 Authentication Outage
Cluster ScyllaDB scylla-authentication giữ session người dùng, đứng sau service xác thực viết bằng Rust; mọi request API đều qua đây. Topology chuẩn của Discord: "super-disk" RAID gương giữa NVMe local SSD (mất khi…
After four years of SMR storage, here's what we love and what comes next
Theo Dropbox, năm 2018 họ là công ty công nghệ lớn đầu tiên dùng ổ SMR mật độ cao.
How to debug large db size issue?
Dung lượng DB của etcd có quota (--quota-backend-bytes), mặc định 2 GB, khuyến nghị tối đa 8 GB. Vượt quota thì mọi lệnh ghi lỗi mvcc: database space exceeded và cluster bật alarm NOSPACE, endpoint báo không khoẻ.
The growing pains of database architecture
2020: thêm tính năng, chuẩn bị ra sản phẩm thứ hai, user tăng. Traffic DB tăng khoảng 3 lần mỗi năm.
Introducing Fly Kubernetes
Fly.io chạy container dưới dạng microVM (Firecracker) trên máy tự đặt ở hàng chục region. Lúc đầu dùng Nomad, kèm proxy Anycast tự viết bằng Rust và private network WireGuard/IPv6 trên eBPF.
SecDb Observability Journey
SecDb: nền tảng giao dịch, định giá, quản trị rủi ro của Goldman Sachs, dùng liên tục hơn 30 năm bởi hơn 3.000 developer: hơn 200 triệu dòng code Slang (ngôn ngữ riêng), hơn 160 triệu job mỗi ngày, hơn 13.000 người dùng…
Building a Dependency Graph of Our Python Codebase
Trong khoảng năm năm, codebase Python hướng nghiên cứu của HRT lớn theo cấp số nhân lên hàng triệu dòng: văn hoá "đủ tốt hơn hoàn hảo", chia sẻ code giữa team, giai đoạn tăng trưởng nhanh.
Instacart's Item Availability Architecture: Solving for scale and consistency
Điểm availability real-time từ phần 2 phải phục vụ ba nhu cầu: lấy qua RPC của team ML; lọc hàng loạt ở bước retrieval của search (RPC quá chậm); và nhất quán giữa mọi màn hình (một nơi báo hết hàng, nơi khác báo còn là…
How Instacart Modernized the Prediction of Real Time Availability for Hundreds of Millions of Items While Saving Costs
Instacart dự đoán xác suất tìm thấy mỗi item (một sản phẩm tại một cửa hàng) để báo còn hàng, sắp hết, hết. Sau đại dịch, catalog lớn lên nhiều lần; tín hiệu từ shopper chỉ có hàng triệu mỗi ngày nên phần lớn item gần…
Building reproducible Python environments with XARs
Trader và researcher dùng Python và notebook rất nhiều, nhất là cho ML. Phần lớn code (nhiều là OCaml) nằm trong monorepo, nhưng notebook rải khắp nơi và phụ thuộc thư viện bên trong monorepo. Môi trường Python là lớp ở…