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. 625 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 đó.
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.
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à…
Geosharded Recommendations Part 3: Consistency
Sau khi shard theo địa lý, có hai kho dữ liệu phải khớp nhau:
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.
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.
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ể…
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 đó.
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…
Business Continuity & Disaster Recovery in the Microservices world
Hệ Integrated Fulfilment (app và backend cho nhân viên cửa hàng soạn đơn pickup/giao hàng) tăng trưởng mạnh và được viết lại. Yêu cầu chính: liên tục kinh doanh; một incident ảnh hưởng khách hàng nhiều nước.
The Evolution of Alibaba Cloud's Relational Database Services Architecture - PolarDB
Theo Alibaba, khi user, dữ liệu, service trên cloud tăng, RDS liên tục gặp vấn đề về backup, hiệu năng, migration, nâng cấp, read-only instance, dung lượng đĩa, trễ binlog; gốc phần lớn là nút cổ chai I/O (lưu trữ và…
Snitch: Putting consistency back into S3
Hạ tầng analytics của Box coi S3 là nguồn sự thật trên cloud: dữ liệu ghi vào Kafka on-prem, committer chép sang bucket nguồn S3 (có thể trùng do Kafka giao lại), job MapReduce dedupe sang bucket đích, Hive và ETL sang…
Meet Bandaid, the Dropbox service proxy
Bandaid bắt đầu là reverse proxy bù cho điểm yếu của các service phía server, rồi thành service proxy giúp Dropbox chuyển sang SOA. Viết bằng Go như phần lớn hạ tầng lõi; hỗ trợ TLS termination, HTTP/2, gRPC, service…
Cross Shard Transactions at 10 Million Requests Per Second
Edgestore là lớp trừu tượng trên hàng nghìn node MySQL, giữ hàng petabyte metadata, hơn 10 triệu request/giây. Developer gom dữ liệu hay đi cùng nhau vào một colo (cùng shard vật lý): trong colo có transaction mạnh,…
DynamoDB: Why migrate to DynamoDB from Cassandra?
Cassandra cho người dùng tự quyết gần như mọi thứ: số replica, chỗ đặt replica, mức consistency, số node. Theo tác giả, chính điều đó đặt độ bền và hiệu năng vào tay người cấu hình.
Introducing Grab-Kit: Distributed Service Design at Grab
Sau khi tách monolith thành microservices, Grab gặp bài toán mới: tăng trưởng theo cấp số nhân mà vẫn giữ được sự nhất quán. Các service có API, SDK, xử lý lỗi, transport khác nhau; log mỗi nơi một định dạng; không truy…
Rolling the Heroku Redis Fleet
Heroku quản lý hàng triệu database. Một lỗ hổng Redis bị cấm công bố (CVE-2018-11218) buộc nâng cả fleet Redis mà không được báo nguyên nhân cho khách. Plan trả phí có HA: standby nhân bản bất đồng bộ, tự thay primary…
How to shuffle a big dataset
Theo bài, dữ liệu ở Jane Street có tỉ lệ tín hiệu/nhiễu rất thấp nhưng rất nhiều: kiểu một tỉ mẫu huấn luyện mà nhãn chỉ hơi có xu hướng đúng.
IPVS-Based In-Cluster Load Balancing Deep Dive
kube-proxy chạy trên mỗi node, biến Service (một IP ảo) thành việc chuyển gói tới các pod phía sau. Trước đó có hai chế độ: userspace (cũ) và iptables (mặc định).
Concourse: Generating Personalized Content Notifications in Near-Real-Time
Thông báo về nội dung trong network (Project Pepper) chạy bằng workflow Hadoop vài lần mỗi ngày: event Kafka được ETL vào HDFS, join với đồ thị fan-out, gắn feature, chấm điểm bằng model, rồi chuyển cho ATC (cổng chung…
Dynamometer: Scale Testing HDFS on Minimal Hardware with Maximum Fidelity
Tháng 3/2015: ngay sau khi thêm 500 máy vào cluster HDFS chính, thao tác chậm tới hai bậc độ lớn hoặc timeout, job dồn ứ. Gỡ máy ra không dễ vì chúng đã nhận dữ liệu. Nguyên nhân là một thay đổi khoảng 24 dòng trong bản…
Making LinkedIn's Organic Feed Handle Peak Traffic
FollowFeed (): followfeed-query (broker) gửi song song tới nhiều followfeed-storage rồi gộp. Hai chỉ số QoS: Full QoS (mọi timeline đều trả về) và Partial QoS (có ít nhất một phần dữ liệu); Partial QoS rớt nghĩa là feed…
LinkedOut: A Request-Level Failure Injection Framework
Mục tiêu: biết một trang xuống cấp ra sao khi service phía dưới hỏng, thử ngay trên production mà không làm member hay khách bị ảnh hưởng. Cách mịn nhất là inject lỗi theo từng request.
Project STAR*: Streamlining Our On-Call Process
Voyager On-Call: lịch trực cho app flagship (web, Android, iOS, frontend API). Người trực lo site chạy và giữ cho trunk và pipeline deploy khoẻ. Mỗi tuần một nhóm mới: một engineer mỗi nền tảng, kèm người của…
Now You See Me, Now You Don't: LinkedIn's Real-Time Presence Platform
Chấm xanh "đang online" cho khoảng 500 triệu thành viên (2018): mỗi giây hàng nghìn người online/offline, cần phát thay đổi tới mọi kết nối đang xem.