[AWS SAA] 8. Integration & Messaging

Sunwu Park·2024년 12월 9일

AWS-SAA

목록 보기
9/12
post-thumbnail

Amazon SQS(Simple Queue Service)

SQS란?

  • SQS는 AWS에서 오래된 서비스로, 애플리케이션 간 통신을 비동기로 처리함.
  • 애플리케이션 간 느슨한 결합을 돕는 큐 기반 서비스임.

SQS의 주요 특징

  • 완전 관리형 서비스로 무제한 처리량 제공.
  • 메시지 크기: 최대 256KB까지 지원함.
  • 메시지 보존 기간: 기본 4일, 최대 14일까지 설정 가능.
  • 최소 1회 전달 보장, 중복 메시지가 발생할 수 있음.
  • 메시지 순서 보장되지 않음 (Best-effort ordering).

SQS 메시지 생성

  • SendMessage API로 메시지 전송.
  • 메시지는 소비자가 삭제할 때까지 큐에 저장됨.
  • 예: 주문 정보를 큐에 전송 (주문 ID, 고객 ID 등).

SQS 메시지 소비

  • 소비자는 큐에서 최대 10개의 메시지를 폴링해서 가져옴.
  • 메시지 처리 후 DeleteMessage API로 삭제해야 함.
  • 예: RDS에 데이터를 저장하는 작업.

  • At least once delivery

SQS 메시지 가시성 타임아웃

  • 메시지가 소비자에게 전달된 후 일정 시간 동안 다른 소비자에게 보이지 않게 설정 가능.
  • 기본 값: 30초 (최대 12시간 설정 가능).
  • 메시지 처리 시간이 초과되면 다시 가시화되어 중복 처리 가능성이 있음.
  • A consumer could call the ChangeMessageVisibility API to get more time

Long Polling

  • When a consumer requests messages from the queue, it can optionally “wait” for messages to arrive if there are none in the queue
  • LongPolling decreases the number of API calls made to SQS while increasing the efficiency and reducing latency of your application

Amazon SQS – FIFO Queue

  • FIFO = First In First Out (ordering of messages in the queue)
  • Exactly-once send capability

SQS 보안

  • HTTPS API로 전송 중 암호화 제공.
  • KMS(Key Management Service)로 데이터 저장 시 암호화 지원.
  • IAM 정책과 큐 액세스 정책으로 서비스 접근 제어 가능.

Amazon SNS(Simple Notification Service)

SNS란?

  • SNS는 Pub/Sub(발행/구독) 모델 기반 메시징 서비스임.
  • 이벤트를 주제로 발행하면, 여러 구독자가 이를 수신함.

SNS의 주요 특징

  • 하나의 주제(topic)로 다수의 구독자에게 메시지 전송 가능.

  • 최대 1,250만 개 구독자, 10만 개의 주제를 지원함.

  • 메시지 필터링 기능으로 특정 구독자에게만 메시지 전송 가능.

  • FIFO 주제 지원: 메시지 순서 보장과 중복 제거 가능.

SNS 메시지 전송 방식

  1. Topic Publish:
    • 주제를 생성하고 구독자를 추가함.
    • SDK로 주제에 메시지 게시.
  2. Direct Publish(모바일 앱):
    • 모바일 애플리케이션과 연결하여 알림 전송.

SNS 보안

  • HTTPS API로 전송 중 암호화 제공.
  • KMS로 데이터 저장 시 암호화 가능.
  • SNS 액세스 정책으로 크로스 계정 및 서비스 접근 제어 가능.

SNS + SQS Fan-Out

  • 하나의 SNS 주제에서 여러 SQS 큐로 메시지 전송 가능.
  • 데이터 지연 처리 및 재처리 지원.
  • 교차 지역 메시지 전송도 가능.

SQS와 SNS 비교

특징SQSSNS
주요 사용 사례비동기 메시지 큐 처리이벤트 기반 알림
메시지 전달 방식큐 기반(소비자가 폴링함)주제 기반(구독자에게 푸시됨)
중복 메시지최소 1회 전달(중복 발생 가능)동일 메시지가 모든 구독자에게 전달
메시지 순서기본 순서 없음 (FIFO 선택 가능)FIFO 주제로 순서 보장 가능
지속성메시지가 큐에 저장됨 (최대 14일)메시지 전달 후 저장되지 않음
구독자 수제한 없음최대 1,250만 개 구독자
결합성낮음 (완전 비동기 처리)높음 (동기 이벤트 알림)

SQS와 SNS의 사용 사례

  • SQS 사용 사례:
    • 대규모 주문 처리 시스템.
    • 비동기적 데이터 처리(예: 백엔드 작업).
  • SNS 사용 사례:
    • 실시간 알림 서비스(예: 이메일, SMS).
    • Fan-Out 구조로 여러 서비스에 이벤트 전달.

Amazon Kinesis: 실시간 데이터 스트리밍 서비스

Amazon Kinesis는 실시간 데이터 수집, 처리, 분석을 쉽게 할 수 있는 AWS 서비스임.

