Application Integration

2025. 10. 21. 18:13CERTIFICATES/AWS DEA-C01

AWS SQS

Queue란?

AWS SQS – 스탠다드 큐

  • 가장 오래된 서비스 중 하나로, 10년 이상 제공됨
  • 완전관리형 서비스임
  • 초당 1건에서 15,000건까지 확장 가능
  • 메시지 기본 보존 기간은 4일이며, 최대 14일까지 설정 가능함
  • 큐에 저장 가능한 메시지 수에는 제한이 없음
  • 낮은 지연 시간 제공 (게시 및 수신 시 10ms 미만)
  • 소비자 수에 따라 수평 확장이 가능함
  • 중복 메시지가 발생할 수 있음(최소 한 번 이상 전달 보장, 간헐적 발생)
  • 메시지 순서가 보장되지 않을 수 있음(최선의 노력 기반 정렬 제공)
  • 전송 가능한 메시지의 최대 크기는 256KB임

SQS – 메시지 생성

  • 본문(Body)을 정의함
  • 메시지 속성(메타데이터)을 추가함 (선택 사항)
  • 지연 전송을 설정할 수 있음 (선택 사항)
  • 메시지를 전송하면 다음 값을 반환받음
    • 메시지 식별자
    • 본문에 대한 MD5 해시값

SQS – 메시지 소비

  • 소비자는 다음과 같이 동작함
  • SQS를 폴링하여 메시지를 수신함(한 번에 최대 10개의 메시지 수신 가능)
  • 가시성 타임아웃 내에 메시지를 처리해야 함
  • 메시지 ID와 수신 핸들을 사용하여 메시지를 삭제함

AWS SQS – FIFO 큐

  • 새로운 서비스 형태로, 선입선출(First In - First Out) 방식임
    • 모든 리전에서 사용 가능한 것은 아님
  • 큐 이름은 반드시 .fifo로 끝나야 함
  • 처리량이 낮음 (배치 사용 시 초당 최대 3,000건, 배치 미사용 시 초당 300건)
  • 메시지는 소비자에 의해 순서대로 처리됨
  • 메시지는 정확히 한 번만 전송됨
  • “Duplication ID”를 사용하여 5분 간 중복 제거 수행함

SQS 확장 클라이언트

  • 메시지 크기 제한이 256KB인데, 대용량 메시지를 전송해야 하는 경우 사용함
  • SQS Extended Client(Java 라이브러리)를 사용하여 처리함

AWS SQS 사용 사례

  • 애플리케이션 간 결합을 해제함 (예: 비동기적으로 결제 처리)
  • 데이터베이스로의 쓰기 작업을 버퍼링함 (예: 투표 애플리케이션)
  • 대량의 메시지 유입을 처리함 (예: 이메일 발송 시스템)
  • SQS는 CloudWatch를 통해 Auto Scaling과 통합할 수 있음

SQS 제한사항

  • 소비자에 의해 처리 중인 메시지(전송 중 메시지)는 최대 120,000개까지 가능함
  • 배치 요청은 최대 10개의 메시지를 포함할 수 있으며, 전체 크기는 최대 256KB임
  • 메시지 내용은 XML, JSON, 또는 비포맷 텍스트(Unformatted text) 형식을 사용할 수 있음
  • 스탠다드 큐는 TPS 제한이 없음
  • FIFO 큐는 배치를 사용할 경우 초당 최대 3,000개의 메시지를 지원함
  • 메시지 최대 크기는 256KB이며, 더 큰 메시지는 Extended Client를 사용해야 함
  • 데이터 보존 기간은 최소 1분에서 최대 14일까지 설정 가능함
  • 요금 체계
    • API 요청 건당 과금
    • 네트워크 사용량에 따라 과금

AWS SQS 보안

  • HTTPS 엔드포인트를 사용하여 전송 중 암호화를 지원함
  • KMS를 사용하여 서버 측 암호화(SSE, Server Side Encryption)를 활성화할 수 있음
    • 사용할 고객 마스터 키(CMK, Customer Master Key)를 지정할 수 있음
    • SSE는 메시지 본문만 암호화하며, 메타데이터(메시지 ID, 타임스탬프, 속성)는 암호화되지 않음
  • IAM 정책에서 SQS 사용 권한이 허용되어야 함
  • SQS 큐 접근 정책을 설정할 수 있음
    • IP 단위의 세분화된 접근 제어가 가능함
    • 요청이 들어오는 시간에 대한 제어도 가능함

Kinesis Data Stream vs SQS

