메시지 순서가 업무 결과를 바꾸지 않고 중복 처리를 견딜 수 있으면 Standard가 후보입니다. 주문·계정처럼 같은 대상 안의 순서가 중요하면 FIFO와 메시지 그룹을 검토하세요. FIFO를 선택해도 소비자의 재처리와 데이터베이스 부수 효과까지 자동으로 한 번만 실행된다고 가정하면 안 됩니다.
혼동의 원인: 전달 순서와 업무 완료를 같은 것으로 본다
큐에 들어간 순서, 소비자가 받은 순서, 데이터베이스에 반영한 순서는 별개입니다. 예를 들어 한 주문의 생성과 취소가 뒤바뀌면 문제가 생길 수 있지만 서로 다른 주문의 처리 순서는 중요하지 않을 수 있습니다. 큐 이름을 고르기 전에 이 경계를 정해야 합니다.
| 조건 | 후보 | 별도 검증 |
| 독립 작업 | Standard | 중복·순서 변화 |
| 대상별 순서 필요 | FIFO | 그룹 경계 |
| 외부 API 부수 효과 | 둘 다 | 업무 멱등성 |
| 긴 처리 시간 | 둘 다 | 타임아웃·복구 |
1. 순서가 필요한 대상을 적는다
주문별 순서가 필요하면 같은 주문의 이벤트에 같은 그룹 식별자를 부여하는 설계를 검토합니다. 모든 주문을 하나의 그룹에 넣으면 관계없는 작업까지 같은 순서 제약을 공유합니다. 반대로 메시지마다 다른 그룹을 쓰면 그 사이의 순서를 기대할 수 없습니다. 그룹을 나누는 기준은 작업량만이 아니라 업무상 함께 움직여야 하는 범위입니다.
이미지 변환처럼 각 파일의 작업이 독립적이라면 Standard의 순서 특성이 요구에 맞는지 확인합니다. Standard에서는 동일 메시지가 다시 전달되거나 순서가 달라질 수 있으므로 작업 식별자로 결과를 확인하는 절차가 필요합니다.
2. 중복 방지와 처리 확인을 분리한다
메시지 수신 후 데이터베이스 반영은 성공했는데 삭제 요청 전에 소비자가 종료되는 상황을 시험 계획에 넣으세요. visibility timeout이 지나면 다시 처리될 수 있습니다. 업무 식별자를 기준으로 이미 반영한 결과인지 확인하고, 확인과 변경 사이의 경쟁 상태도 데이터베이스 트랜잭션 등으로 설계해야 합니다.
반대로 업무 처리 전에 메시지를 지우면 작업이 유실될 위험이 있습니다. 큐 삭제 성공을 주문 처리 성공으로 기록하지 말고 실제 업무 반영 후 처리 완료를 확인합니다. 외부 API 호출이 포함되면 해당 API의 멱등성 기능과 실패 응답의 의미도 따로 확인합니다.
3. 도입 전 작은 시험표를 만든다
정상 처리, 동일 업무 이벤트 재전송, 처리 중 소비자 종료, 처리 시간이 visibility timeout을 넘는 경우를 나눕니다. 각 경우에 업무 결과가 몇 번 반영되는지, 같은 그룹의 다음 작업이 언제 진행되는지, 실패 작업을 어떻게 복구하는지 기록하세요. 처리량 숫자만으로 선택하지 않습니다.
비용은 예상 요청·재시도·폴링·메시지 크기와 대상 리전의 실제 요금표를 사용해 산정합니다. 이 글은 요금 견적이나 처리량 보장을 제공하지 않습니다. 기존 큐를 비우거나 삭제하는 전환은 별도 승인과 미처리 메시지 보존 계획이 필요합니다.
FAQ
FIFO면 데이터베이스 중복 반영이 없어지나요? 소비자 장애와 부수 효과는 별도 검증해야 합니다.
한 그룹만 사용하면 간단한가요? 순서가 필요 없는 작업까지 함께 묶을 수 있으므로 실제 업무 경계를 먼저 확인하세요.
운영 큐에서 장애 시험을 해도 되나요? 승인된 시험 큐와 가상 데이터로 검증하고 기존 메시지는 보존합니다.
공식 출처와 관련 글
자료 확인일: 2026년 10월 19일. 공식 문서 기반 설명이며 실제 서비스·명령 실행 시험은 수행하지 않았습니다. 설치 버전과 리전·지원 범위는 적용 전에 확인하세요.
관련 글: 예약 작업의 재시도와 중복 실행 기준
적용 전 원본 설정을 보존하고 승인된 시험 범위에서 결과를 확인하세요.

'소프트웨어개발' 카테고리의 다른 글
| CloudFront Functions와 Lambda@Edge 선택: 네트워크·본문·실행 시점 확인 (0) | 2026.10.21 |
|---|---|
| Linux 용량이 남는데 No space left on device: inode와 실제 저장 경로 확인 (0) | 2026.10.19 |
| Git detached HEAD 해결: 브랜치 이동 전에 커밋을 보존하는 순서 (0) | 2026.10.19 |