주요 특징

  • 실시간 데이터 처리:
    • 애플리케이션 로그, 메트릭, 웹사이트 클릭스트림, IoT 원격 데이터 등 다양한 데이터 처리 가능.
  • 데이터 스트리밍을 위한 다양한 구성요소 제공.

Kinesis 구성요소

  1. Kinesis Data Streams

    • 데이터 스트림을 캡처, 처리, 저장하는 서비스.
    • 실시간 데이터 스트리밍 지원.
  2. Kinesis Data Firehose

    • 데이터 스트림을 AWS 데이터 스토어로 로드.
    • S3, Redshift, Elasticsearch 등으로 자동 저장 가능.
  3. Kinesis Data Analytics

    • SQL 또는 Apache Flink를 사용하여 데이터 스트림 분석.
    • 실시간 데이터 분석을 간단히 수행 가능.
  4. Kinesis Video Streams

    • 비디오 스트림을 캡처, 처리, 저장.
    • 실시간 비디오 분석 및 처리에 적합.

사용 사례

  • 실시간 애플리케이션 로그 분석.
  • IoT 장치에서 전송된 데이터 수집.
  • 웹사이트 클릭스트림 데이터 처리 및 분석.

Kinesis Data Streams

주요 특징

  • 데이터 보존: 1일 ~ 365일까지 데이터 저장 가능.
  • 재처리 가능: 데이터 재생(replay) 가능.
  • 데이터 불변성: 삽입된 데이터는 삭제 불가능(Immutable).
  • 순서 보장: 동일한 파티션 키(partition key)를 가진 데이터는 같은 샤드(shard)로 전송되어 순서 보장.
  • 생산자:
    • AWS SDK, Kinesis Producer Library(KPL), Kinesis Agent 사용.
  • 소비자:
    • 사용자 정의: Kinesis Client Library(KCL), AWS SDK.
    • 관리형 서비스: AWS Lambda, Kinesis Data Firehose, Kinesis Data Analytics.

Kinesis Data Streams – 용량 모드

1. 프로비저닝 모드 (Provisioned Mode)

  • 특징:
    • 사용자가 직접 샤드 수를 설정하고 관리.
    • API를 통해 수동 또는 자동으로 스케일링 가능.
  • 처리량:
    • 각 샤드당 1MB/s 입력 또는 1000개의 레코드/초.
    • 각 샤드당 2MB/s 출력 (기본 또는 강화된 팬아웃 소비자).
  • 과금:
    • 샤드 단위로 시간당 요금이 부과됨.

2. 온디맨드 모드 (On-Demand Mode)

  • 특징:
    • 용량을 프로비저닝하거나 관리할 필요 없음.
    • 최근 30일 동안 관찰된 최대 처리량에 따라 자동으로 확장.
  • 처리량:
    • 기본으로 4MB/s 입력 또는 4000개의 레코드/초 제공.
  • 과금:
    • 스트림 단위로 시간당 요금과 데이터 입/출력량(GB 단위) 기준으로 요금 부과.

Kinesis Data Streams – 보안

1. 접근 제어 및 권한 부여

  • IAM 정책을 사용해 데이터 스트림에 대한 접근 제어.

2. 데이터 암호화

  • 전송 중 암호화: HTTPS 엔드포인트를 사용.
  • 저장 시 암호화: AWS KMS(Key Management Service)를 사용.
  • 클라이언트 측 암호화/복호화: 직접 구현 가능(복잡도가 높음).

3. 네트워크 보안

  • VPC 엔드포인트를 통해 VPC 내에서 Kinesis에 접근 가능.

4. 모니터링

  • CloudTrail을 사용해 API 호출 로그를 기록 및 모니터링.

  • 프로비저닝 모드는 사용자가 용량을 직접 관리하고, 고정된 처리량에 적합.
  • 온디맨드 모드는 자동 확장이 필요하거나 처리량이 가변적인 워크로드에 적합.
  • Kinesis Data Streams는 IAM, HTTPS, KMS를 활용한 강력한 보안 기능을 제공하며, 네트워크와 API 호출을 안전하게 관리할 수 있음.


Kinesis Data Firehose

주요 특징

  • 완전 관리형 서비스: 관리 작업 불필요, 자동 스케일링 지원.
  • 데이터 로드 대상:
    • AWS 서비스: S3, Redshift, OpenSearch.
    • 서드파티 서비스: Splunk, MongoDB, DataDog 등.
    • 사용자 정의 HTTP 엔드포인트로 데이터 전송.
  • 버퍼링:
    • 버퍼 간격: 0초(버퍼링 없음) ~ 900초.
    • 버퍼 크기: 최소 1MB.
  • 데이터 변환 및 압축:
    • 다양한 데이터 형식, 변환, 압축 지원.
    • AWS Lambda로 사용자 정의 변환 가능.
  • 백업: 실패하거나 모든 데이터를 S3 버킷으로 백업 가능.

Kinesis Data Streams vs Firehose

