시스템이 직접 연결되면 어떤 문제가 생길까요?
상상해보세요. 커피숍에서 손님이 주문하면 직원이 직접 주방에 뛰어가서 전달하고, 주방이 바쁘면 주문 자체가 멈추는 상황을요. 한 곳이 막히면 전체가 멈추는 구조입니다.
AWS 시스템도 마찬가지입니다. 주문 시스템과 결제 시스템이 직접 연결되어 있으면, 결제 서버가 잠깐 느려질 때 주문 전체가 멈춥니다. 이 문제를 해결하기 위한 개념이 바로 디커플링(decoupling)입니다. 시스템 사이에 중간 창구를 두어서, 한 쪽이 느려져도 다른 쪽은 계속 돌아가게 만드는 것입니다.
---
우체국으로 이해하는 SQS와 SNS
AWS에는 이 중간 역할을 해주는 두 가지 대표 서비스가 있습니다.
Amazon SQS를 우체통이라고 생각해보세요. 편지를 쓴 사람은 우체통에 넣고 돌아갑니다. 받는 사람은 자기가 편한 시간에 우체통을 열어서 가져갑니다. 보내는 사람과 받는 사람이 동시에 있을 필요가 없습니다. 1대1 전달 방식입니다.
Amazon SNS는 라디오 방송과 같습니다. 방송국(SNS)이 한 번 송출하면, 라디오를 켜둔 사람 모두가 동시에 듣습니다. 1명이 보내고 여러 명이 동시에 받는 방식입니다.
---
Amazon SQS — 메시지 대기열 서비스
SQS는 메시지를 잠시 보관해두었다가 처리하는 서비스입니다. 실제 사용 예시를 들어보겠습니다.
쇼핑몰에서 블랙프라이데이 행사를 진행합니다. 갑자기 주문이 1만 건 들어옵니다. 결제 서버는 초당 100건만 처리할 수 있습니다. SQS가 없다면 9,900건의 주문이 오류가 납니다. SQS가 있다면 1만 건의 주문이 대기열에 쌓이고, 결제 서버는 자기 속도대로 차분히 처리합니다. 한 건도 잃지 않습니다.
SQS에는 두 가지 종류가 있습니다.
| 종류 | 특징 | |------|------| | Standard 큐 | 처리 속도가 매우 빠름. 메시지 순서가 꼭 맞지 않아도 되는 경우 | | FIFO 큐 | 보낸 순서 그대로 처리. 순서가 중요한 금융 거래 등에 사용 |
---
Amazon SNS — 한 번에 여러 곳에 전달
SNS는 하나의 메시지를 여러 수신자에게 동시에 보내는 서비스입니다.
예를 들어, 새 주문이 들어왔을 때 SNS가 동시에 세 군데에 알립니다. 재고 시스템에는 재고를 줄이라고, 배송 시스템에는 포장을 시작하라고, 고객에게는 이메일로 주문 확인 메시지를 보냅니다. 이 세 가지가 동시에 처리됩니다.
SNS는 이메일, SMS 문자, 앱 알림, Lambda 함수, SQS 대기열 등 다양한 곳으로 메시지를 보낼 수 있습니다.
---
SQS와 SNS를 함께 쓰는 이유
실제 현업에서는 SNS와 SQS를 함께 씁니다. SNS가 메시지를 여러 SQS 대기열에 동시에 전달하고, 각 SQS 대기열은 자기 속도로 처리합니다. 이 조합을 팬아웃(Fanout) 패턴이라고 부릅니다.
---
그 밖에 알아두면 좋은 통합 서비스들
| 서비스 | 한 줄 설명 | |--------|-----------| | Amazon EventBridge | 이벤트 버스. AWS 서비스끼리 특정 사건이 발생했을 때 자동으로 다른 서비스에 알림 | | AWS Step Functions | 여러 단계의 작업을 순서대로 연결하는 워크플로 관리 서비스 | | Amazon API Gateway | 앱과 백엔드 서버 사이의 문. REST API를 만들고 관리 | | Amazon CloudWatch | AWS 전체 리소스의 상태를 모니터링하고 이상이 생기면 알림 | | AWS X-Ray | 앱이 느릴 때 어디서 느린지 추적하는 디버깅 도구 |
---
SQS vs SNS 한눈에 비교
| 항목 | SQS | SNS | |------|-----|-----| | 전달 방식 | 1대1 (생산자 → 소비자) | 1대다 (발행자 → 여러 구독자) | | 처리 방식 | 소비자가 꺼내서 처리 | 구독자에게 즉시 푸시 | | 주요 용도 | 작업 버퍼링, 속도 조절 | 동시 다발 알림, 팬아웃 |
---
시험 핵심 정리
시험에서 이 서비스들이 어떤 상황에 나오는지 기억하세요.
"메시지 대기열, 비동기 처리" — Amazon SQS "하나의 메시지를 여러 곳에 동시 전달" — Amazon SNS "이벤트 발생 시 다른 서비스 자동 트리거" — Amazon EventBridge "여러 단계 작업을 순서대로 연결" — AWS Step Functions "REST API를 만들고 관리" — Amazon API Gateway "AWS 리소스 상태 모니터링 및 알림" — Amazon CloudWatch "분산 앱에서 병목 지점 추적" — AWS X-Ray 디커플링이란 시스템 간 직접 연결을 없애고 중간 서비스를 두어 안정성과 확장성을 높이는 것