Deadline lan truyền — đừng để một request chậm kéo cả chuỗi
Timeout đặt riêng ở mỗi service không chặn được chuỗi request chậm. Cách truyền deadline một lần bằng AbortSignal trong TypeScript.

THE ENGINEERING JOURNAL
Các bài viết về system-design.
Timeout đặt riêng ở mỗi service không chặn được chuỗi request chậm. Cách truyền deadline một lần bằng AbortSignal trong TypeScript.

Bulkhead là gì, vì sao một dependency chậm kéo sập cả app, và cách tự viết bulkhead bằng TypeScript với semaphore chỉ trong khoảng 50 dòng.
Circuit breaker là gì, vì sao retry mù quáng kéo sập cả hệ thống, và cách tự viết một circuit breaker bằng TypeScript.
Saga chia giao dịch phân tán thành nhiều local transaction kèm hành động bù. So sánh choreography và orchestration, code Go, bốn cái bẫy thực tế.
Bloom filter là gì, vì sao vài MB RAM chặn được phần lớn query rác? Cách tính tham số, code Go thực tế và 4 cái bẫy khi lên production.
SETNX tưởng đủ để làm distributed lock nhưng giấu cả đống bẫy: key hết hạn, unlock nhầm, gặp critical section lâu. Đây là cách làm cho đúng.
OpenTelemetry giúp xâu chuỗi request qua nhiều service để tìm đúng nút thắt cổ chai thay vì đoán mò.
Outbox Pattern giải bài toán dual-write: ghi DB vừa publish event vừa an toàn, không mất mát. Có code Go và relay thực chiến.
CAP là gì, vì sao không thể có đủ Consistency, Availability, Partition tolerance cùng lúc, và cách chọn combo đúng cho hệ thống thực tế.
Tìm hiểu các thuật toán load balancing từ Round Robin đến Consistent Hashing — lợi hại của từng loại và khi nào nên xài cho hệ thống thật.