어제까지는 데이터를 "어디에 저장하느냐"를 봤다. 오늘은 시스템과 시스템이 "어떻게 서로 이야기를 주고받느냐"를 본다. 작은 앱은 하나의 프로그램 안에서 함수가 함수를 직접 호출하면 된다. 그런데 주문 시스템, 결제 시스템, 알림 시스템이 따로 있는 큰 서비스에서는 이들을 직접 연결하면 하나가 죽을 때 전체가 같이 무너진다.
그래서 클라우드에서는 **비동기 메시징(asynchronous messaging)**으로 시스템을 느슨하게 연결한다. 오늘은 그 핵심 서비스 세 가지 — SQS, SNS, EventBridge — 를 개념 수준에서 구분한다.
예를 들어 주문 서비스가 결제 서비스를 직접 호출(동기 호출)한다고 하자. 결제 서비스가 잠깐 느려지거나 죽으면, 주문 서비스도 응답을 기다리다 같이 멈춘다. 두 시스템이 강하게 묶여 있는(tightly coupled) 상태다.
대신 주문 서비스가 "주문 들어왔어"라는 메시지를 중간 큐에 던져두고, 결제 서비스가 준비되면 그걸 꺼내 처리하면 어떨까. 결제가 잠깐 죽어도 메시지는 큐에 안전하게 쌓여 있고, 주문은 영향을 받지 않는다. 이것이 **느슨한 결합(loose coupling)**이다.
💡 관련 이론: 느슨한 결합은 Well-Architected Framework의 Reliability(안정성) 기둥의 핵심 원칙이다