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. 157 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 8.979 bài thuộc 133 công ty có trang riêng được hiển thị cho thành viên. Cảm ơn những người duy trì các danh sách đó.
Service Architecture at SoundCloud — Part 1: Backends for Frontends
Trước 2013, SoundCloud "tự ăn món mình nấu": một Public API duy nhất phục vụ cả app chính thức lẫn bên thứ ba.
Fulfilling the promise of CI/CD
Theo tác giả, ai cũng nói "CI/CD" nhưng thực ra chỉ làm CI; gần như không ai thực hành continuous deployment. Mục đích của CI vốn là dọn đường cho CD.
PIT Mutation Testing on CI/CD Pipeline
Team Search của Trendyol (thương mại điện tử Thổ Nhĩ Kỳ) muốn tiến tới deploy một cú nhấp, nên pipeline CI/CD phải đủ tin cậy. Đang dùng code review và code coverage, nhưng coverage 100% vẫn có thể sai: test quên assert…
5-year Evolution of Ele.me's Transaction System - Part 2
DB đơn hàng: 1 primary MySQL + 5 secondary + 1 node cho MHA. Không chịu được tải đột biến: nếu phòng kinh doanh không báo trước khuyến mãi thì secondary sập và chỉ còn biết chuyển qua lại giữa các DB.
5-year Evolution of Ele.me's Transaction System - Part 3
Team giao dịch chưa từng có kỹ sư test; mọi thứ do R&D tự test bằng tay. Team framework cho rằng kỹ sư phải tự bảo đảm chất lượng. Tác giả thấy vậy là quá lý tưởng, nên chia vai: R&D chịu trách nhiệm chất lượng code, kỹ…
5-year Evolution of Ele.me's Transaction System - Part 1
2012: Zeus là một ứng dụng Python gom các module lõi (đơn hàng, user, nhà hàng) trong một repo, chạy trên cùng máy. Module đơn hàng EOS (Ele.me Order Service) có commit đầu tiên ngày 1/9/2012.
Fly Behind The Scenes: Fresh Logging
Fly.io gom log của mọi app trên nền tảng (flyctl logs). Hệ cũ là 7 server Graylog lớn tập trung; với 20.000–30.000 log/giây, có lúc trong ngày không xử lý kịp và log bị rơi. Log tới user bằng cách poll API của Graylog.
How We Monitor Apache Airflow in Production
Đội Data Engineering của Gojek chạy hơn một nghìn pipeline trên Airflow (2020). Ngoài scheduler, webserver, worker, executor, họ có thêm tiến trình riêng: đồng bộ DAG từ GCS/git, đồng bộ biến Airflow tuỳ biến. Theo họ,…
Scaling Email Infrastructure for Medium Digest
Digest là email cá nhân hoá hằng ngày, phải tới 8–9 giờ sáng theo giờ địa phương. Gửi hàng triệu email/ngày; là một trong những tải nặng nhất.
Managing hundreds of servers for load testing: autoscaling, custom monitoring, DevOps culture
Mỗi lần test dùng khoảng 100 server sinh tải và 150 server chạy service (2020); tất cả phải được tạo, cấu hình, khởi động, xoá.
Reliable load testing with regards to unexpected nuances
Khoảng đầu 2019, ở mốc 12.000 user online đồng thời, Miro bắt đầu dựng hạ tầng load test; ba tháng sau bản test đầu tiên ra đời, và đúng lúc đó production chạm giới hạn, sập hai giờ. Sự cố đẩy họ từ test thỉnh thoảng…
Prometheus High Availability and Fault Tolerance Strategy, Long Term Storage with VictoriaMetrics
Theo Miro, Prometheus giỏi scrape và giữ metric ngắn hạn (phần lớn điều tra chỉ cần khoảng 10 ngày gần nhất), nhưng giữ lâu thì đắt vì cần đĩa nhanh, và HA không có sẵn kiểu cluster. Federation hợp để gom một phần…
Rust's CI is moving to GitHub Actions
Rust muốn master luôn xanh, nên test và merge từng PR một: các PR đã duyệt xếp hàng trong bors. CI rộng: 57 máy build và test compiler trên mọi nền tảng hỗ trợ; trên hệ cũ (Azure Pipelines, VM 2 core) mỗi builder mất…
Acceptance Tests On CI Pipeline
Team test tính năng theo sprint rồi mới đưa lên production, nhưng việc giao hàng hay trễ vì lỗi do môi trường (môi trường test dùng chung, dependency thật), làm tăng Lead Time (một trong bốn chỉ số của sách Accelerate).
Making Order in CI/CD Mess
Khoảng 2011 (bài nói "9 năm trước"), Wix có 5 monolith backend, một project Flash và khoảng 50 developer; cả 5 monolith build trên một server TeamCity. Deploy là thủ công: tải artifact từ TeamCity, FTP lên production,…
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.
Under the hood of Figma's infrastructure
Bài của trưởng nhóm infra mới (7 tháng, trước đó ở Google và Dropbox). Mục đích: kể infra đang chuyển từ "đơn giản nhưng tốn công vận hành" của một startup sang hệ thống trưởng thành hơn.
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à…
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.
Debugging the Postgres query planner
Năm 2019, DB Postgres chính của GoCardless khoảng 2 TB. Bảng paymenttransitions (mỗi lần payment đổi trạng thái là một dòng, mô hình state machine bằng Statesman) có gần nửa tỉ dòng.
Amundsen — Lyft's data discovery & metadata engine
Ở Lyft, data scientist và research scientist lẽ ra dành phần lớn thời gian làm model và đưa lên production, nhưng mất nhiều thời gian cho tìm dữ liệu: dữ liệu có tồn tại không, ở đâu, đâu là nguồn sự thật, có quyền truy…
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.
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.
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…