CQRS에서 이용할수 있는 이벤트 스토어의 유형은 다음과같습니다.
Journal
이벤트 소싱(Event Sourcing) 방식을 사용합니다
액터의 상태 변경을 나타내는 이벤트들을 순차적으로 저장합니다
추가 전용(append-only) 로그 형태로 이벤트를 저장합니다
액터의 전체 상태 변경 이력을 보존합니다.
액터 복구 시 저장된 이벤트들을 재생하여 상태를 복원합니다
Snapshot
액터의 전체 상태를 특정 시점에 저장합니다
복구 시간을 최적화하기 위한 용도로 사용됩니다
전체 이벤트 이력을 재생하지 않고도 빠르게 상태를 복원할 수 있게 해줍니다
Journal과 함께 사용되며, 가장 최근 스냅샷 이후의 이벤트만 재생하면 됩니다
Durable State
액터의 최신 상태만을 저장합니다4. 이벤트 이력을 저장하지 않고 현재 상태만 유지합니다.
CRUD 기반 애플리케이션과 유사한 방식으로 동작합니다
상태 변경 시마다 전체 상태를 덮어씁니다.
코틀린 코드로 작성되었으며~ CQRS는 언어또는 프레임워크에 의존적이지 않으며
Journal+DurableState를 활용하는 비교적 간단한 예제로 다음 3가지 방식을 각각 이용해 유사하게 작동하는것을 시도해보았습니다.
Akka프레임의 액터모델 / 코틀린에서 지원하는 순수액터모델 / 액터모델없이 카프카 스트림
https://wiki.webnori.com/display/AKKA/%5BKotlin%5D+PersistentDurableStateActor
https://wiki.webnori.com/pages/viewpage.action?pageId=93946646
https://wiki.webnori.com/display/AKKA/DuralbleState+By+KafkaStream
다음 내용이 궁금하다면?
이미 회원이신가요?
2024년 11월 20일 오후 8:55