Giới thiệu
Giới thiệu
- Khi chúng ta bắt đầu triển khai nhiều ứng dụng, chúng tất yếu sẽ cần giao tiếp với nhau.
- Giao tiếp đồng bộ giữa các ứng dụng có thể gây ra vấn đề nếu đột ngột có lưu lượng lớn tăng vọt.
- Giả sử bạn cần mã hóa đột ngột 1000 video, trong khi thông thường chỉ là 10?
- Trong trường hợp đó, tốt hơn hết là nên tách rời (decouple) các ứng dụng của bạn, bằng cách:
- Sử dụng SQS: mô hình hàng đợi (queue model)
- Sử dụng SNS: mô hình publish/subscribe
- Sử dụng Kinesis: mô hình streaming thời gian thực (real-time streaming model)
Các dịch vụ này có thể scale độc lập so với ứng dụng chính của bạn!
- Có hai mô hình giao tiếp giữa các ứng dụng:

1) Giao tiếp đồng bộ (Synchronous communications)
(application to application – ứng dụng gọi trực tiếp ứng dụng khác)
Buying Service ⇄ Shipping Service
→ Buying Service gửi request trực tiếp đến Shipping Service và chờ response ngay lập tức. Đây là kiểu giao tiếp blocking.
2) Giao tiếp bất đồng bộ / Dựa trên sự kiện (Asynchronous / Event-based)
(application to queue to application – ứng dụng gửi qua hàng đợi đến ứng dụng khác)
Buying Service → Queue → Shipping Service
→ Buying Service publish event vào một hàng đợi (Queue). Shipping Service sẽ lắng nghe queue và xử lý khi nhận được message. Đây là kiểu giao tiếp non-blocking, giúp tách biệt các service và tăng khả năng mở rộng (scalability).