Cloud Intergration
어느 시점에 가면 애플리케이션이 여러 개가 생겨, 서로 통신이 이루어져야 하는데, AWS 에서는 두가지 패턴으로 애플리케이션을 서로 통신하게 할 수 있다.

- 첫번째 패턴
: 동기식 통신(Synchronous communications) 로, 애플리케이션이 다른 애플리케이션에 통합 요청을 하는 것 - 두번째 패턴
: 비동기식 / 이벤트기반(Asynchronous / Event based)로, 예를 들어 통신할 대기열이 있을 때, Buying Service 가 뭔가를 판매할때마다 대기열(Queue) 에 주문을 올려두면 서비스가 대기열에서 읽어들여 주문을 받는다.
----> 따라서 우리는 구매 서비스와 배송 서비스를 서로 직접적으로 통합해버릴지, 중간에 통신한 대기열을 만들지를 통해 패턴을 결정한다. 그렇다면 어떤 서비스를 통해서 해당 패턴을 채택할까?
SQS(Simple Queue Service) : AWS의 대기열 처리 서비스(분리하는 서비스 1)

- SQS 대기열을 생성하고 있다고 가정해보면, producer 이 해당 대기열로 즉, Queue 로 메세지를 전송할 수 있다. proucer가 여러명일때 메세지가 대기열에 저장되면, polling 하는 Consumer가 메세지를 읽을 수 있는 방식이다.
- Consumer가 메세지를 pooling 하게 되면, 작업을 공유하고 각 Consumer 마다 다른 메세지를 받게 된다. 메세지 처리가 끝나면 대기열의 메세지를 삭제하고, 메세지는 삭제된다.
- 이 구조는 producer가 메세지를 대기열로 보내게 하고 producer와 분리된 consumer가 대기열에서 메세지를 읽어 들여 서로 다른 속도로 처리한다.
SQS 의 특징 !
- AWS 완전 관리형 서비스
- 서버를 제공하지 않아도 애플리케이션을 분리할 때 사용
- 한도 없이 규모 조정 가능
- 대기열에서 대기할 수 있는 메세지수 제한 없음
- 지연 시간 짧음
- consumer가 메세지 읽는 작업을 공유해서 수평적으로 규모 조정
- tiers 사이를 분리할 때 사용 가능 -> Auto Scaling Group 의 규모를 조정할 수 있음
- FIFO(선입선출) 대기열 기능 -> 먼저 요청된 메세지가 먼저 읽게되어있는 구조
Kinesis : 실시간 빅데이터 스트리밍 서비스
- Kinesis Data Streams : 지연 시간이 적은 스트리밍 서비스로 수백에서 수천개의 소스에 대규모로 수집하고 저장
- Kinesis Data Firehose : 스트리밍을 우리가 알고 있는 곳에 로드한다.
- Kinesis Data Analystics : SQL 언어를 사용하여 스트리밍에 대한 실시간 분석을 수행한다.
- Kinesis Video Streams : 분석이나 머신 러닝을 위해 실시간 영상 스트리밍을 모니터링 한다.
SNS : AWS 알림 서비스(분리 서비스 2)
- 하나의 메세지를 다수의 수신자에게 보내고 싶을때 직접 통합으로 라우팅하여 사용

- 그림을 보면 구매서비스는 왼쪽 그림과 같이 여러 가지의 서비스와 SQS 에게로 통신하면, 4개의 다이렉트 통합이 필요하기 때문에 복잡하다.
- 그 대신 Pub/Sub 인 게시/구독 통합을 사용하여, SNS Topic이 있으면, 구매 서비스는 SNS Topic에 메세지를 보낸다.
- 해당 Topic 은 SQS에 보낸다.
Amazon MQ : 익숙한 프로토콜을 사용할 수 있게 도와주는 서비스
- SQS, SNS, Cloud Native Service 에서는 AWS 프로토콜로 자체 API 를 사용한다.
- 그런데 온프레미스로 기존 애플리케이션을 실행하면, MQTT, AMQP, STOMP, Openwire 등 과 같은 오픈 프로토콜을 사용할텐데, 이는 AWS로 애플리케이션을 마이그레이션할때, SQS 와 SNS 와 같은 AWS 자체 프로토콜을 쓰려고 기존 애플리케이션을 변경할 필요 없이 익숙한 프로토콜을 사용할 수 있게 도와주는 서비스이다.
---> 즉, MQ는 RabbitMQ와 ActiveMQ 두 가지 기술을 지원하는 관리형 메세지 브로커 서비스인데, RabbitMQ와 ActiveMQ는 개방형 프로토콜에 액세스 권한을 제공하는 온프레미스 기술이다.
(하지만 SQS, SNS 만큼 확장성이 있지는 않으며, 서버에서 실행되어 서버 문제가 발생할 수 도 있다.)
'AWS' 카테고리의 다른 글
| IAM의 모든 것. (0) | 2024.09.20 |
|---|---|
| VPC 와 네트워킹 (0) | 2024.09.14 |
| AWS 대규모 배포 및 인프라 관리 (1) | 2024.09.12 |
| AWS Databases 의 종류와 기능 !! (0) | 2024.09.11 |
| What is Amazon S3 ? (0) | 2024.09.10 |