반응형
Amazon SQS
Amazon SQS
- Simple Queue Service
- SQS는 AWS에서 제공하는 최초의 서비스로 가장 오래된 서비스
- 완전 관리형 서비스이며 애플리케이션을 분리하는 데 사용
- 메세지를 보내는 주체를 Producer (생산자), 메세지를 수신하는 대상을 Consumer (소비자)
- 생산자에 의해 메세지가 작성되면 소비자가 해당 메세지를 읽고 삭제할 때까지 SQS 대기열에 유지
- 소비자가 SQS 메세지를 폴링 하여 메세지를 확인하고 수행한 후 삭제
- Amazon SQS 특징
- 무제한 처리량 - 처치량에 제한이 없고 대기열에 있는 메세지 수에도 제한이 없음
- 메세지의 수명이 짧음 - 기본값으로 4일 동안 대기열에 남아있고, 최소 1분부터 최대 14일까지 보존
- 지연 시간이 짧음
- 전송 메세지당 256kb 미만이어야 함
- Amazon SQS 보안
- 암호화 - HTTPS API를 사용하여 전송 중 암호화, KMS 키를 이용하여 암호화, 클라이언트 측 암호화
- IAM 정책 - SQS API 에 대한 액세스를 규제
- SQS 액세스 정책 (S3 버킷 정책과 유사)
Amazon SQS - 표시 제한 시간
- Message Visibility Timeout
- 소비자가 메세지를 폴링 하면 그 메세지는 중복 처리를 막기 위해 다른 소비자들에게 보이지 않음
- 기본 표시 제한 시간은 30초, 최소 0초부터 최대 12시간
Amazon SQS - Long Polling
- 소비자가 대기열에 메세지를 요청하는데 대기열에 아무것도 없으면 메세지 도착할 때까지 대기하는 작업
- 지연 시간을 줄이고 SQS로 보내는 API 호출 숫자를 줄이기 위해 사용
- 1초부터 20초 사이로 구성 가능
- 대기열 레벨에서 구성하여 폴링하는 아무 소비자로부터 롱 폴링을 활성화하는 방법
- WaitTimeSeconds를 지정하여 소비자가 스스로 롱 폴링을 하는 방법
- SQS 대기열에서 API 호출 수를 최적화하고 지연 시간을 줄이는 방법은 Long Polling
Amazon SQS - FIFO Queue
- FIFO = First In First Out, 선입선출
- 메세지를 보낸 순서대로 받을 수 있게 해 줌, 순서를 확실히 보장
- 중복 제거 기능
- 초당 300개의 메세지를 처리하고, 메세지를 묶음으로 보낼 시 초당 3,000개 처리
Amazon SNS
Amazon SNS
- Simple Notification Service
- Pub / Sub 구조 (게시자와 구독자) 에서 사용되는 메세지 전송 관리형 서비스
- 구독 중인 엔드포인트 혹은 사용자에게 메세지를 보내는 서비스
- 표준 유형과 FIFO 유형이 있음
- 주제 별 최대 1,200만 이상의 구독자 가능
- 계정 당 10만개의 주제 구독 가능
- 보안 측면에서 SQS와 비슷함
- Amazon SNS는 CloudWatch Alarms, ASG, S3 버킷, Lambda, RDS 등 다양한 AWS 서비스에서 데이터 수신 가능
- Amazon SNS를 통해 Email, SMS이나 모바일 알람, SQS, Lambda, HTTPS, Firehose를 통해 S3 등으로 전송
Amazon Kinesis
Amazon Kinesis
- 실시간 스트리밍 데이터를 손쉽게 수집하고 처리하여 분석할 수 있는 서비스
- Kinesis Data Streams - 데이터 스트림을 수집하여 처리하고 저장
- Kinesis Data Firehose - 데이터 스트림을 AWS 내부나 외부의 데이터 저장소로 불러옴
- Kinesis Data Analytics - SQL 언어나 Apache Flink를 활용하여 데이터 스트림을 분석
- Kinesis Video Stream - 비디오 스트림을 수집하고 처리하여 저장
Kinesis Data Streams
- 샤드에 데이터 분배
- 샤드는 데이터 수집률이나 소비율 측면에서 스트림의 용량을 결정
- 보존 기간은 1일부터 365일 사이로 설정 가능, 데이터를 다시 처리하거나 확인 가능
- 데이터가 Kinesis로 들어오면 삭제 불가능, 불변성
- 메세지를 전송하면 파티션 키가 추가되고, 메세지들은 키를 기반으로 같은 파티션 키를 가진 데이터끼리 정렬
- 생산자 - SDK, Kinesis Producer Library (KPL), Kinesis Agent 를 사용하여 데이터 전송
- 소비자 - Kinesis Client Library (KCL), SDK 를 써서 직접 데이터 작성 가능, Lambda나 KDF, KDA 활용 가능
- KDS 유형
- 프로비저닝 유형 - 프로비저닝할 샤드 수를 정하고 API를 활용하거나 수동으로 조정
- 온디맨드 유형 - 사전에 사용량 예측할 수 없는 경우 사용, 송수신 데이터양에 따라 비용 부과
- KDS 보안
- IAM 정책을 사용하여 액세스 권한 제어
- HTTPS로 전송 중 데이터를 암호화할 수 있고 미사용 데이터는 KMS로 암호화
- 클라이언트 측 암호화
- VPC 엔드포인트 사용으로 프라이빗 서브넷의 인스턴스에 손쉽게 접근
- 모든 API 요청은 CloudTrail로 감시
Kinesis Data Firehose
- 완전 관리형 서비스로 자동으로 크기가 조정되는 서버리스 서비스
- Amazon S3, ElasticSearch, Redshift, Splunk, Mongo DB, DataDog, HTTP 엔드포인트 등으로 데이터 전송 가능
- 여러 데이터 형식과 데이터 전환, 변환, 압축 지원
- 실시간에 가까운 근 실시간 서비스
- AWS Lambda 를 활용하여 자체적인 데이터 변환 가능
- 모든 데이터를 백업 S3 버킷에 전송 가능
KDS vs KDF
- Kinesis Data Streams (KDS)
- 데이터를 대규모로 수집할 때 쓰는 스트리밍 서비스
- 생산자와 소비자에 대해 커스텀 코드 사용 가능
- 실시간으로 이루어지며 약 70ms ~ 200ms 정도의 지연 시간 발생
- 용량 직접 조정하여 샤드 분할이나 샤드 병합을 통해 용량이나 처리량 늘릴 수 있음
- 제공한 용량만큼 비용을 지불
- 데이터는 1일에서 365일 간 저장
- 반복 작업 가능
- Kinesis Data Firehose (KDF)
- Amazon S3, Redshift, ElasticSearch, HTTP 엔드포인트, DataDog 등에 스트리밍
- 완전 관리형 서비스이며 서버리스
- 근 실시간 서비스
- 자동으로 용량 조정
- KDF 를 통과하는 데이터에 대해서만 비용 지불
- 반복 작업 불가능
SQS vs SNS vs Kinesis
SQS, SNS, Kinesis 요약
- SQS
- 소비자가 SQS 대기열에서 메세지를 요청해서 데이터를 가져오는 (pull) 모델
- 데이터를 처리한 후 소비자가 대기열에서 삭제해야 함
- 작업자와 소비자 수의 제한은 없음
- 처리량에 대해 프로비저닝 할 필요 없음
- 순서 보장을 위해 FIFO 대기열 활성화 가능
- 메세지에 지연 기능이 있어 일정 시간 뒤에 대기열에 나타나도록 할 수 있음
- SNS
- Pub / Sub 모델
- 다수의 구독자에게 데이터를 푸시하면 메세지의 복사본을 받을 수 있음
- SNS 주제 별로 1,200만명 이상의 구독자
- 데이터가 SNS 에 전송되면 지속되지 않음 - 제대로 전달되지 않으면 데이터 잃을 수 있음
- 최대 10만개의 주제 구독 가능
- 처리량에 대해 프로비저닝 할 필요 없음
- 팬아웃 아키텍쳐 패턴을 이용하여 SNS와 SQS 결합 가능
- Kinesis
- 소비자가 Kinesis 로부터 데이터를 가져오는 (pull) 표준 모드 - 샤드 당 2MB/s 속도
- Kinesis가 소비자에게 데이터를 보내는 (push) 향상된 팬아웃 모드 - 샤드 하나에 소비자 당 2MB/s 속도
- KDS 에서 데이터가 지속되기 때문에 반복 작업 가능
- 실시간 빅 데이터 분석, ETL 등에 활용
Amazon MQ
Amazon MQ
- RabbitMQ 와 ActiveMQ 를 위한 관리형 메세지 브로커 서비스
- MQTT, AMQP, STOMP, 등과 같은 메시징 프로토콜 지원
- SQS, SNS 처럼 확장성이 크지 않음
- 고가용성을 위해 장애 조치와 함께 다중 AZ 설정
- SQS 처럼 보이는 대기열 기능과 SNS 처럼 보이는 주제 기능을 단일 브로커의 일부로 제공
반응형
'자격증 > SAA-C03' 카테고리의 다른 글
[SAA-C03] Serverless - Lambda, DynamoDB, API Gateway (0) | 2023.09.08 |
---|---|
[SAA-C03] AWS의 컨테이너 - ECS, ECR, EKS, App Runner (0) | 2023.09.07 |
[SAA-C03] AWS 스토리지 정리 (0) | 2023.09.05 |
[SAA-C03] AWS 스토리지 추가 기능 (0) | 2023.09.04 |
[SAA-C03] CloudFront 및 AWS Global Accelerator (0) | 2023.09.01 |