Thiết kế cho Sự cố (Designing for Failure)
Ở quy mô của PayPay (100+ microservices, hàng ngàn pods, databases phân tán), chuyện phần cứng hỏng, đứt mạng (network partitions) hay pod crash không phải là trường hợp hiếm gặp (edge cases) — chúng xảy ra liên tục như cơm bữa. Kiến trúc hệ thống bắt buộc phải chấp nhận sự cố.
Circuit Breakers & Fallbacks
Nếu một downstream service (ví dụ service liên kết ngoài với Ngân hàng) bị sập, nó có thể gây ra lỗi dây chuyền. Các thread của calling service sẽ bị treo (hang) chờ đợi, dần dần ăn sạch memory và kéo sập luôn cả hệ thống app.
PayPay sử dụng Circuit Breakers (Aptomat). Nếu Bank service liên tục bị timeout, circuit sẽ bị ngắt (trip). Các request kế tiếp tới đó sẽ bị “fail fast”, lập tức trả về báo lỗi ngay chứ không chờ đợi nữa. Việc này giúp bảo vệ các core system. Trong vài domain, có thể áp dụng thêm fallback response (vd: trả về dữ liệu cache thay vì dữ liệu real-time).
Chaos Engineering
Bạn sẽ không bao giờ biết được các cơ chế fallback hay retry của mình có thực sự hoạt động hay không cho đến khi chúng bị test trong môi trường thực. PayPay thực hành Chaos Engineering (Kỹ nghệ Hỗn loạn).
Team SRE (Site Reliability Engineering) cố ý tiêm các lỗi giả lập (inject faults) vào môi trường staging (và đôi khi là cả production):
- Chủ động ngắt (kill) ngẫu nhiên các Kubernetes Pods.
- Cố tình chèn độ trễ mạng (artificial network latency) vào.
- Giả lập database bị failover.
Bằng cách liên tục test xem hệ thống phản ứng ra sao trước những lỗi bị tiêm vào, các engineer sẽ tìm ra được các điểm phụ thuộc ẩn (hidden dependencies) và fix chúng trước khi một đợt outage thực sự diễn ra trong một chiến dịch quan trọng.
Observability (Khả năng quan sát)
Để kiểm soát được sự phức tạp này, hệ thống observability toàn diện là bắt buộc.
- Tracing: Distributed tracing cho phép engineer theo dõi một request của user khi nó chạy qua API Gateways, qua các cuộc gọi gRPC giữa 10 microservices, qua các Kafka topics, và cuối cùng đáp xuống database.
- Metrics & Alerting: Các metrics chi tiết (TPS, Latency, Tỉ lệ lỗi) được giám sát liên tục 24/7. Các cảnh báo (Alerts) sẽ được bắn tới các on-call engineers từ rất lâu trước khi user bên ngoài kịp nhận ra có sự cố suy giảm dịch vụ.
Sự kỷ luật này trong khâu SRE và Platform Engineering chính là chìa khóa giúp PayPay tự tin chạy các chiến dịch marketing siêu lớn mà không bao giờ lo hệ thống bị sập lây lan.
Bạn có thể xem lại tổng quan toàn bộ chuỗi bài viết tại trang Tóm tắt sơ lược.