📒 Amazon SWF (Simple WorkFlow)
- 병렬 또는 순차 단계가 있는 백그라운드 작업을 구축하고 실행하고 확장 가능하다.
- 클라우드에서 완전하게 관리되는 상태 추적기 및 작업 조정 장치
- 애플리케이션 단계가 완료되기까지 500밀리초 이상이 걸릴 경우 처리 상태를 추적해야한다.
- 기본적으로 각 워크플로우 실행은 최대 1년 간 실행 가능하다.
- 워크플로우에서 수동 작업이 필요한 작업이 있을 수 있으며 이를 유휴 상태로 만들 수 있다.
- 애플리케이션 구성 요소를 독립적으로 구현, 배포, 확장 및 수정할 수 있다.
- 작업의 조정은 구체적으로 실행 종속성, 일정 및 동시성을 애플리케이션의 논리적 흐름에 따라 관리하는 것이다.
- 처리 단계 구현과 단계를 계속 진행하루 작업의 조정을 개발자가 제어할 수 있다.
- 진행 상황을 추적하여 상태 정보를 유지하는 등 기본적으로 복잡한 작업은 개발자가 수행할 필요가 없다.
또한, SWF의 Flow Framework를 사용하면 개발자가 비동기 프로그래밍을 통해 애플리케이션을 개발할 수 있다.
- SWF는 프로그래밍의 편이성뿐만 아니라 애플리케이션의 리소스 사용량, 지연 및 처리량 개선이 가능하다는 장점이 있다.
📒 Amazon SNS (Simple Notification Service)
- 게시자에서 구독자(생산자 및 소비자라고도 함)로 메세지를 전송하는 관리형 서비스이다.
- 게시자는 논리적 액세스 지점 및 커뮤니케이션 채널인 주제에 메세지를 전송하여 구독자와 비동기식으로 통신한다.
- 클라이언트는 SNS 주제를 구독하고 Kinesis Data Firehose, SQS, Lambda, HTTP, 이메일, 모바일 푸시 알림 및 모바일 문자와 같이 지원되는 엔드포인트 유형을 사용하여 게시된 메세지를 수신할 수 있다.
🔔 일반적인 SNS 시나리오
사용자는 제품에 대한 주문이 생생될 때 SNS 주제에 메세지를 전송하는 애플리케이션을 개발할 수 있다.
그러면 해당 SNS 주제를 구독하는 SQS대기열은 새 주문에 대해 동일한 알림을 수신한다.
SQS 대기열 중 하나에 연결된 EC2 서버 인스턴스는 주문 처리 또는 이행을 처리 할 수 있다. 또한, 수신된 모든 주문을 분석하기 위해 다른 EC2 서버 인스턴스를 데이터 웨어하우스에 연결할 수 있다.
팬아웃을 사용하여 테스트 환경과 함께 프로덕션 환경으로 전송된 데이터를 복제할 수 있다.
📒 Amazon SQS (Simple Queue Service)
- 마이크로 서비스, 분산 시스템 및 서버리스 애플리케이션을 분리하고 확장할 수 있게 해주는 완전 관리형 메세지 대기열 서비스
- 메시지 지향 미들웨어를 관리하고 운영하는데 따른 복잡성과 오버헤드를 제거한다. (시스템 간에 작업을 분리)
- 메세지를 손실하거나 다른 서비스를 가동할 필요 없이 SW 구성 요소 간에 어떤 볼륨의 메세지든 전송, 저장 및 수신 가능
- SQS의 최대 메세지 보존기간은 14일이고 MIN 1분, MAX 14일, default 4일이다.
- 메세지 보존 제한에 도달 시 메세지는 자동 삭제된다.
- 단일 SQS 메세지 대기열에는 무제한의 메세지가 포함될 수 있다.
- 사용자 지정 SQS 대기열 지표를 기반으로 대상 추적 조정 정책을 사용하는 경우 애플리케이션의 수요 곡선에 맞게 보다 효과적으로 동적 조정을 수행 가능하다.
💡 애플리케이션이 FIFO 대기열에서 올바르게 작동하는지 확인하는 체크리스트
- API 메서드별 초당 최대 3,000개의 메시지를 지원한다.
- 초당 3,000개의 메시지는 300개의 API 호출을 나타내며, 각각 10개의 메시지를 배치 처리합니다.
배치 처리가 없으면 FIFO 대기열은 API 메서드별 초당 최대 300개의 API 호출을 지원한다.
- FIFO 대기열은 메시지당 지연을 지원하지 않고 대기열당 지연만을 지원한다.
- 기존 표준 대기열을 FIFO 대기열로 변환할 수 없다. 이동하려면 애플리케이션의 새 FIFO 대기열을 만들거나 기존의 표준 대기열을 삭제하고 FIFO 대기열로 다시 만들어야 한다.
🔔 FIFO Queue
- 표준 대기열의 모든 기능을 가지고 있다.
- 작업 및 이벤트 순서가 중요하거나 중복 항목이 허용되지 않는 경우에 애플리케이션 간 메세징을 강화한다.
- 사용자가 입력한 명령이 올바른 순서로 실행되도록 보장한다.
- 가격 수정을 올바른 순서로 전송하여 올바른 제품 가격을 표시한다.
- 정확히 1회 처리를 제공하지만 초당 트랜잭션(TPS) 수가 제한적이다.
- 초당 최대 300개가 처리 가능하다.
ex: 작업이 1000개를 처리한다면 작업당 4개 배치모드로 처리한다.
🔔 SQS 폴링
long 폴링 [ 비용 절감 ]
- 메세지가 대기열에 도착할 때 까지 응답을 반환하지 않으므로 시간이 지남에 따라 전체 비용이 절감된다.
- 메세지가 메세지 대기열에 도달하거나 긴 폴링 제한 시간이 초과할 때 까지 응답을 반환하지 않는다.
Short 폴링[ 성능 향상 ]
- 이미 대기열에 저장된 메세지나 메세지 대기열이 비어 있거나 찾지 못해도 즉시 반환한다.
- WaitTimeSeconds 요청의 ReceiveMessage 파라미터가 다음 두 가지 방식 중 하나에서 0으로 설정될 때 나타난다. :
- ReceiveMessage 호출이 WaitTimeSeconds를 0으로 설정한다.
- ReceiveMessage 호출이 WaitTimeSeconds를 설정하지 않지만 대기열 속성 ReceiveMessageWaitTimeSeconds이 0으로 설정되어 있다.