서비스 사이를 잇는 법, 이벤트 버스와 워크플로우
· 약 3분
서비스를 비동기로 잇는 두 도구(NATS 이벤트 버스, Temporal 워크플로우)를 살펴보고, 메시지 보관 기간을 잘못 잡아 데인 사고를 정리합니다.
지난 편까지 서비스를 나누고, 거기에 로그인을 붙였습니다. 이번에는 나뉜 서비스들이 서로 어떻게 이야기를 주고받는지를 다뤄 보겠습니다.
직접 부르면 함께 넘어집니다
서비스 A가 일을 끝낸 뒤 B에게 알려야 한다고 해봅시다. 가장 단순하게는 A가 B를 직접 호출하면 됩니다. 하지만 직접 호출에는 함정이 있습니다.
A가 B에게 전화를 걸면, B가 받을 때까지 A는 수화기를 들고 기다려야 합니다. B가 바쁘거나 잠시 죽어 있으면, A도 함께 멈춥니다. 한 서비스의 장애가 전화선을 타고 옆으로 번지는 것이지요.
게다가 "결제가 끝났다"는 사실 하나에 관심 있는 서비스가 여럿일 수 있습니다. 알림도 보내야 하고, 통계도 쌓아야 하고, 영수증도 발급해야 합니다. 그때마다 A가 세 곳에 전화를 돌리는 것은 번거롭고, 한 곳이라도 안 받으면 A가 멈춥니다.