티스토리 뷰
AWS SAA
SAA-C02 자격증 합격 후기에 이어 공부했던 내용들을 간단하게 다시 정리하고 있습니다.
이번에는 SQS를 비롯한 메시징 서비스와 CloudWatch에 대해서 간단히 짚어보겠습니다.
Amazon SQS (Simple Queue Service)
Amazon SQS는 활용도가 높은 완전관리형 메시지 대기열 서비스로, 시험에서 문제 상황에 대한 해결책으로 자주 제시되는 서비스입니다.
주로 트래픽이 많이 몰리는 상황에서, 간헐적으로 누락되는 요청을 안정적으로 받아내기 위해 특정 서비스 앞에 붙여서 사용하게 됩니다.
SQS는 기본적으로는 표준 대기열
로 동작하고, 다른 특징을 가지고 있는 FIFO 대기열
로 사용할 수도 있습니다.
둘의 차이를 명확하게 알아두는 것이 중요합니다.
- 표준 대기열
- API 작업 별 초당 무제한의 API 호출 수 지원
- 각 메시지의 최소 1회 전달을 보장합니다.
- 정확한 순서를 보장하지 않습니다.
- FIFO 대기열
- API 작업 별 초당 최대 3000개의 트랜잭션 지원
- 모든 메시지를 정확히 1회 처리함을 보장합니다.
- 정확한 순서를 보장합니다.
메시지 보존 기간
Amazon SQS는 최대 메시지 보존 기간을 넘겨 대기열에 존재해온 메시지를 삭제합니다.
기본 메시지 보존 기간(retention period)은 4일입니다.
하지만 설정을 통해 메시지 보존 기간을 60초에서 최대 14일까지로 변경할 수 있습니다.
제한 시간 초과 VS. 지연 대기열
제한 시간 초과는 대기열에서 메시지가 사용된 후에 숨겨지는 것을 말하고, 지연 대기열은 메시지가 대기열에 처음 추가될 때 메시지가 숨겨지는 것을 말합니다.
- 제한 시간 초과 (Visibility Timeout)
- 소비자가 대기열에서 메시지를 수신하고 처리하면 메시지는 계속 대기열에 남아있는 상태입니다.
- 다른 소비자가 메시지를 다시 처리할 수 없도록 하기 위해 수신 및 처리할 수 없는 기간인 Visibility Timeout을 설정합니다.
- 기본 제한 시간은 30초, 최소값은 0초, 최대는 12시간입니다.
- 지연 대기열 (Delay Queue)
- 새 메시지를 대기열로 전송하는 것을 특정 시간 동안 연기할 수 있습니다.
- 최소 지연 시간은 0초, 최대는 15분입니다.
- 표준 대기열의 경우 지연 시간 설정은 소급되지 않고(이미 대기열에 있는 메시지의 지연에는 영향이 없음), FIFO 대기열의 경우에는 소급 적용(이미 대기열에 있는 메시지의 지연에 영향을 줌)을 합니다.
데드레터큐 (DLQ)
DLQ에 제대로 처리하지 못한 메시지를 구분하여 메시지 전송 실패를 처리할 수 있습니다.
DLQ는 자동으로 생성되지는 않고, 따로 해당 대기열을 생성해야 사용할 수 있습니다.
FIFO 대기열의 DLQ는 FIFO여야 하고, 표준 대기열의 DLQ도 표준 대기열이어야 합니다.
또한 동일한 AWS 계정을 사용해야 하고, 같은 리전에 있어야 합니다.
DLQ의 보존 기간은 원래 대기열의 보존 기간을 합친 기간이기 때문에 (원래 메시지의 조회 타임스탬프 기준) DLQ의 보존 기간을 원래 대기열의 보존 기간보다 길게 설정하는 것이 좋습니다.
(ex. 원래 대기열에서 1일 경과하고 DLQ의 보존 기간이 4일인 경우, 3일 뒤에 DLQ에서 해당 메시지가 삭제됩니다.)
짧은 폴링 VS. 긴 폴링
Amazon SQS는 대기열에서 메시지를 수신하기 위해 짧은 폴링 및 긴 폴링을 제공합니다.
기본 값은 짧은 폴링입니다.
짧은 폴링은 요청 시 SQS 서버의 일부 하위 집합에서만 쿼리하여 응답에 포함할 수 있는 메시지를 빠르게 찾는 방법입니다.
이때는 쿼리에서 메시지를 찾지 못하더라도 빈 응답을 즉시 전송합니다.
긴 폴링은 요청 시 모든 서버에서 메시지를 쿼리합니다.
Amazon SQS는 적어도 하나의 사용 가능한 메시지를 수집한 후 요청에 지정된 최대 메시지 수까지 응답을 보냅니다.
Amazon SQS는 폴링 대기 시간이 만료되는 경우에만 빈 응답을 보냅니다.
긴 폴링은 빈 응답 수를 줄여서 사용 비용을 줄여줄 수 있기 때문에, ReceiveMessage
API 작업에 대한 대기 시간이 0보다 큰 경우에는 긴 폴링이 유효합니다.
긴 폴링 대기 시간의 최대값은 20초입니다.
Amazon SNS (Simple Notification Service)
Amazon SNS는 Pub/Sub 구조(구독자와 생산자 구조)에서 사용되는 메시지 전송 관리형 서비스입니다.
주로 SQS와 비교되는 서비스로 많이 나오는데, 다음과 같은 차이점만 잘 알아두시면 됩니다.
SQS는 메시지 처리 주체가 메시지를 가져와서 소비하는 폴링
모델인 반면에, SNS는 다수의 구독자들에게 푸시
매커니즘으로 메시지를 보내는 서비스입니다.
Amazon MQ
Amazon MQ는 관리형 메시지 브로커 서비스입니다.
SQS, SNS와 다른 점은 다음과 같습니다.
온프레미스 환경에서 사용하던 코드를 클라우드 환경으로 그대로 옮기고 싶거나, MQTT, STOMP 등의 다양한 프로토콜 지원이 필요한 경우에 사용합니다.
쉽게 말해 널리 사용되는 기존의 다양한 메시지 브로커 서비스와 호환되는 AWS 서비스라고 알아두시면 됩니다.
Amazon CloudWatch
Amazon CloudWatch는 실시간으로 실행 중인 애플리케이션을 여러가지 지표로 모니터링할 수 있는 도구입니다.
CloudWatch 그 자체만으로 많은 내용을 다룰 수 있지만, 시험에서는 이 서비스가 어떤 서비스인지, 어떤 지표를 확인할 수 있는지, 어떤 경보를 통해 애플리케이션의 가용성을 관리할 수 있는지 정도로만 알고 계시면 됩니다.
지표
5가지 기본 제공 지표를 중심으로 알아두시면 좋습니다.
- 기본 제공 지표
- CPU Utilization
- Network Utilization In/Out
- Disk Reads/Write
- custom 하게 만들 수 있는 지표
- Memory Utilization
- Disk Swap Utilization
- Disk Space Utilization
- Page File Utilization
- Log Collection
CloudWatch Logs
CloudWatch Logs는 애플리케이션 및 사용자 정의 로그 파일을 이용하여 모니터링을 하는 서비스입니다.
다음과 같은 경우에 사용합니다.
- 실시간 애플리케이션 및 시스템 모니터링
- 로그 장기 보존
'devOps' 카테고리의 다른 글
[AWS SAA] 7. 기타 서비스 (0) | 2021.02.14 |
---|---|
[AWS SAA] 5. RDS, Aurora, DynamoDB (0) | 2021.02.12 |
[AWS SAA] 4. CloudFront, Route 53, API Gateway (0) | 2021.02.11 |
[AWS SAA] 3. Storage Service (0) | 2021.02.10 |
[AWS SAA] 2. VPC (0) | 2021.02.09 |