이 글은 AWS Lambda로 시작하는 서버리스를 참고하여 작성하였습니다.
작성자 : 임나경
Ch7. 메시징 서비스
1. Amazon SQS
Simple Queue Service의 약자로, 안정적인 메시지 큐 서비스라는 의미이다.
메시지 큐가 무엇인지 알아야 Amazon SQS를 사용할 수 있다.
2. 메시지 큐
메시지 큐를 이해하려면 MOM을 이해해야한다.
MOM(Message Oriented Middleware)이란 메시지 큐의 더 큰 개념으로,
비동기 메시지를 사용하는 프로그램 간의 데이터 송수신을 의미한다.
MOM을 구현한 시스템을 메시지 큐라고 한다.
메시지 큐의 장점은 (1) 손실 없는 정확한 메시지 처리와 (2) 고가용성이라는 점이다.
대표적인 메시지 전송 방법은 통신이 오래걸릴 때, 사용자에게 우선적으로 보여주는 선처리, 비동기 통신을 이용한 후처리이다.
메시지 큐 오픈소스 : RabbitMQ, ActiveMQ, Kafka 등
메시지 큐의 기본동작
Producer -> Queue -> Consumer
Producer가 메시지를 Queue에 넣어두면 Consumer가 메시지를 가져오는 방식이다.
ex) 커머스 시스템에서 사용자가 지정된 시간에 폭발적인 접속으로 서버 부하가 발생하면,
메시지 큐로 처리해서 사용자에게 대기열을 제공하고 대기 순서를 부여한다.
** Amazon MQ
Amazon SQS와 다른 메시지 큐 서비스이다. 이미 구현하여 동작 중인 애플리케이션을 마이그레이션하여 바로 사용할 때 이용한다.
또는 AMQP, STOMP, JMS, NMS 등 다양한 표준 프로토콜 호환이 필요할 때 사용한다.
한편, Amazon SQS는 메시지 보존 기간이 존재한다. (default 4일, 60초~14일 사이로 직접 설정 가능)
메시지 전송 실패 또는 대기열이 많지만 스케일이 처리량보다 매우 적을 때 메시지를 보존한다.
보존기간이 지나면 대기열에 존재하는 메시지를 삭제한다.
Amazon SQS 구성 방법은 다음 두 가지이다.
1. FIFO(선입선출) 대기열
순서가 중요하고 중복항목이 허용되지 않는 경우에 사용한다.
배치작업(Send-Receive-Delete)를 초당(TPS) 최대 3,000개의 메시지를 지원한다.
배치작업(일괄처리)을 하지 않는다면 초당 300개의 메시지를 지원한다. (느린 퍼포먼스)
2. Standard(표준) 대기열
메시지 순서 최대 보존한다. (TPS 제한 없음)
2개 이상의 메시지 사본이 순서가 맞지 않게 전송 될 수 있다. (무작위 처리)
Amazon SQS는 최소 1회 전송 처리를 하는데, 만약 전송에 실패하는 경우 중복 전송을 할 수도 있다는 점을 유의해야한다.
** 메시지 폴링이란?
시지 받기 요청을 하면 결과를 바로 받는 것
3. Amazon SNS
Simple Notification Service의 약자로, 알림을 설정, 운영, 전송하는 서비스이다.
애플리케이션의 메시지를 게시하면, 구독자 또는 타 애플리케이션에 즉시 전송 가능하다.
4. 게시-구독 (Publish-Subscribe)
Amazon SNS는 Pub-Sub 패턴으로 동작한다.
ex) Youtube 게시-구독
Observer Pattern이라고도 하지만 차이점이 존재한다.
Message Broker 또는 Event Bus가 존재하면 Pub-Bub Pattern이다.
Observer Pattern은 Observer와 Subject가 서로를 인지하는 반면, Pub-Sub Pattern은 서로 인지하지 못해도 된다.
Pub-Sub은 Publisher가 Subscriber의 위치나 존재를 알지 못해도,
Broker 역할(Message Queue)을 하는 중간 지점에 메시지를 놓으면 된다.
Observer Pattern은 Subject가 직접 Observer에 메시지를 알려줘야한다.
1. Publisher가 Amazon SNS로 메시지를 보낸다.
2. 메시지를 Topic을 통해 메시지 필터링과 Fanout을 거친다.
3. Subscribers에게 전달된다.
(Amazon SQS, Amazon Lambda, HTTP/S Webhook 등 팬아웃 가능)
* Topic?
애플리케이션 엔드 포인트들이 구독 단위로 그룹핑되어있는 것이다.
* Fanout?
주제나 그룹을 타겟팅하거나 미리 알람 전송할 유저들을 구분한다.
잠재적 고객 및 사용자에게 메시지를 전송한다.
'GDSC HUFS 3기 > Cloud Computing' 카테고리의 다른 글
[AWS] Amazon SQS, API Gateway (0) | 2022.06.02 |
---|---|
[AWS] Amazon API Gateway/REST API/HTTP API/WebSocket API (0) | 2022.06.02 |
[AWS] AWS Lambda (0) | 2022.05.18 |
[AWS] AWS 네트워크 (0) | 2022.05.12 |
[AWS] AWS Lambda/cold start/warm start/lambda 런타임/lambda event/메모리 할당/실행 제한 시간 (0) | 2022.05.12 |