EventSourcing 상태를 발생하기위한 모든 이벤트를 저장 → 상태 자체를 이벤트기반으로…
이 이벤트를 차례대로 재생하면 현재의 상태를 알수있다
계속 남긴다 그냥
디테일한 예시 (예약변경)
1. 고객은 예약변경을 하고싶어 한다 → 예약변경 API를 호출한다2.예약변경이란 명령이 HeadSpring으로 전달된다. ( 이건 SQS인가? )3. HeadSpring은 변경명령이 왔다면 → EventStore를 통해서 지금까지 모든 이벤트를 조회를 한다4. 조회된 이벤트를 스케쥴 이란 상태로 만들어낸다
가장 최신의 이벤트로 만들어 낸다.
스케쥴이란 → 고객이 점유한 데이터를 그냥 스케쥴이라고 명명
5.예약변경 명령 실행기에 전달해서 → 이벤트를 만들고 → 이벤트 스토어에 저장한다. → MessageBus를 이용해서 Kinesis에 전달한다
Kinesis를 Message Broker로 사용함
그런데, 허들이 있었다.
예를들어서 2월 13일의 스케쥴을 알고싶어
그럼 2월 13일에 모든 데이터를 읽어서 → 스트림 재생과정을 거쳐서 → 필터링 → 부하
허들을 극복 → CQRS (효율적인 조회모델)
명령과 조회를 각각의 모델을 사용함
EventSourcing → EventSourcing 모델
조회 → 조회모델
Kinesis DataStream을 구독하기 위해서 → Spring Cloud + Kinesis Client Library
왜 Kinesis Data Stream을 Message Broker로 사용했을까?
MSK, Kafka, SQS 많은 서비스가 있는데 왜? KDS일까?
원래는 Apache Kafka를 고민했지만 → Kafka Cluster를 관리하는 리소스가 너무 큼