특징Kinesis Data StreamsKinesis Data Firehose
목적실시간 데이터 스트리밍 처리데이터를 S3/Redshift/OpenSearch로 로드
코드 작성 필요 여부사용자 정의 코드 필요 (Producer/Consumer)코드 작성 불필요 (Fully Managed)
처리 속도실시간 처리 (~200ms)근실시간 처리
스케일링샤드 분할/병합 필요자동 스케일링
데이터 보존1~365일데이터 저장 없음
재처리 지원 여부재생(replay) 가능재처리 불가능

데이터 순서 보장

Kinesis에서 데이터 순서 처리

  • 예제: 100대의 트럭이 GPS 데이터를 주기적으로 Kinesis에 전송.
  • 해결 방법:
    • 트럭의 truck_id를 파티션 키(partition key)로 사용.
    • 동일한 키를 가진 데이터는 항상 동일한 샤드로 전송되어 순서 보장.

SQS에서 데이터 순서 처리

  • SQS 표준(Standard):

    • 메시지 순서 보장 없음.
  • SQS FIFO:

    • Group ID로 메시지를 그룹화하여 순서 보장.
    • Group ID당 하나의 소비자가 메시지 처리.

Kinesis vs SQS 순서 처리 비교

특징Kinesis Data StreamsSQS FIFO
샤드 수5 샤드 (예제 기준)1 FIFO 큐
데이터 순서샤드 내에서 순서 보장Group ID 내에서 순서 보장
소비자 수최대 샤드 수와 동일 (5명)최대 Group ID 수와 동일 (100명)
처리 속도샤드당 최대 5MB/s최대 300 메시지/초 (배치 처리 시 3000)

비교

  1. Kinesis Data Streams:

    • 실시간 데이터 스트리밍, 데이터 재처리가 필요한 경우 적합.
    • 순서가 중요한 데이터는 파티션 키를 사용해 관리.
  2. Kinesis Data Firehose:

    • 데이터를 S3, Redshift, OpenSearch 등으로 간단히 로드할 때 적합.
    • 자동 스케일링 및 관리가 필요 없는 스트리밍 처리에 유리.
  3. SQS FIFO:

    • 메시지 순서 보장 및 그룹화된 메시지 처리가 필요한 경우 적합.

Amazon MQ: 관리형 메시지 브로커 서비스

Amazon MQ는 기존 온프레미스 애플리케이션을 AWS로 마이그레이션할 때, 기존 메시징 프로토콜을 유지하면서 클라우드로 이전할 수 있도록 지원하는 서비스임.


Amazon MQ의 주요 특징

  1. 기존 메시징 프로토콜 지원:

    • MQTT, AMQP, STOMP, OpenWire, WSS 등 오픈 프로토콜 지원.
    • 기존 애플리케이션을 재설계 없이 클라우드로 마이그레이션 가능.
  2. SQS 및 SNS와의 차이점:

    • SQS와 SNS는 AWS 고유의 클라우드 네이티브 서비스로, 독점 프로토콜을 사용.
    • Amazon MQ는 기존 메시징 시스템과의 호환성을 제공.
  3. 큐와 주제 기능 제공:

    • 큐 기능: SQS와 유사하게 메시지 저장 및 전달.
    • 주제 기능: SNS처럼 Pub/Sub 메시징 가능.
  4. 멀티 AZ 지원:

    • Multi-AZ 구성을 통해 장애 복구(failover) 가능.
    • 서버 기반으로 동작하여 고가용성을 보장.
  5. 확장성:

    • SQS와 SNS처럼 무제한 확장은 불가능하지만, 기존 브로커 수준에서는 충분한 확장성 제공.

Amazon MQ 사용 사례

  • 기존 온프레미스 애플리케이션에서 클라우드로 전환 시:
    • 기존의 메시징 시스템을 사용하는 애플리케이션을 재설계할 필요가 없음.
  • 다양한 오픈 프로토콜 기반 애플리케이션의 메시징 요구 사항 해결.

Amazon MQ vs SQS/SNS

특징Amazon MQSQS / SNS
프로토콜MQTT, AMQP, STOMP, OpenWire 등 오픈 프로토콜 사용AWS 독점 프로토콜
확장성제한적 (브로커 기반 확장)무제한 확장 가능
멀티 AZ 지원Multi-AZ 장애 복구 가능고가용성 내장
사용 사례기존 메시징 시스템과 통합클라우드 네이티브 애플리케이션
구성 요소큐 및 주제 제공큐(SQS), 주제(SNS)로 분리됨

요약

  • Amazon MQ는 기존 메시징 시스템과 호환성을 유지하면서 클라우드로 이전하려는 경우에 적합.
  • SQS/SNS는 AWS 네이티브 서비스로, 대규모 확장성과 간편한 관리가 필요한 경우 적합.
  • 특정 요구사항에 따라 Amazon MQSQS/SNS를 혼합 사용하여 최적의 메시징 솔루션을 구현 가능.

0개의 댓글