작성중입니다....
비즈니스 로직 개발: 이벤트 소싱(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 |