Tightly coupled là các component phụ thuộc chặt (thường gọi trực tiếp đồng bộ), nên dễ “đứt dây chuyền” khi một mắt xích lỗi; loosely coupled dùng cơ chế trung gian (queue/event bus) để giảm phụ thuộc và cô lập lỗi tốt hơn.
Với AWS, các lựa chọn hay gặp để “decouple” là SQS/SNS/EventBridge; còn Step Functions dùng khi bạn cần điều phối workflow nhiều bước.
Order service gọi trực tiếp Payment service; Payment chậm hoặc lỗi sẽ làm Order timeout và gây lỗi lan truyền.
Loosely coupled thường đặt một lớp trung gian để producer “gửi thông điệp/sự kiện”, consumer xử lý bất đồng bộ (async) theo tốc độ riêng, qua đó giảm coupling giữa các component.
Order service publish “OrderCreated” event → các consumer như Payment, Inventory, Email tự xử lý độc lập.
| Tiêu chí | Tightly coupled | Loosely coupled |
|---|---|---|
| Giao tiếp | Direct calls (sync) | Queue / pub-sub / event bus (async) |
| Failure | Dễ cascade failures | Failure isolation tốt hơn (consumer lỗi không chặn producer ngay lập tức) |
| Scaling | Dễ “đi cùng nhau” theo chuỗi phụ thuộc | Scale theo từng component/consumer độc lập |
| Latency | Thường thấp hơn cho 1 request end-to-end | Thường cao hơn (do async + hop trung gian) |
| Complexity | Đơn giản lúc đầu | Phức tạp hơn (retry, idempotency, ordering, quan sát luồng) |
Nhận diện nhanh từ đề bài: