Notepad

작성중입니다....

비즈니스 로직 개발: 이벤트 소싱(Event sourcing)

핵심 내용

  • 이벤트 소싱 패턴을 응용한 비즈니스 로직 개발
  • 이벤트 저장소 구현
  • 사가와 이벤트 소싱 기반의 비즈니스 로직 연계
  • 이벤트 소싱을 응용한 사가 오케스트레이터 구현

이벤트 소싱 응용 비즈니스 로직 개발

  • 이벤트 소싱은 비즈니스 로직을 구성하고 Aggragte를저장하는 또 다른 방법.
  • 이벤트 소싱 패턴
    • 상태 변화를 나타내는 일련의 도메인 이벤트로 Aggragte를 저장.

기존 영속화의 문제점

  • 객체-관계 임피던스 부정합
  • Aggragte 이력이 없다
  • 감사 로깅은 구현하기 힘들고 오류도 자주 발생
  • 이벤트 발행 로직이 비즈니스 로직에 추가됨

이벤트 소싱 개요

  • 이벤트를 위주로 비즈니스 로직을 구현하고, Aggragte를 DB에 일련의 이벤트로 저장하는 기법
  • 이벤트를 이용하여 Aggragte를 저장
  • 이벤트는 곧 상태 변화
  • Aggragte 메서드의 관심사는 오직 이벤트
  • 이벤트 소싱 기반의 Order Aggragte

동시 업데이트: 낙관적 잠근

  • 이벤트에 딸려 온 버전 정보를 각 Aggragte 인스턴스마다 두고,
    애플리케이션 이벤트를 삽입할 때 이벤트 저장소가 버전 변경 여부 체크

이벤트 소싱과 이벤트 발행

  • 이벤트 발행: 폴링
  • 이벤트 발행: 트랜잭션 로그 테일링

스냅샷으로 성능 개선

멱등한 메시지 처리

  • RDBMS 이벤트 저장소 사용
  • NoSQL 이벤트 저장소 사용

도메인 이벤트 발전시키기

  • 이벤트 스키마
  • 업캐스팅을 통한 스키마 변화 관리

이벤트 소싱의 장점

  • 도메인 이벤트를 확실하게 발행
  • Aggragte 이력이 보존됨
  • O/R 임피던스 불일치 문제를 대부분 방지
  • 개발자에게 타임 머신을 제공

이벤트 소싱의 단점

  • 새로운 프로그래밍 모델을 배우는데 시간이 걸림
  • 메시징 기반 애플리케이션을 복잡함
  • 이벤트를 개량하기가 까다로운 편임
  • 데이터를 삭제하기가 어려움
  • 이벤트 저장소를 쿼리하기가 어려움

이벤트 저장소 구현

사가와 이벤트 소싱을 접목

참고

  • 마이크로서비스 패턴 자바(저 : 크리스 리처드슨)

'dev > 아키텍처' 카테고리의 다른 글

마이크로서비스 패턴(8)  (0) 2022.04.14
마이크로서비스 패턴(7)  (0) 2022.04.06
마이크로서비스 패턴(5)  (0) 2022.03.24
마이크로서비스 패턴(4)  (0) 2022.03.10
마이크로서비스 패턴(3)  (0) 2022.03.03
profile

Notepad

@Apio

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!