Page History
Kafka스트림을 이용해 DutableState(내구성있는 상태 서비스) 개념을 액터모델프로그래밍이 아닌 방식으로 유사하게 구현해보겠습니다.
컨셉과 다른방식으로 작성된 버전은 아래 참고
CQRS에서 다루는 영속장치는 크게 다음과 같이 분류 될수 있으며 시계열 이벤트인 Jounal Type의 Kafka 토픽이벤트를 생성해 그것을 소비해 내부 상태프로그래밍을 통해
Redis Dutable State로 스트림으로 즉각변환하는 코드작성을 시도해보겠습니다.
Journal
- 이벤트 소싱(Event Sourcing) 방식을 사용합니다
- 액터의 상태 변경을 나타내는 이벤트들을 순차적으로 저장합니다
- 추가 전용(append-only) 로그 형태로 이벤트를 저장합니다
- 액터의 전체 상태 변경 이력을 보존합니다.
- 액터 복구 시 저장된 이벤트들을 재생하여 상태를 복원합니다
Snapshot
- 액터의 전체 상태를 특정 시점에 저장합니다
- 복구 시간을 최적화하기 위한 용도로 사용됩니다
- 전체 이벤트 이력을 재생하지 않고도 빠르게 상태를 복원할 수 있게 해줍니다
- Journal과 함께 사용되며, 가장 최근 스냅샷 이후의 이벤트만 재생하면 됩니다
Durable State
- 액터의 최신 상태만을 저장합니다4. 이벤트 이력을 저장하지 않고 현재 상태만 유지합니다.
- CRUD 기반 애플리케이션과 유사한 방식으로 동작합니다
- 상태 변경 시마다 전체 상태를 덮어씁니다.