Kinesis Data Stream

  • 데이터는 여러 번 소비될 수 있음
  • 데이터는 보존 기간 이후 삭제됨
  • 레코드 순서는 샤드 단위로 보존되며, 재처리 중에도 순서가 유지됨
  • 동일한 스트림을 여러 애플리케이션이 독립적으로 읽을 수 있음 (Pub/Sub 구조)
  • “스트리밍 MapReduce” 형태의 쿼리 기능 제공 (Spark, Flink 등)
  • 소비 진행 상태를 추적하기 위해 체크포인트가 필요함 (예: KCL + DynamoDB)
  • 프로비저닝 모드 또는 온디맨드 모드 지원

SQS

  • 큐 기반으로 애플리케이션 간 결합을 해제함
  • 큐당 하나의 애플리케이션이 사용됨
  • 레코드는 소비(ack 또는 fail) 후 삭제됨
  • 스탠다드 큐의 경우 메시지는 독립적으로 처리됨
  • FIFO 큐의 경우 순서가 보장되지만 처리량이 감소함
  • 메시지 지연 기능을 지원함
  • 부하에 따른 동적 확장이 가능하며 별도의 운영 조치가 필요하지 않음

SQS vs Kinesis – 사용 사례

SQS 사용 사례

  • 주문 처리
  • 이미지 처리
  • 메시지 수에 따라 큐를 자동 확장
  • 향후 처리를 위해 메시지를 버퍼링 및 배치 처리
  • 요청 오프로딩

Kinesis Data Streams 사용 사례

  • 로그 및 이벤트 데이터의 빠른 수집과 처리
  • 실시간 지표 및 보고서 생성
  • 모바일 데이터 수집
  • 실시간 데이터 분석
  • 게임 데이터 피드 처리
  • 복잡한 스트림 처리
  • 사물인터넷(IoT)으로부터 데이터 피드 수집

Amazon SQS – Dead Letter Queue(DLQ)

  • 소비자가 메시지를 가시성 타임아웃 내에 처리하지 못하면, 해당 메시지는 다시 큐로 되돌아감
  • 메시지가 큐로 되돌아갈 수 있는 최대 횟수 임계값(MaximumReceives)을 설정할 수 있음
  • 이 임계값을 초과하면 메시지는 데드 레터 큐(DLQ)로 이동함
  • 디버깅 시 매우 유용하게 사용됨
  • FIFO 큐의 DLQ는 반드시 FIFO 큐여야 함
  • 스탠다드 큐의 DLQ는 반드시 스탠다드 큐여야 함
  • DLQ 내 메시지가 만료되기 전에 반드시 처리해야 함
    • DLQ의 보존 기간은 14일로 설정하는 것이 좋음

SQS DLQ – 소스 큐로 재전송

  • DLQ에 있는 메시지를 분석하여 문제의 원인을 파악할 수 있도록 도와주는 기능임
  • 코드 문제를 수정한 후, DLQ의 메시지를 소스 큐(또는 다른 큐)로 배치 단위로 재전송 할 수 있음
  • 이 과정에서 별도의 사용자 정의 코드를 작성할 필요가 없음

Amazon SNS

Amazon SNS

• 하나의 메시지를 여러 수신자에게 전송하고 싶을 때 사용하는 서비스

  • 이벤트 생성자(event producer)는 하나의 SNS 토픽으로만 메시지를 전송함
  • 원하는 만큼 많은 이벤트 수신자(구독)를 등록하여 해당 SNS 토픽의 알림을 수신할 수 있음
  • 토픽에 구독된 각 수신자는 모든 메시지를 수신함 (참고: 메시지 필터링 기능이 새롭게 추가됨)
  • 토픽당 최대 12,500,000개의 구독을 지원함
  • 계정당 최대 100,000개의 토픽을 생성할 수 있음

SNS는 다양한 AWS 서비스와 통합됨

  • 많은 AWS 서비스들이 알림 전송을 위해 데이터를 직접 SNS로 보낼 수 있음

Amazon SNS – 게시 방법

  • 토픽 게시(SDK 사용)
    • 토픽 생성
    • 하나 이상의 구독 생성
    • 해당 토픽에 메시지 게시
  • 직접 게시(모바일 앱 SDK용)
    • 플랫폼 애플리케이션을 생성함
    • 플랫폼 엔드포인트를 생성함
    • 해당 플랫폼 엔드포인트에 메시지를 게시함
    • Google GCM, Apple APNS, Amazon ADM 등과 연동됨

