204
이벤트 기반 마이크로서비스 구축
9.1.1
엄격한 경계 콘텍스트의 멤버십 관리
솔루션을 구성하는 함수와 내부 이벤트 스트림은 반드시 어떤 경계 콘텍스트에 속해야 합니다.
그래야 함수, 데이터의 소유자가 분명하게 식별되겠죠. 대규모 마이크로서비스로 솔루션을 구
축할 경우에는 기능, 서비스, 이벤트 스트림에 관한 소유권 문제를 잘 따져봐야 합니다. 마이크
로서비스는 대부분 경계 콘텍스트와
1
:
1
매핑되며, 여러 함수를 하나의 경계 콘텍스트에서 사
용할 수도 있기 때문에
n
:
1
매핑도 드물지 않습니다. 함수를 너무 잘게 쪼개면 경계선이 흐려
질 수 있으므로 어떤 함수가 어느 경계 콘텍스트에 속하는지 제대로 분간해야 합니다.
경계 콘텍스트를 함수로 관리하는 몇 가지 실용적인 방법을 소개합니다.
●
데이터 저장소를 외부 콘텍스트에서 보이지 않게 보호한다.
●
다른 콘텍스트와 결합할 경우, 표준 요청-응답 또는 이벤트 기반 인터페이스를 사용한다.
●
어떤 함수가 어떤 콘텍스트에 속하는지 (함수와 제품의
1
:
1
매핑 )를 나타낸 메타데이터를
엄격하게 관리한다.
●
경계 콘텍스트에 매핑된 리포지터리 내부에서 함수 코드를 관리한다.
9.1.2
처리 완료 이후에만 오프셋 커밋
오프셋은 함수가 시작되거나 처리가 완료될 때 커밋됩니다. 주어진 이벤트 또는 이벤트 배치가
처리 완료될 이후에만 오프셋을 커밋하는 것이
FaaS
의 모범 사례입니다. 함수 기반 솔루션에
서 오프셋을 처리하는 방법은 중요하므로 하나씩 자세히 살펴보겠습니다.
함수 처리 완료 후 커