☁️ 클라우드 통합 개요
여러가지 응용 프로그램을 배포하기 시작하고 어느 시점이 되면 서로 통신이 필요하게 된다.
응용 프로그램의 통신의 유형에는 응용 프로그램끼리 직접 통신하는 동기 통신 방식과,
응용 프로그램이 큐를 사이에 두고 통신하는 비동기 / 이벤트 기반 통신이 있다.
응용 프로그램끼리 동기 통신을 하는 경우, 갑자기 트래픽이 급증하는 경우 문제가 될 수 있다.
이 경우 큐 모델 SQS, 게시/구독 모델 SNS, 또는 실시간 데이터 스트리밍 모델 Kinesis를 사용하여
응용 프로그램을 분할하는 것이 좋다.
이 서비스들은 응용 프로그램에 대해 독립적으로 확장이 가능하다.
📦 Amazon SQS
SQS는 Simple Queue Service의 약어로, 응용 프로그램을 분할하는데 사용하는 완전관리형 서비스이다.
SQS는 초당 1 ~ 10000개의 메시지를 처리하도록 확장 및 축소가 가능하며, 기본 저장 기간은 4 ~ 14일이다.
큐에 존재할 수 있는 메시지의 양에는 제한이 없으며, 소비자가 메시지를 읽은 뒤에는 메시지가 삭제된다.
또한 지연이 매우 적고, 소비자들은 메시지를 읽고 수평적으로 확장하기 위해 작업을 분담한다.
SQS는 기본적으로 선입선출 큐인 FIFO 큐를 사용하므로, 메시지는 소비자 순서대로 처리된다.
🧐 Amazon Kinesis
Kinesis는 어떤 크기의 실시간 스트리밍 데이터도 수집, 처리, 분석할 수 있도록 돕는
관리형 실시간 빅 데이터 스트리밍 서비스이다.
🌊 Kinesis Data Streams
Kinesis Data Streams는 수십만개의 소스로부터 데이터를 받기 위한 낮은 지연의 스트리밍 서비스이다.
🧑🏻🚒 Kinesis Data Firehose
Kinesis Data Firehose는 S3, Redshift, ElasticSearch 등에서 스트림을 불러오는 서비스이다.
🔍 Kinesis Data Analytics
Kinesis Data Analytics는 SQL을 사용해 스트림에 대한 실시간 분석을 제공하는 서비스이다.
📹 Kinesis Video Streams
Kinesis Video Streams는 분석이나 머신러닝을 위한 실시간 비디오 스트림 모니터링 서비스를 제공한다.
🔔 Amazon SNS
SNS는 Simple Notification Service의 약어로, 이벤트 게시자들이 하나의 SNS 토픽에 메시지를 보내면
해당 토픽 알림을 받고 싶은 만큼 이벤트 구독자들을 가지게 되는 서비스이다.
토픽 구독자는 모두 메시지를 받게 되며, 토픽별로 1200만개 이상의 구독을 가질 수 있고
계정별로는 10만개의 토픽 제한을 가지게 된다.
⚙️ Amazon MQ
SQS, SNS는 AWS의 독점적인 프로토콜인 클라우드 네이티브 서비스이다.
하지만 on-premises에서 실행되는 전통적인 응용 프로그램들은 MQTT와 같은 오픈 프로토콜을 사용한다.
따라서 이러한 애플리케이션들을 클라우드로 마이그레이션 하는 경우,
SQS나 SNS를 사용하는 것으로 응용 프로그램을 재구성하는 것 대신
MQTT와 같은 오픈 프로토콜에 엑세스를 제공하는 on-premises 기술
RabbitMQ, ActiveMQ를 위한 관리형 메시지 브로커 서비스인 Amazon MQ를 사용할 수 있다.
Amazon MQ는 SQS / SNS만큼은 확장하지 않으며,
서버에서 실행되기 때문에 장애 조치를 위해 여러 가용영역에 걸쳐 실행 가능하다.
또한 Amazon MQ는 SQS의 큐 기능과 SNS의 토픽 기능 모두를 가진다.