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 đó.

Mọi giai đoạn 1. Khởi đầu2. Tăng trưởng3. Quy mô lớn4. Điều chỉnh
Mọi độ khó DễCơ bảnTrung bìnhKhóNâng cao
Bài tóm tắt · Nubank · 2019 Dễ

How we do On-Call Rotations

Đo chất lượng trực bằng MTTA (sức khoẻ của lịch trực) và MTTR (chất lượng công cụ và tài liệu). Tự nhiên nhất là team xây hệ nào trực hệ đó, nhưng team chỉ 2–8 người nên mỗi người trực nhiều ngày mỗi tháng, mà trực thì…

Bài tóm tắt · Postman · 2019 Cơ bản

Auditing AWS IAM for better security practices

Mỗi dịch vụ cloud mới đều có IAM riêng chỉ cần vài cú nhấp để cấp quyền; theo bài, nếu khả năng đánh giá và thu hồi quyền không tăng theo thì quyền thừa tích tụ thành rủi ro rò rỉ từ bên trong.

Bài tóm tắt · Prometheus · 2019 Trung bình

Remote Read Meets Streaming

Prometheus có remote API từ bản 1.x: write (Prometheus đẩy sample ra hệ khác, cách phổ biến để lưu dài hạn) và read (hệ khác đọc thẳng dữ liệu trong TSDB của Prometheus, không qua PromQL). Remote read có từ 3/2017, dùng…

Bài tóm tắt · Riot Games · 2019 Trung bình

Controlled Chaos with Fault Injection Testing

Riot Games API (dữ liệu League cho developer bên ngoài) có rate limiter ở edge (ESRL); vì request rơi vào server bất kỳ, tổng số call mỗi khách phải đếm ở một chỗ trung tâm là Redis.

Bài tóm tắt · Salesforce · 2019 Trung bình

Implementation of a monitoring strategy for products based on microservices

Một sản phẩm Salesforce sắp GA, ghép từ nhiều microservice do nhiều team sở hữu. Câu hỏi đơn giản "sản phẩm có đang dùng được không?" nằm rải trong các service.

Bài tóm tắt · Shopify · 2019 Dễ

Deconstructing the Monolith: Designing Software that Maximizes Developer Productivity

Một trong những codebase Rails lớn nhất thế giới: hơn 10 năm, hơn 1.000 developer. Ban đầu là monolith không có ranh giới: code tính phí ship gọi thẳng code tính thuế, và ngược lại.

Bài tóm tắt · Slalom Build · 2019 Trung bình

Why isn't all test automation run on the pipeline?

Unit test đã chạy trong mọi pipeline, nhưng test API, UI, tích hợp, module thường vẫn chạy tay trên laptop. Theo tác giả, lý do quy về ba thứ: giá trị (chưa ai tin đáng làm), kiến trúc (hệ không chia module) và khả thi…

Bài tóm tắt · SoundCloud · 2019 Trung bình

Alerting on Service-Level Objectives (SLOs)

Theo SoundCloud, alert dựa trên SLO gần như là "viên đạn bạc" cho alert có ý nghĩa: đạt SLO là định nghĩa của việc đáp ứng kỳ vọng của user, còn một mức lỗi nằm trong SLO (error budget) là chấp nhận được. Họ áp dụng…

Bài tóm tắt · SoundCloud · 2019 Trung bình

Gradle Remote Build Cache Misses

Thời gian build tăng là một trong những rủi ro kỹ thuật hàng đầu của đội Android SoundCloud, nằm trong mục tiêu quý của công ty dưới tên modularization. Ngoài module hoá, cách thứ hai là tránh làm lại việc bằng build…

Bài tóm tắt · SoundCloud · 2019 Trung bình

Solving Remote Build Cache Misses by Annoying Your Colleagues

Gradle khuyên CI ghi cache từ build sạch, developer chỉ đọc; SoundCloud cho cả CI đọc cache để CI nhanh hơn. Miss xảy ra khi danh sách input của cùng một task khác nhau giữa CI và máy developer.

Bài tóm tắt · Stack Overflow · 2019 Trung bình

Stack Overflow: How We Do App Caching - 2019 Edition

Thang latency (2019): RAM khoảng 100 ns; một lần gọi Redis qua LAN của họ 0,2–0,5 ms (chậm hơn RAM 2.000–5.000 lần); trang câu hỏi render trung bình 18–20 ms, nên vài lần gọi Redis đã chiếm một phần đáng kể.

