어쩌다 IT
article thumbnail
반응형

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개 처리
 

What is Amazon Simple Queue Service? - Amazon Simple Queue Service

Thanks for letting us know this page needs work. We're sorry we let you down. If you've got a moment, please tell us how we can make the documentation better.

docs.aws.amazon.com


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 등으로 전송

 

What is Amazon SNS? - Amazon Simple Notification Service

What is Amazon SNS? Amazon Simple Notification Service (Amazon SNS) is a managed service that provides message delivery from publishers to subscribers (also known as producers and consumers). Publishers communicate asynchronously with subscribers by sendin

docs.aws.amazon.com


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로 감시
 

What Is Amazon Kinesis Data Streams? - Amazon Kinesis Data Streams

What Is Amazon Kinesis Data Streams? You can use Amazon Kinesis Data Streams to collect and process large streams of data records in real time. You can create data-processing applications, known as Kinesis Data Streams applications. A typical Kinesis Data

docs.aws.amazon.com

 

Kinesis Data Firehose

  • 완전 관리형 서비스로 자동으로 크기가 조정되는 서버리스 서비스
  • Amazon S3, ElasticSearch, Redshift, Splunk, Mongo DB, DataDog, HTTP 엔드포인트 등으로 데이터 전송 가능
  • 여러 데이터 형식과 데이터 전환, 변환, 압축 지원
  • 실시간에 가까운 근 실시간 서비스
  • AWS Lambda 를 활용하여 자체적인 데이터 변환 가능
  • 모든 데이터를 백업 S3 버킷에 전송 가능

 

What Is Amazon Kinesis Data Firehose? - Amazon Kinesis Data Firehose

What Is Amazon Kinesis Data Firehose? Amazon Kinesis Data Firehose is a fully managed service for delivering real-time streaming data to destinations such as Amazon Simple Storage Service (Amazon S3), Amazon Redshift, Amazon OpenSearch Service, Amazon Open

docs.aws.amazon.com

 

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 처럼 보이는 주제 기능을 단일 브로커의 일부로 제공
 

What is Amazon MQ? - Amazon MQ

Thanks for letting us know this page needs work. We're sorry we let you down. If you've got a moment, please tell us how we can make the documentation better.

docs.aws.amazon.com

반응형
profile

어쩌다 IT

@jwlish

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!