home
SAA-C03

[Compute] SQS 컨셉 노트

시험 빈출 SQS 컨셉 노트

Amazon SQS for SAA-C03

One-Line Summary

SQS는 메시지를 큐에 쌓아두고 소비자가 자기 속도로 꺼내 처리하게 하는 완전관리형 메시지 큐다. 생산자와 소비자를 느슨하게 결합(decoupling) 하고, 갑작스러운 트래픽을 큐가 흡수(buffer)해 시스템을 안정시킨다. 메시지가 손실되면 안 되고 순서/정확히 한 번 처리가 중요할 때 핵심 서비스다.

Why It Exists

생산자(요청을 만드는 쪽)와 소비자(처리하는 쪽)를 직접 연결하면, 소비자가 느리거나 죽으면 생산자도 막히고 요청이 유실된다.

SQS는 이 둘 사이에 큐를 두어 서로를 직접 몰라도 되게 만든다.

직접 연결
  Producer -> Consumer
  소비자가 느리거나 죽으면 요청 유실/블로킹, 함께 확장/축소해야 함

SQS 큐 사용
  Producer -> [SQS 큐] -> Consumer
  큐가 메시지를 보관 -> 소비자는 자기 속도로 처리, 각자 독립 확장

시험 감각:

"두 컴포넌트를 분리(decouple)하라", "메시지가 유실되면 안 된다", "트래픽 급증을 완충하라" = SQS.

Abbreviations

약어풀네임의미
SQSSimple Queue Service완전관리형 메시지 큐 서비스
FIFOFirst-In-First-Out먼저 넣은 메시지를 먼저, 정확히 한 번 처리하는 큐
ProducerProducer큐에 메시지를 넣는 쪽
ConsumerConsumer큐에서 메시지를 꺼내 처리하는 쪽
DLQDead-Letter Queue반복 처리에 실패한 메시지를 따로 모으는 큐
Visibility TimeoutVisibility Timeout소비자가 꺼낸 메시지를 다른 소비자에게 잠시 숨기는 시간
PollingPolling소비자가 큐에 메시지가 있는지 물어보며 가져오는 방식

결합을 어떻게 느슨하게 하나 (Decoupling)

핵심은 생산자와 소비자가 서로를 직접 호출하지 않고, 오직 큐만 바라본다는 점이다.

항목직접 연결SQS로 분리
서로에 대한 의존소비자 주소/상태를 알아야 함큐만 알면 됨
소비자가 다운되면요청 유실/생산자 블로킹메시지는 큐에 남아 있다가 나중에 처리
확장함께 확장해야 함각자 독립적으로 확장/축소
처리 속도 차이빠른 생산자가 느린 소비자를 압도큐가 완충, 소비자는 자기 속도로 처리
Producer는 "큐에 넣었다"까지만 책임
Consumer는 "큐에서 꺼내 처리"만 책임
-> 한쪽이 느리거나 죽어도 다른 쪽은 계속 동작

왜 트래픽 견딤성이 올라가나 (Buffering)

트래픽이 순간적으로 폭증해도 메시지는 일단 큐에 쌓인다. 소비자는 처리 가능한 만큼만 꺼내 가므로, 급증한 요청이 소비자(또는 DB)를 직접 때려 과부하로 죽는 일을 막는다.

급증하는 요청 -> [SQS 큐가 흡수] -> 소비자는 일정한 속도로 처리
                  (spike를 평탄화 = load leveling)
  • 큐가 완충 버퍼 역할 → 소비자/백엔드가 순간 폭주에 무너지지 않음
  • 소비자를 Auto Scaling으로 붙이면 큐 길이에 따라 대수를 늘려 밀린 메시지를 소화
  • 시험에서 "smooth out traffic spikes", "buffer requests" 표현이 나오면 SQS

Standard vs FIFO

구분Standard QueueFIFO Queue
처리량사실상 무제한, 매우 높음초당 처리량 제한 있음 (기본 300 msg/s, batching 시 3,000)
순서보장 안 됨 (best-effort)보낸 순서 그대로 보장
전달 횟수최소 1회 (드물게 중복 가능)정확히 한 번 (exactly-once)
언제 쓰나높은 처리량 필요, 순서가 중요치 않음순서 중요, 중복 처리하면 안 됨
대표 예시대량 이미지 썸네일 작업, 로그 처리금융 거래, 주문 처리, 재고 차감

시험 감각:

"순서가 중요하다 / 정확히 한 번 처리해야 한다" = FIFO. "최대 처리량 / 순서 상관없음" = Standard.