Bài tóm tắt · Stripe · 2019 Dễ

Fast and flexible observability with canonical log lines

Log có cấu trúc (key=value) linh hoạt hơn metric (metric và dashboard phải thiết kế trước, khó hỏi câu bất ngờ). Nhưng thông tin của một request rải trên nhiều dòng: muốn hỏi "user nào bị rate limit nhiều nhất" phải…

Bài tóm tắt · Tinder · 2019 Khó

How We Improved Our Performance Using ElasticSearch Plugins: Part 1

Hệ gợi ý của Tinder lưu document người dùng trong Elasticsearch (6.3); mỗi lượt lấy gợi ý là một query lọc rồi sắp theo hàm relevance viết bằng Painless script.

Bài tóm tắt · Tinder · 2019 Trung bình

How We Improved Our Performance Using ElasticSearch Plugins: Part 2

Mỗi query gợi ý phải gửi kèm danh sách bỏ qua (người đã xem gần đây, đã match), dùng terms query. Với người dùng rất tích cực, danh sách này dài.

Bài tóm tắt · Tinder · 2019 Trung bình

Geosharded Recommendations Part 1: Sharding Approach

Search là thành phần chính của hệ gợi ý realtime. Nhiều năm Tinder chạy một cluster Elasticsearch, một index, 5 shard mặc định, scale bằng thêm replica và máy mạnh hơn. Đến lúc dùng rất nhiều máy mạnh mà CPU vẫn cao và…

Bài tóm tắt · Tinder · 2019 Nâng cao

Geosharded Recommendations Part 3: Consistency

Sau khi shard theo địa lý, có hai kho dữ liệu phải khớp nhau:

Bài tóm tắt · Tinder · 2019 Trung bình

Geosharded Recommendations Part 2: Architecture

Phần 1 đã chốt thuật toán chia geoshard trên S2 và đóng gói thành một microservice nội bộ. Phần 2 trả lời ba câu hỏi triển khai: "shard" cụ thể là gì trong Elasticsearch, cluster cần cỡ nào, và cân tải ra sao.

Bài tóm tắt · Tinder · 2019 Trung bình

Phoenix — Tinder's Testing Platform, Part I

Tinder dùng thí nghiệm để quyết định thay đổi sản phẩm và tự dựng Phoenix để quản lý mọi thí nghiệm.

Bài tóm tắt · Tinder · 2019 Trung bình

Phoenix — Tinder's Testing Platform, Part II (Levers)

Một tính năng của app mobile đi qua PM, design, code, QA, build rồi duyệt của app store. Bất kỳ thay đổi nào sau đó (bug lọt QA, chỉnh chi tiết, muốn ra mắt đúng giờ) đều phải lặp lại cả vòng; trên mobile không thể…

Bài tóm tắt · Tokio · 2019 Trung bình

Diagnostics with Tracing

Trong code sync, thứ tự log ngầm cho biết ngữ cảnh: các dòng giữa "accepted connection" và "closing connection" thuộc về kết nối đó. Trong hệ async như Tokio, một thread chạy xen kẽ nhiều task, nhiều worker thread chạy…

Bài tóm tắt · Two Sigma · 2019 Dễ

Building a High-Throughput Metrics System Using Open Source Software

Two Sigma xây nền tảng cho "nghiên cứu dạng hội thoại". Một nền tảng dữ liệu hiệu năng cao trả kết quả truy vấn của researcher (ví dụ "dataset x từ 2000 tới 2019, lấy log mọi giá trị"), tới 50.000 query/giây và 1,85…

Bài tóm tắt · V8 (Google) · 2019 Trung bình

Code caching for JavaScript developers

Parse + compile JavaScript chiếm phần đáng kể thời gian khởi động trang. Code cache lưu kết quả (bytecode) để lần sau bỏ qua bước đó.

Bài tóm tắt · V8 (Google) · 2019 Nâng cao

The story of a V8 performance cliff in React

V8 không lưu số JavaScript (Float64 theo spec) theo một cách cố định: số nguyên 31 bit có dấu là Smi, số khác là HeapNumber. Mỗi trường của object được đánh dấu "representation" trên shape (hidden class): Smi, Double…

Bài tóm tắt · Vercel · 2019 Trung bình

Next.js 8 Webpack Memory Improvements

next build cho project vài trăm trang ngốn RAM, đôi khi vượt trần heap khoảng 1,4 GB của Node.js; theo Vercel, framework phải chạy tốt từ một đến hàng nghìn trang.