AWS 메시징 서비스로 디커플링하기
AWS에서 애플리케이션 개발하기
Ricardo Sueiras
Principal Technologist
Amazon SQS 기본 개념
- 비동기 메시징을 위한 관리형 메시지 큐입니다.
- 생산자가 큐에 메시지를 보냅니다.
- 소비자가 큐에서 메시지를 가져옵니다.
- 소비자가 가져갈 때까지 메시지가 보관됩니다.
- 보존 기간: 기본 4일, 최대 14일.
- 소비자는 큐를 폴링하며 자신의 속도로 처리합니다.
메시지 가시성
- 소비자가 메시지를 읽으면 해당 메시지는 보이지 않게 됩니다.
- 가시성 제한 시간이 숨겨지는 기간을 제어합니다.
- 처리에 실패하고 메시지가 삭제되지 않으면:
- 메시지가 다시 보이게 됩니다.
- 다시 처리할 수 있습니다.
- 가시성 제한 시간: 기본값 30초.
- 최대 가시성 제한 시간은 12시간입니다.
메시지 크기
- 메시지 크기는 최대 256KB까지 가능합니다.
- SQS Extended Client 라이브러리로 더 큰 메시지를 사용할 수 있습니다.
- 대용량 페이로드는 Amazon S3에 저장합니다.
- 메시지 페이로드에는 S3 포인터를 전송합니다.
짧은 폴링
- 폴링 전략은 비용과 효율성에 영향을 줍니다.
- 짧은 폴링이 기본값입니다.
- SQS 서버의 일부만 조회하고 즉시 응답합니다.
- 메시지가 있어도 빈 응답이 올 수 있습니다.
- API 호출이 늘어나 비용이 높아집니다.
긴 폴링
- 긴 폴링은 모든 SQS 서버를 조회합니다.
- 메시지를 받을 때까지 최대 20초 대기합니다.
- 불필요한 빈 응답을 없앱니다.
- API 호출을 줄여 비용을 낮춥니다.
표준 큐
- SQS는 두 가지 유형의 큐를 제공합니다.
- 표준 큐:
- 최소 한 번 전달.
- 최선 노력 순서 보장.
- 거의 무제한에 가까운 처리량.
FIFO 큐
- FIFO 큐:
- 정확히 한 번 처리.
- 엄격한 메시지 순서 보장.
- 내장된 메시지 중복 제거.
- 기본 300 TPS
- 배치 처리 시 3,000까지, 고처리량 모드 사용 시 그 이상으로 증가.
- 사용 사례에 따라 큐 유형을 선택하세요:
- 규모와 처리량에는 표준 큐.
- 순서와 중복 제거에는 FIFO 큐.
문제 메시지 처리하기
- 데드 레터 큐(DLQ)는 처리에 실패한 메시지를 저장합니다.
- 메시지가
maxReceiveCount를 초과하면 DLQ로 이동합니다.
- 이를 통해 문제 메시지를 무한정 재시도하지 않습니다.
- DLQ는 원본 큐와 동일한 유형이어야 합니다.
- 메시지를 원본 큐로 다시 옮겨 재처리할 수 있습니다.
큐 보안
- 기본적으로 HTTPS를 사용해 전송 중 암호화합니다.
- AWS KMS를 사용한 저장 데이터의 서버 측 암호화.
- AWS Encryption SDK로 클라이언트 측에서 페이로드를 암호화할 수 있습니다.
- IAM 정책이 SQS 큐 접근 권한을 관리합니다.
- 리소스 기반 정책으로 큐 단위의 세밀한 제어가 가능합니다.
Amazon SNS 기본 개념
- 관리형 발행-구독(pub/sub) 서비스입니다.
- 푸시 모델을 사용합니다.
- 발행자가 토픽으로 메시지를 보냅니다.
- 소비자는 토픽을 구독합니다.
- 구독자는 수동적으로 메시지를 받습니다.
확장성
- 토픽당 최대 1,250만 개의 구독을 지원합니다.
- 메시지 보존 없음:
- 구독자를 사용할 수 없으면 메시지가 유실됩니다.
- 메시지 유실을 막으려면 DLQ나 내구성 있는 구독자(SQS 큐)를 사용하세요.
- 하나의 이벤트를 여러 소비자에게 분산 전달합니다(팬아웃).
메시지 필터링
- SNS는 메시지 필터링 정책을 지원합니다.
- 구독자는 관심 있는 메시지만 받습니다.
- 필터가 없으면 구독자는 모든 메시지를 받습니다.
- 필터 정책은 토픽이 아닌 구독 수준에서 적용됩니다.
필터 로직과 평가
- 필터는 JSON으로 정의됩니다.
- 메시지 속성과 비교하여 일치 여부를 확인합니다.
- 여러 조건은 AND로 평가됩니다.
- 한 조건 내 여러 값은 OR로 평가됩니다.
- 다양한 필터 연산을 지원합니다:
- 정확한 문자열, 숫자, 접두사, 제외, 범위 일치.
SNS 보안
- 기본적으로 HTTPS를 사용해 전송 중 데이터를 암호화합니다.
- AWS KMS를 사용한 저장 데이터의 서버 측 암호화.
- SNS가 KMS 키를 사용하도록 권한을 부여하세요.
- IAM 정책이 접근 제어를 제공합니다.
- 토픽에 발행하거나 구독할 수 있는 권한을 관리합니다.
연습해 봅시다!
AWS에서 애플리케이션 개발하기
Preparing Video For Download...