처리 흐름의 핵심 용어

개념의미왜 중요한가
Visibility Timeout소비자가 메시지를 꺼내면 그 시간 동안 다른 소비자에게 숨김두 소비자가 같은 메시지를 중복 처리하는 것을 방지
메시지 삭제처리 성공 후 소비자가 명시적으로 삭제해야 큐에서 사라짐처리 중 소비자가 죽으면 타임아웃 후 다시 보이게 되어 유실 방지
DLQ여러 번 처리 실패한 메시지를 따로 보관문제 메시지가 큐를 막지 않게 격리·분석
Long Polling메시지가 올 때까지 잠시 기다렸다 응답빈 응답을 줄여 비용·불필요한 호출 감소

큐 깊이 기반 Auto Scaling (빈출)

밀린 메시지(backlog)를 빨리 처리하려면, 큐 길이에 따라 소비자(EC2/ECS) 대수를 자동으로 늘렸다 줄인다. CloudWatch 지표를 기준으로 Auto Scaling 정책을 건다.

큐에 메시지가 쌓임(backlog 증가)
  -> CloudWatch: ApproximateNumberOfMessagesVisible 상승
  -> Auto Scaling: 소비자 인스턴스/태스크 증설
  -> 메시지 소진되면 다시 축소
항목내용
대표 지표ApproximateNumberOfMessagesVisible (대기 중 메시지 수)
권장 지표인스턴스당 처리량 기준 Backlog per instance (Target Tracking)
시험 키워드"process backlog", "scale workers based on queue length"

시험 감각:

"밀린 큐를 빨리 비우게 워커를 확장하라" = 큐 깊이 지표 기반 Auto Scaling.

메시지 제약과 큰 메시지 처리 (빈출)

항목비고
최대 메시지 크기256 KB초과 시 아래 방법
큰 메시지(>256KB)S3에 본문 저장 + SQS Extended Client큐에는 S3 참조만 넣음
메시지 보존 기간기본 4일, 최대 14일이 기간 지나면 자동 삭제
Delay Queue / Message Timer메시지를 일정 시간 뒤에 보이게 함처리 지연이 필요할 때

시험 감각:

"256KB보다 큰 메시지를 큐로 보내야 한다" = S3 + SQS Extended Client.

SQS vs SNS vs 비교 감각

구분SQSSNS
모델큐 (pull, 1:1 소비)발행/구독 (push, 1:N 팬아웃)
소비 방식소비자가 꺼내 감(polling)구독자에게 밀어 보냄
대표 키워드decouple, buffer, process in orderfan-out, notify many subscribers
조합SNS → 여러 SQS로 팬아웃(fan-out 패턴)도 자주 출제

Common Wrong Directions

오답 방향왜 부족한가
순서·정확히 한 번이 필요한데 Standard 선택순서/중복 보장은 FIFO
최대 처리량이 목적인데 FIFO 선택FIFO는 처리량 제한 → 순서 불필요하면 Standard
여러 시스템에 동시에 알림을 뿌려야 하는데 SQS1:N 팬아웃은 SNS (또는 SNS+SQS)
트래픽 급증 완충을 Auto Scaling만으로 해결스케일링에도 시간 필요 → 큐로 요청을 버퍼링해 완충
소비자가 죽으면 메시지 유실이라고 생각삭제 전까지 큐에 남고 Visibility Timeout 후 재노출

Exam Triggers

문제에서 이런 표현이 나오면떠올릴 것
"decouple components", "loosely coupled"SQS
"buffer requests", "smooth out spikes", "load leveling"SQS
"messages must not be lost", "process reliably"SQS
"process in exact order", "exactly-once", "no duplicates"SQS FIFO
"maximum throughput", "order doesn't matter"SQS Standard
"fan-out to multiple subscribers", "notify many systems"SNS (필요 시 SNS+SQS)
"handle failed messages separately"DLQ
"process backlog", "scale consumers by queue length"큐 깊이 기반 Auto Scaling (ApproximateNumberOfMessagesVisible)
"message larger than 256 KB"S3 + SQS Extended Client
"delay message delivery"Delay Queue / Message Timer

Memory Sentence

SQS는 큐로 생산자·소비자를 분리하고 트래픽 급증을 완충한다. 순서·정확히 한 번이 필요하면 FIFO, 최대 처리량이 필요하고 순서 상관없으면 Standard. 1:N으로 여러 곳에 알림을 뿌리는 건 SNS.

References

댓글

아직 댓글이 없습니다.