Amazon SNS – 보안

  • 암호화(Encryption)
    • HTTPS API를 통한 전송 중 암호화 지원
    • KMS 키를 사용한 저장 시 암호화 지원
    • 클라이언트가 직접 암호화/복호화를 수행하고자 할 경우 클라이언트 측 암호화(client-side encryption)도 가능함
  • 접근 제어
    • IAM 정책을 통해 SNS API 접근을 제어함
  • SNS 접근 정책은 S3 버킷 정책과 유사한 방식으로 동작함
    • 교차 계정 간 SNS 토픽 접근을 허용할 때 유용함
    • S3와 같은 다른 서비스가 SNS 토픽으로 메시지를 게시하도록 허용할 때도 사용함

SNS + SQS: 팬아웃(Fan-Out)

  • SNS에 한 번만 푸시하면, 구독 중인 모든 SQS 큐에서 메시지를 수신함
  • 완전히 디커플링되어 있으며 데이터 손실이 없음
  • SQS는 데이터 영속성, 지연 처리, 재시도 기능을 제공함
  • 시간이 지나면서 SQS 구독자를 더 추가할 수 있음
  • SQS 큐의 액세스 정책이 SNS가 해당 큐에 메시지를 쓸 수 있도록 허용해야 함

Application: S3 이벤트를 여러 큐로 전송

  • 동일한 조합의 이벤트 유형(예: object create)과 프리픽스(예: images/)에 대해서는 오직 하나의 S3 이벤트 규칙만 설정할 수 있음
  • 동일한 S3 이벤트를 여러 SQS 큐로 전송하려면 팬아웃(fan-out)을 사용해야 함

Application: Kinesis Data Firehose를 통한 SNS에서 Amazon S3로 전송

  • SNS는 Kinesis로 메시지를 전송할 수 있으며, 이를 통해 다음과 같은 솔루션 아키텍처를 구성할 수 있음

Amazon SNS – FIFO 토픽

  • FIFO = First In First Out (토픽 내 메시지의 순서를 유지함)

  • SQS FIFO와 유사한 기능을 가짐
    • Message Group ID를 기준으로 순서가 보장됨 (같은 그룹의 모든 메시지는 순서대로 처리됨)
    • Deduplication ID 또는 콘텐츠 기반 중복 제거를 통해 중복 메시지를 방지함
  • SQS Standard 큐와 FIFO 큐 모두 구독자로 설정할 수 있음
  • 처리량이 제한되어 있으며, SQS FIFO와 동일한 처리량 제한이 적용됨

SNS FIFO + SQS FIFO: Fan Out

  • fan out + 순서 보장 + 중복 제거 필요한 경우

SNS – 메시지 필터링

  • JSON 정책을 사용하여 SNS 토픽의 구독으로 전송되는 메시지를 필터링함
  • 구독에 필터 정책이 없으면 모든 메시지를 수신함

AWS Step Functions

AWS Step Functions

  • 워크플로우 설계에 사용함
  • 시각화가 용이함
  • 코드 외부에서 고급 오류 처리 및 재시도 메커니즘을 제공함
  • 워크플로우 실행 이력을 감사할 수 있음
  • 임의의 시간 동안 대기할 수 있음
  • 상태 머신의 최대 실행 시간은 1년임

Step Functions - 예시

머신러닝 모델 학습

머신러닝 모델 튜닝

배치 작업 관리

AWS Step Functions

  • 워크플로우는 상태 머신이라 부름
  • 워크플로우의 각 단계는 상태임
  • 상태의 유형
    • Task: Lambda, 다른 AWS 서비스 또는 서드파티 API를 호출하여 작업을 수행함
    • Choice: 비교 연산 등 조건 로직을 Choice 규칙으로 추가함
    • Wait: 지정된 시간 동안 상태 머신 실행을 지연함
    • Parallel: 병렬로 실행되는 별도의 브랜치를 추가함
    • Map: 데이터셋의 각 항목에 대해 일련의 단계를 병렬로 실행함
      • 데이터 엔지니어링에서 가장 관련이 높음
      • JSON, S3 객체, CSV 파일과 함께 작동함
    • Pass, Succeed, Fail 상태도 존재함

전체 데이터 엔지니어링 파이프라인 실시간 계층

전체 데이터 엔지니어링 파이프라인 비디오 계층

전체 데이터 엔지니어링 파이프라인 배치 계층

전체 데이터 엔지니어링 파이프라인 분석 계층

Amazon AppFlow

