- 시스템을 직접 호출로 묶으면 하나가 죽을 때 전체가 같이 멈춘다(강한 결합). 중간을 비동기 메시징으로 끊는 것이 느슨한 결합이다.
- SQS: 메시지 큐. 보통 1:1, 소비자가 폴링해서 꺼내간다. 버퍼링·유실 방지·순차 처리가 핵심.
- SNS: 발행/구독(pub/sub). 하나의 주제에 보내면 여러 구독자에게 동시 푸시(1:다 팬아웃).
- EventBridge: 이벤트 버스. 이벤트 내용을 보고 규칙으로 라우팅하고, 정해진 시간 실행(스케줄)도 된다.
- 실무에서는 SNS + SQS 조합(팬아웃하면서 각 큐가 안전하게 버퍼링)을 자주 쓴다.
시스템과 시스템이 "어떻게 서로 이야기를 주고받느냐"의 문제다. 작은 앱은 함수가 함수를 직접 호출하면 되지만, 주문·결제·알림 시스템이 따로 있는 큰 서비스에서는 이야기가 달라진다.
- 주문 서비스가 결제 서비스를 **직접 호출(동기 호출)**하면, 결제가 잠깐 느려지거나 죽을 때 주문도 응답을 기다리다 같이 멈춘다