
228
이벤트 기반 마이크로서비스 구축
고 그만큼 저장 공간은 다시 확보됩니다. 각 사용자마다 외부 데이터 저장소에 보관하는 집계
데이터는 다음 표와 같습니다.
키 값
userId
,
timestamp List
(
productId
)
서비스 처리 수요는 제품 사용자의 수면/기상 주기에 따라 왔다 갔다 합니다. 사용자가 대부분
잠자리에 드는 밤에는 낮보다 처리 파워가 거의 필요 없기 때문에 비용 절감 차원에서 서비스
규모를 낮추어 처리 능력을 아끼는 게 현명하겠죠.
파티션 어사이너를 이용하면 입력 이벤트 스트림 파티션을 단일 처리기 인스턴스에 재할당할
수 있으므로 모든 사용자 이벤트의 소비/처리를 조정할 수 있습니다. 단, 이벤트량이 줄어도
잠재적인 사용자 영역은 일정하므로 서비스는 모든 사용자 집계에 완전히 접근할 수 있는 권한
이 필요합니다. 처리 규모를 줄여도 서비스가 유지해야 할 상태 크기에는 아무런 영향을 미치
지 않는 것입니다.
낮에는 처리 인스턴스를 추가해서 늘어난 이벤트 부하를 처리하면 됩니다. 물론 데이터 저장소
를 조회하는 비율도 함께 증가하겠지만 캐싱, 파티셔닝, 배칭 등의 기법을 이용하면 처리 요건
자체가 선형적으로 증가하는 것에 비해 부하를 가볍게 유지할 수 있습니다.
TIP
구글, 아마존, 마이크로소프트 같은 서비스 공급사는 이런 패턴에 딱