Amazon AppFlow

  • SaaS(Software as a Service) 애플리케이션과 AWS 간에 데이터를 안전하게 전송할 수 있도록 지원하는 완전관리형 통합 서비스임
  • 소스: Salesforce, SAP, Zendesk, Slack, ServiceNow
  • 대상: Amazon S3, Amazon Redshift와 같은 AWS 서비스 또는 Snowflake, Salesforce와 같은 비AWS 서비스
  • 실행 주기: 일정 기반, 이벤트 기반, 또는 온디맨드 방식으로 수행 가능함
  • 필터링 및 유효성 검사와 같은 데이터 변환 기능을 제공함
  • 공용 인터넷을 통한 암호화 또는 AWS PrivateLink를 통한 프라이빗 연결 지원함
  • 별도의 통합 코드를 작성할 필요 없이 즉시 API를 활용할 수 있음

Amazon EventBridge(구 CloudWatch Events)

Amazon EventBridge

  • 일정 기반: 크론 작업(Cron job)처럼 예약된 스크립트를 실행함

  • 이벤트 패턴: 특정 서비스의 동작에 반응하도록 이벤트 규칙을 설정함

  • Lambda 함수 트리거, SQS 또는 SNS 메시지 전송 등의 동작을 수행함

Amazon EventBridge 규칙

Amazon EventBridge

  • 리소스 기반 정책을 사용하면 다른 AWS 계정에서 이벤트 버스에 접근할 수 있음
  • 이벤트 버스로 전송된 이벤트를 전체 또는 필터 조건에 따라 아카이브할 수 있음 (무기한 또는 지정된 기간 동안 보관 가능함)
  • 아카이브된 이벤트를 재생할 수 있음

Amazon EventBridge – Schema Registry

  • EventBridge는 이벤트 버스의 이벤트를 분석하여 스키마를 추론할 수 있음
  • 스키마 레지스트리를 통해 애플리케이션용 코드를 생성할 수 있으며, 이를 통해 이벤트 버스 내 데이터 구조를 사전에 인식할 수 있음
  • 스키마는 버전 관리가 가능함

Amazon EventBridge – 리소스 기반 정책

  • 특정 이벤트 버스에 대한 권한을 관리함
  • 예시: 다른 AWS 계정이나 AWS 리전으로부터의 이벤트를 허용하거나 거부함
  • 사용 사례: AWS Organization 전체의 이벤트를 단일 AWS 계정 또는 단일 AWS 리전에 집계함

Amazon Managed Workflows for Apache Airflow (MWAA)

Amazon Managed Workflows for Apache Airflow (MWAA)

  • Apache Airflow는 배치 기반의 워크플로우 도구임
  • 워크플로우를 개발, 스케줄링, 모니터링할 수 있음
  • 워크플로우는 Python 코드로 정의되며, 방향성 비순환 그래프(DAG, Directed Acyclic Graph)를 생성
  • Amazon MWAA는 Apache Airflow를 설치하거나 유지 관리할 필요 없이 사용할 수 있는 관리형 서비스를 제공함
  • 사용 사례:
    • 복잡한 워크플로우 처리
    • ETL(추출, 변환, 적재) 작업 조정
    • 머신러닝 학습 데이터 준비

Airflow의 예시 DAG

Airflow + MWAA

  • DAG(Python 코드)는 S3에 업로드됨
    • 필요한 플러그인과 종속 패키지를 함께 zip 파일로 묶어 업로드할 수도 있음
  • Amazon MWAA가 이를 감지하여 각 DAG에 정의된 파이프라인을 오케스트레이션하고 스케줄링함
  • VPC 내에서 실행됨
    • 최소 2개 가용 영역(AZ)에서 동작함
  • 프라이빗 또는 퍼블릭 엔드포인트를 지원
    • IAM으로 접근 제어를 관리함 (Airflow 웹 서버 접근 포함)
  • 자동 확장을 지원
    • Airflow 워커(Airflow Workers)는 사용자가 정의한 한도까지 자동으로 확장됨

Amazon MWAA 통합

  • 오픈 소스 통합 기능을 활용함
    • Athena, Batch, CloudWatch, DynamoDB, DataSync
    • EMR, Fargate, EKS, Kinesis, Glue, Lambda
    • Redshift, SQS, SNS, SageMaker, S3 등 다양한 서비스와 통합됨
    • AWS Secrets Manager 등 보안 서비스와도 연동됨
  • 스케줄러(Scheduler)와 워커(Worker)는 AWS Fargate 컨테이너에서 실행됨

Amazon MWAA Architecture

'CERTIFICATES > AWS DEA-C01' 카테고리의 다른 글

Networking and Content Delivery  (0) 2025.10.21
Security, Identity and Compliance  (0) 2025.10.21
Analytics  (0) 2025.10.21
Container  (0) 2025.10.14
Compute  (0) 2025.10.14