정보보안 자격증/AWS

AWS 19. SQS, SNS

Rin.a.ya 2024. 7. 20. 19:21

1. SQS (Simple Queue Service)

  • 완전관리형 메시지 큐 서비스
  • 생산자 (producer)와 소비자 (customer) 간의 버퍼 역할
  • Loosely Coupled Architecture 구현
    • 비동기 처리 -> 사용자에게 신속하게 응답
    • SQS 지표 -> 경보 -> 소비자 애플리케이션을 처리하는 인스턴스 확장
    • DLQ (Dead Letter Queue)
  • SQS의 큐 유형
    • Standard
      • 최소 1회 처리 (여러 번 처리될 수도 있음)
      • 무제한 처리 용량
      • 순서대로 처리됨을 보장받지 못함
    • FIFO
      • 정확히 1회 처리
      • 초당 300건의 메시지 처리 (배치처리 시 10건씩 묶어서 처리하므로 최대 3000건/초)
      • 순서대로 처리됨을 보장
  • SQS의 메시지
    • 메시지의 최대 크기: 256KB
      • 따라서 대용량 데이터를 처리하려면 S3 등을 결합하여 사용
    • 보존기간
      • 기본: 4일, 설정 범위: 1분 ~ 14일, 보존 기간이 지나면 메시지는 자동으로 삭제
    • 처리가 완료된 메시지는 명시적으로 삭제
      • 메시지를 수신할 때 받은 ReceiptHandle를 이용하여 삭제함
    • HTTP 기반의 관리형 서비스
      • 기존의 MQ (Rabbit MQ, MSMQ 등)와 호환되지 않음
      • 기존 MQ와 연동하려면 Amazon MQ를 사용해야 함
  • 가시성 제한 시간 (Visibility Timeout)
    • 소비자가 메시지를 폴링하여폴링 하여 처리하는 동안 다른 소비자가 메시지를 폴링 하여 읽어갈 수 없도록 하는 제한시간
    • 기본값: 30초, 설정 가능범위: 0초 ~ 12시간
    • 한 메시지가 중복 처리되는 것을 방지하기 위한 설정
      • 메시지 처리에 필요한 시간이 가시성 제한 시간을 넘어서면 중복 처리될 가능성
  • Short Polling vs Long Polling
    • short polling은 메시지가 없어도 빈메시지를 응답함
    • 요청/응답당 비용 부과 -> 비용 증가
    • 비용 절감 -> LongPolling (wait 설정값)
  • SQS 사용 사례
    • API GW + Lambda + RDS의 경우
      • API GW와 Lambda는 서버리스이므로 스파이크 성의 쓰기 작업이 몰려들면 자동으로 확장
      • 하지만 RDS는 확장이 용이하지 않음
      • 이럴 때 SQS로 요청을 버퍼링하고 RDS에 신뢰성 있게 저장되도록 구성
    • 대용량 메시지 처리
      • S3 버킷에 큰 메시지를 저장 -> S3 버킷 내의 객체 경로 정보를 메시지에 담아 SQS로 전송
      • 소비자 애플리케이션에서는 메시지를 폴링 -> S3 버킷에서 객체를 획득하여 데이터 처리
      • 주의 사항
        • 메시지가 크다면 가시성 제한 시간을 예측하여 넉넉하게 지정
        • 소비자 애플리케이션이 S3 버킷에 접근할 수 있어야 하므로 IAM Role 등을 이용해 권한 부여

2. SNS (Simple Notification Service)

  • 게시자 (Publisher)가 전달된 메시지를 구독자 (Subscriber)에게 전달하는 Pub/Sub 구조의 메시지 전달 서비스 (관리형 서비스)
  • 구독 유형
    • Lambda. SQS. HTTP(S), Email. SMS
  • 주제
    • 게시자가 메시지를 게시하는 대상
    • 구독자가 구독을 신청하는 대상
    • 게시자와 구독자를 연결하는 접점 (1:N)
  • SNS 특징
    • Push 방식: 폴링 아님
      • 따라서 게시자가 메시지를 게시한 이후에는 구독자에게 전달되지 않도록 막을 방법이 없음
      • 메시지가 구독자에게 전달된 후 처리가 완료되었는지를 확인할 수 없음
        • 이 문제는 SNS와 SQS를 결합하여 해결 가능
    • Fan-out 구조: 부채살 형태로 펼침 (1:N)
      • 한 게시자가 전송한 메시지를 여러 구독자에게 전달
    • 메시지를 SNS가 장시간 보관하지 않음: 지속성 없음
  • SNS와 SQS의 결합
    • SNS로 Fan-out : 1-N
    • SQS로 신뢰할 수 있는 처리

'정보보안 자격증 > AWS' 카테고리의 다른 글

AWS 21. API Gateway  (0) 2024.07.20
AWS20. Serverless  (0) 2024.07.20
AWS 18. IAM  (0) 2024.07.20
AWS17. Elasticache  (0) 2024.07.20
AWS16. Dynamo DB  (0) 2024.07.20