스프링부트에서 CQRS 이벤트 스토어 다루기

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

 • 

저장 16조회 2,083

댓글 0