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ểmChi tiết
ThroughputUnlimited (standard queue)
RetentionMặc định 4 ngày, tối đa 14 ngày
Latency< 10ms
Message sau khi đọcBị 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:

SQSSNS
Message retentionCó (tối đa 14 ngày)Không (fire-and-forget)
Người nhận1 Consumer xử lý 1 messageTất cả Subscriber nhận cùng message
ModelQueuePub/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/SNSAmazon MQ
ProtocolProprietary AWSMQTT, AMQP, STOMP, OpenWire…
ScalabilityCực cao (serverless)Hạn chế hơn
InfrastructureServerlessChạy trên dedicated machine
Tính năngQueue hoặc Topiccả 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

ServiceModelRetentionScaleUse case điển hình
SQSQueue14 ngàyRất caoDecouple, xử lý batch
SNSPub/SubKhông cóRất caoFan-out notification
KinesisStreamingRất caoReal-time analytics
Amazon MQQueue + TopicTrung bìnhMigrate 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.