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 đó.
Chaos Testing a Distributed System with Jepsen
Data store của Appian (nền tảng low-code) chọn Consistency khi phải đánh đổi theo CAP và cam kết linearizability: ghi xong thì mọi lần đọc bắt đầu sau đó phải thấy giá trị đó hoặc mới hơn; cộng read-your-own-writes,…
Chaos Testing a Distributed System with Jepsen — Part II
Sau khi chọn Jepsen, việc khó là đưa nó vào hạ tầng thật: hệ cần test (SUT) phụ thuộc Kafka và Zookeeper, binary và thư viện nằm trong kho nội bộ có xác thực, và test phải chạy liên tục chứ không chỉ trên máy dev.
Analysis of recent downtime & what we're doing to prevent future incidents
Đa số dữ liệu người dùng của Asana đã shard, nhưng một phần mô hình dữ liệu dùng chung cho mọi team/workspace của user nằm trong một database dùng chung (MySQL trên RDS, cấu hình HA).
Using an event-driven architecture to improve Jira Software responsiveness
Board của Next-Gen Jira Software poll mỗi phút để lấy dữ liệu mới. Hậu quả: người khác sửa issue thì phải chờ khoảng một phút mới thấy, và phần lớn request là thừa vì không có gì đổi.
A monolithic architecture for our clients' hundreds of versions: how we write and support tests
Backend Badoo là monolith PHP 12 năm tuổi, khởi đầu không có test. Backend developer viết tính năng và đưa lên production trước mọi client (app mobile, site), bọc bằng feature flag hoặc A/B test; client phát hành sau…
Using Rust to Scale Elixir for 11 Million Concurrent Users
Discord đổi cách cập nhật Member List: chỉ gửi thay đổi của phần danh sách đang hiển thị thay vì mọi thành viên, đỡ bandwidth và pin cho client.
Building Scalable Real Time Analytics, Alerting and Anomaly Detection Architecture at Dream11
Dream11 (2019): hơn 3 TB dữ liệu/ngày, hơn 10 triệu giao dịch/ngày, 2,8 triệu người đồng thời, hàng tỉ sự kiện clickstream/ngày.
Finding Kafka's throughput limit in Dropbox infrastructure
Kafka ở Dropbox phục vụ analytics, ML, monitoring, search, stream processing (Cape); đội Jetstream vận hành và cần biết giới hạn throughput để cấp cluster.
Incrementally migrating over one million lines of code from Python 2 to Python 3
App desktop Dropbox hơn 1 triệu dòng Python. Hack Week 2015 chạy được đăng nhập + sync trên Python 3 nhưng nhiều tính năng hỏng, phần lớn code bị bỏ. Hack Week 2016: port fork Python lên 3.5, nâng/fork dependency, thêm…
The Consul outage that never happened
GitLab.com (2019): khoảng 4 triệu user, 12 triệu project, 271 server production, đội Infrastructure 20–24 kỹ sư rải khắp thế giới. Đang dần chuyển sang Consul cho service discovery; thành phần chính dựa vào Consul là…
How we used delayed replication for disaster recovery with PostgreSQL
GitLab.com (2/2019): khoảng 3 triệu user, gần 7 triệu project; theo GitLab là một trong những site SaaS single-tenant mã nguồn mở lớn nhất. Postgres là thành phần sống còn.
Lessons from our journey to enable global code search with Elasticsearch on GitLab.com
Bản tự host của GitLab đã có tích hợp Elasticsearch (global search, code search) vài năm, nhưng GitLab.com, instance lớn nhất, vẫn chưa bật được.
Update: Elasticsearch lessons learnt for Advanced Global Search
Deadlock "con gà quả trứng": muốn giảm kích thước index thì cần dữ liệu từ một deployment thật, mà chưa có deployment thật vì index quá lớn. Phản hồi khách và test nhỏ không đủ; dogfooding là cách tốt nhất.
6 Lessons we learned when debugging a scaling problem on GitLab.com
Khách hàng báo lỗi git pull qua SSH chập chờn, chủ yếu từ CI và job tự động: sshexchangeidentification: connection closed by remote host. Không tái hiện được, không thấy gì rõ trên graph hay log.
How We Built a Logging Stack at Grab
Một năm trước đó, Grab không có trực quan hoá hay metric cho log service; tìm một chuỗi trong log ba ngày qua là "chạy query rồi đi pha nước". Cách cũ là một mớ: log trên storage cloud (mất hàng giờ mới lấy được), một…
Authorization at LinkedIn's Scale
Phân quyền giữa các service (không phải giữa user và sản phẩm): một microservice chỉ được đọc dữ liệu khi có lý do nghiệp vụ, để dữ liệu thành viên không lan rộng và để giới hạn thiệt hại nếu một service nội bộ bị chiếm.
Eliminating toil with fully automated load testing
Năm 2013 LinkedIn chạy nhiều data center và dựng TrafficShift để chuyển traffic thật giữa các DC khi có incident.
Open sourcing Brooklin: Near real-time data streaming at scale
Bài toán không chỉ là chuyển nhiều dữ liệu, mà là số loại hệ nguồn và đích tăng nhanh (Espresso, Oracle, MySQL, Kafka, Azure Event Hubs, Kinesis).
An inside look at LinkedIn's data pipeline monitoring system
Dữ liệu vào Hadoop chủ yếu qua Apache Gobblin (nguồn Kafka, Espresso, Oracle), job batch chạy hàng giờ trên hàng trăm dataset. Giám sát lúc đó chỉ là trạng thái pass/fail của job trên dashboard Azkaban tự làm (Kyaraben).
DataHub: A generalized metadata search & discovery tool
WhereHows (mở mã nguồn 2016): kho metadata trung tâm cho dataset (schema, owner, lineage, job) kèm search. Khi mở rộng sang nhiều loại metadata, LinkedIn rút ra năm bài học:
Community-focused Feed optimization
Feed hai tầng (): các first pass ranker (FPR) chọn ứng viên từ kho của mình, second pass ranker (SPR) gộp và chấm điểm. FollowFeed là FPR chính: hơn 80% update trên feed, đóng góp hơn 95% cuộc hội thoại của member…
Auditing content features in FollowFeed
Hơn 80% feed là nội dung organic, đều do FollowFeed phục vụ. Activity và feature (ngôn ngữ, hashtag, vị trí tác giả...) cùng vào FollowFeed qua Kafka; storage node partition theo tác giả, chỉ giữ feature của activity…
Solving manageability challenges at scale with Nuage
Mỗi tính năng dùng nhiều hạ tầng: Espresso, Galene, Kafka, Bulkhead (quota), Helix, Fuse (chống lạm dụng), Couchbase, Ambry (blob), Pinot, Samza, Pro-ML, Brooklin, Venice. Mục tiêu "hạ tầng vô hình": team sản phẩm tự…
Smart alerts in ThirdEye, LinkedIn's real-time monitoring platform
ThirdEye giám sát và phân tích nguyên nhân cho metric từ sức khoẻ sản phẩm tới metric kinh doanh và hiệu năng model ML; nguồn chính là Pinot và inGraphs.