41
1
장
왜 이벤트 기반 마이크로서비스인가?
1.4.5
상충되는 압력
진퇴양난에 빠졌습니다. 모든 데이터를 한 서비스의 로컬에 두고 새 비즈니스 기능을 신속 용
이하게 추가하고 싶지만 구현 통신 구조를 확장해야 하는 비용을 부담해야 합니다. 팀 규모가
커지면 결국 언젠가는 비즈니스 요건을 새 팀에 재배정하고 비즈니스 통신 구조를 분할할 수밖
에 없겠지만, 구현 통신 구조는 현재 모습에서 도저히 재배정할 수가 없으니 여러 컴포넌트로
적절히 세분화해야 할 것입니다. 어느 쪽을 택하든 확장은 안 되니 각각 다른 식으로 처리해야
합니다. 이 모든 문제의 근원은 뭘까요? 구현 통신 구조 간의 데이터 통신 수단이 취약하고 제
대로 정의되지 않은 탓입니다.
1.5
이벤트 기반 통신 구조
이벤트 기반 통신은 기존 구현/데이터 통신 구조의 대안입니다. 요청-응답 기반 통신을 한꺼
번에 대체할 수는 없지만 완전히 다른 서비스 간 통신 수단을 제시합니다. 이벤트 스트리밍 방
식의 데이터 통신 구조에서는 데이터를 생산/소유하는 것과 데이터에 접근하는 행위가 철저히
분리되기 때문에 서비스는 더 이상 직접 요청-응답
API
에 얽매이는 일 없이 이벤트 스트림 내
부에 정의된 이벤트 데이터를 매개로 소통합니다 (이 프로세스는
3
장에서 자세히 다룹니다 ).
프로듀서는 그저 자신이 맡은 이벤트 스트림에 잘 정의된 데이터를 생산하는 일만 책임지면 됩
니다.
1.5.1
이벤트는 통신의 근간이다
공유 데이터는 모조리 이벤트 스트림 세트에 발행함으로써 조직에서 일어난 모든 일은 ...