(10)SQS, Kinesis

JY Kim·2023년 3월 27일
0

AWS SA STUDY GUIDE

목록 보기
9/9
post-thumbnail

안녕하세요, levin입니다.
AWS study 아홉번 째 시간 SQS,Kinesis 에 대한 내용입니다.

Simple Queue Service

애플리케이션을 구성하는 다양한 컴포넌트가 서로에게 메시지를 전송할 수 있도록 돕는 관리형 메시지 서비스다. SQS는 고가용성 및 고탄력성을 제공하므로, 수십만 건의 메시지를 불과 수초만에 처리할 수 있다.

[Queues]

SQS는 처리해야 할 메시지를 담는 큐를 생성하며, 큐에 메시지를 넣는 프로듀서 컴포넌트와 큐에 있는 메시지를 읽는 컨슈머 컴포넌트로 구성된다. 메시지의 최대 크기는 256KB이며, 기본적인 메시지 처리 방식은 다음과 같다.

  • 프로듀서가 SendMessage 액션을 통해 큐에 하나 이상의 메시지를 넣는다. 큐에 입력된 메시지는 이동중 메시지 또는 인플라이트 메시지라 부른다.
  • 컨슈머가 큐에 담긴 새 메시지를 처리할지 확인한다. ReceiveMessage 액션을 통해 큐에서 하나 이상의 메시지를 소비한다.
  • 컨슈머는 메시지를 처리한 뒤 DeleteMessage 액션을 통해 큐에서 삭제한다.

[가시성 중지기간]

컨슈머 객체가 큐에서 메시지를 확인하더라도 메시지는 큐에 그대로 유지한다. 읽은 메시지의 삭제 여부는 컨슈머가 결정할 수 있다. 특정 컨슈머 객체가 메시지를 확인 하면, SQS는 이후 일정 시간동안 해당 메시지를 다른 컨슈머가 확인할 수 없게 하며, 이를 가시성 중지기간이라 부른다. 이는 동일한 메시지를 다른 컨슈머가 중복해서 처리하는 일을 막기 위한 조치인데 이 기능이 항상 바람직한 결과만 가져오지는 않는다. 기본 가시성 중지기간은 30초이며, 최소 0초에서 최대 12시간까지 설정할 수 있다.

[보유기간]

메시지는 큐에 영구적으로 있을 수 있다. 메시지의 기본 보유기간은 4일이며, 최소 1분에서 최대 14일까지 설정할 수 있다.

[딜레이 큐와 메시지 타이머]

큐에 메시지를 넣을 때 큐마다 지연시간을 설정할 수 있다. 기본 큐별 딜레이 시간은 0초, 최대 15분까지 설정 가능하다. 개별 메시지는 메시지 타이머를 이용해 지연시간을 설정 가능하다. 메시지 타이머를 설정한 경우 딜레이 큐는 무시된다.

[큐 타입]

큐 기반 애플리케잇연의 경우 큐의 성능 또는 작동 방식에 따라 애플리케이션의 성능도 영향을 받게 된다. 일부 애플리케이션의 경우 초당 수천개의 메시지를 처리해야 하며, 메시지 도착 순서대로 메시지를 처리해야 하는 경우도 있다.

  • 스탠다드 큐 : 거의 무제한의 처리성능을 제공하며, 신속하게 다수의 메시지를 처리한다. 메시지는 순서와 무관하게 전달되고, 때론 동일한 메시지가 중복해서 전달되기도 한다. 최대 12만개의 인플라이트 메시지를 처리할 수 있다.
  • FIFO 큐 : 초당 3천개의 메시지를 전달할 수 있다. 메시지는 도착순서대로 큐에 전달되며, 각 메시지는 단 한번만 기록되므로 중복 메시지 문제를 피할 수 있다. 약 2만 개의 인플라이트 메시지를 처리할 수 있다.

[폴링]

큐에서 메시지를 확인할 때 메시지 도착 여부 조회 옵션인 숏폴링 또는 롱폴링 중 하나를 선택할 수 있다. 기본값인 숏폴링은 일부 메시지 누락이 있더라도 즉시 메시지를 확인해야 할 때 사용하고, 롱폴링은 약간의 지연이 있더라도 큐에있는 모든 메시지를 정확하게 확인해야 할 때 사용된다.

[데드레터 큐]

하나의 컨슈머가 메시지를 처리하려 했지만 실패하고, 또 다른 컨슈머가 또 해당 메시지를 처리하려다 실패하는 상황이 발생할 수 있다. 이러한 메시지는 큐에서 벗어날 수 없으며, 이를 데드레터라고 한다. 이런 문제를 처리하기 위해 SQS를 통해 자동으로 이와 같은 메시지를 소스 큐에서 꺼내서 데드레터 큐에 따로 보관하도록 할 수 있다.

Kinesis

Amazon Kinesis는 스트리밍 데이터의 수집, 처리, 저장, 전송을 위한 서비스 모음이며, 수천 개의 소스로부터 초당 수 기가바이트 수준으로 유입되는 오디오, 비디오, 애플리케이션 로그, 원격측정 데이터 등 다양한 스트리밍 데이터를 처리할 수 있다.

[Kinesis Video Streams]

웹캠, 보안용 카메라, 스마트폰 카메라 등 다양한 스트리밍 비디오 데이터를 거의 무한대로 처리 및 분류할 수 있는 실시간 비디오 처리 서비스이며, 다음과 같은 목적으로 자주 활용된다.

  • 이미지 인식 등 컴퓨터 비전 애플리케이션
  • 스트리밍 비디오 애플리케이션
  • 양방향 비디오 회의 애플리케이션

[Kinesis Data Streams]

프로듀서가 생성한 데이터의 수집, 처리, 저장을 위한 스트리밍 데이터 파이프라인 서비스이며, MapReduce와 같은 빅데이터 분석 애플리케이션이 컨슈머가 될 수 있다. Kinesis Data Streams가 신속하게 처리 및 저장할 수 있는 주요 바이너리 데이터 타입은 다음과 같다.

  • 애플리케이션 로그
  • 주식 거래 데이터
  • 소셜 미디어 피드
  • 금융 거래 데이터
  • 위치 추적 데이터

[Kinesis Data Firehose]

스트리밍 데이터를 수집하고, 목적지로 전송하기 전 해당 데이터를 변환한다. 데이터 변환 작업에는 데이터 정련, 다른 포맷으로의 변환 등이 포함된다. 예를 들어, 데이터를 Hadoop에 전송하기 전 JSON 포맷 데이터를 Apache Parquet으로 변환할 수 있다. Kinesis Data Firehose는 Lambda 함수를 이용해 데이터를 변환하며, 커스텀 변환 작업의 유연성을 제공한다. Kinesis Data Firehose 의 원본 데이터는 변환 작업 실패에 대비해 S3에 전송할 수 있으며, 전송 데이터의 버퍼 수준 또한 설정할 수 있다.

0개의 댓글