
184
2
부
이벤트 기반 아키텍처
작업을 메인 스레드 밖으로 빼야 한다는 요구 사항이 있어도 여전히 이벤트 기반의 비유를 사용
할 수 있다. 이를 위해서는
외부 이벤트
external
event
를 사용하는 걸 권한다. [표
11
-
1
]에 더 자세한
비교가 있지만, 근본적으로 여러분이 중앙 집중 스토어에 이벤트를 영속화하는 방법을 구현하면
다른 컨테이너나 마이크로서비스가 이 중앙 집중 이벤트 스토어를 구독할 수 있다. 그 후에는 한
프로세스나 서비스 내에서 작업 단위별로 책임을 분산하기 위해 이벤트를 사용한다는 개념을 그
대로 여러 프로세스에 걸친 이벤트에 적용할 수 있다. 이때 각 프로세스는 같은 서비스 내 다른
컨테이너이거나 완전히 다른 마이크로서비스일 수도 있다.
이런 접근 방법에 따르면 작업을 분배하기 위한
API
는 이벤트 클래스가 되거나 이벤트 클래스에
대한
JSON
표현이 될 수 있다. 이벤트 클래스나
JSON
을 작업 분배용
API
로 사용하면 작업을
위임할 대상을 폭넓게 고를 수 있다. 예를 들어 작업을 맡을 프로세스가 꼭 파이썬 서비스일 필
요가 없다. 셀러리의 작업 분배
API
는 근본적으로 ‘함수 이름과 인수’로 이루어지며, 이런 방식
은 좀 더 제한적이고 파이썬 안에서만 통하는 방식이다.
8.4
첫 번째 선택지: 서비스 계층이 모델에서 이벤트를 ...