Cloud Integration
Tại sao cần tích hợp?
Khi deploy nhiều application, chúng cần giao tiếp với nhau. Có 2 kiểu:
Synchronous (đồng bộ): App A gọi thẳng App B → nguy hiểm khi có traffic đột biến. Ví dụ: bình thường encode 10 video/ngày, đột nhiên cần encode 1000 video → App B bị quá tải, toàn bộ hệ thống có thể sập.
Asynchronous (bất đồng bộ): App A → Queue → App B → giải quyết được vấn đề trên vì Queue hấp thụ traffic spike, các service scale độc lập nhau.
Amazon SQS - Simple Queue Service
Khái niệm cốt lõi: Hàng đợi tin nhắn — Producer gửi message vào queue, Consumer đọc và xử lý.
| Đặc điểm | Chi tiết |
|---|---|
| Throughput | Unlimited (standard queue) |
| Retention | Mặc định 4 ngày, tối đa 14 ngày |
| Latency | < 10ms |
| Message sau khi đọc | Bị xóa khỏi queue |
Điểm quan trọng cần nhớ:
- Nhiều Consumer cùng đọc → chia sẻ tải, scale horizontal
- Standard Queue: không đảm bảo thứ tự, throughput cao
- FIFO Queue: đảm bảo thứ tự (First In First Out), giới hạn 300-3000 msg/s
Dùng SQS khi: cần decouple application, xử lý tác vụ nặng bất đồng bộ (resize ảnh, gửi email hàng loạt…)
Amazon SNS - Simple Notification Service
Khái niệm cốt lõi: Pub/Sub model — 1 Publisher gửi vào 1 Topic, tất cả Subscriber đều nhận được.
Khác biệt then chốt so với SQS:
| SQS | SNS | |
|---|---|---|
| Message retention | Có (tối đa 14 ngày) | Không (fire-and-forget) |
| Người nhận | 1 Consumer xử lý 1 message | Tất cả Subscriber nhận cùng message |
| Model | Queue | Pub/Sub |
Subscriber của SNS có thể là: Email, Lambda, SQS, HTTP endpoint, Mobile push notification
Giới hạn: 12,500,000 subscription/topic, 100,000 topic
Dùng SNS khi: cần fan-out — 1 sự kiện kích hoạt nhiều hành động cùng lúc. Ví dụ: order mới → gửi email xác nhận + trigger Lambda xử lý tồn kho + push notification.
Amazon Kinesis
Khái niệm cốt lõi: Real-time data streaming — thu thập và xử lý dữ liệu liên tục, tức thời.
4 thành phần (biết để nhận diện, không thi sâu ở CLF):
- Kinesis Data Streams: ingest data từ hàng trăm nghìn source, low latency
- Kinesis Data Firehose: load stream vào S3, Redshift, ElasticSearch
- Kinesis Data Analytics: phân tích real-time bằng SQL
- Kinesis Video Streams: xử lý video stream cho ML/analytics
Dùng Kinesis khi: cần xử lý dữ liệu liên tục theo thời gian thực — log hệ thống, clickstream, IoT sensor, stock price…
Amazon MQ
Khái niệm cốt lõi: Dành cho các on-premise application đang dùng open protocol (MQTT, AMQP, STOMP…) muốn migrate lên cloud mà không muốn sửa code.
So sánh quan trọng:
| SQS/SNS | Amazon MQ | |
|---|---|---|
| Protocol | Proprietary AWS | MQTT, AMQP, STOMP, OpenWire… |
| Scalability | Cực cao (serverless) | Hạn chế hơn |
| Infrastructure | Serverless | Chạy trên dedicated machine |
| Tính năng | Queue hoặc Topic | Có cả hai |
Dùng Amazon MQ khi: lift-and-shift — migrate app cũ lên cloud mà không muốn refactor.
Tổng kết — So sánh nhanh
| Service | Model | Retention | Scale | Use case điển hình |
|---|---|---|---|---|
| SQS | Queue | 14 ngày | Rất cao | Decouple, xử lý batch |
| SNS | Pub/Sub | Không có | Rất cao | Fan-out notification |
| Kinesis | Streaming | Có | Rất cao | Real-time analytics |
| Amazon MQ | Queue + Topic | Có | Trung bình | Migrate app cũ |
Mẹo thi: Nhìn thấy “decouple” → SQS. “Notify nhiều nơi” → SNS. “Real-time streaming” → Kinesis. “On-premise migration, MQTT/AMQP” → Amazon MQ.