Event Sourcing은 시스템의 상태를 데이터베이스에 직접 저장하는 대신, 상태 변화를 일으키는 이벤트(event)를 저장하는 소프트웨어 설계 패턴입니다.
Event Sourcing은 시스템의 상태 변경을 이벤트로 관리함으로써 추적 가능성과 복구 가능성을 높이고, 비즈니스 로직을 명확하게 정의하는 데 유용한 패턴입니다. 그러나 복잡성과 성능 관리가 필요하기 때문에 적절한 사용 사례에서 신중하게 도입하는 것이 중요합니다.
다음은 Event Sourcing의 주요 개념, 장점, 단점, 그리고 사용 사례에 대한 설명입니다:
1. 주요 개념:
- 이벤트(Event): 시스템에서 발생한 상태 변화를 나타내는 불변 객체입니다. 예를 들어, "주문 생성됨", "상품 추가됨" 등이 이벤트가 될 수 있습니다.
- 이벤트 스토어(Event Store): 모든 이벤트를 시간 순서대로 저장하는 데이터베이스입니다. 이벤트 스토어는 이벤트 로그로 기능하며, 시스템의 현재 상태를 재구성할 수 있습니다.
- 상태 재구성(State Reconstruction): 현재 시스템의 상태를 재구성하려면 초기 상태에서부터 모든 이벤트를 순차적으로 재생(replay)하면 됩니다.
2. 장점:
- 추적 가능성: 모든 상태 변화를 이벤트로 기록하므로, 시스템의 변경 내역을 완벽하게 추적할 수 있습니다.
- 복구 가능성: 특정 시점의 상태를 복원하거나, 이벤트 로그를 기반으로 시스템의 상태를 재구성할 수 있습니다.
- 비즈니스 로직 명확성: 이벤트를 통해 비즈니스 로직이 어떻게 변하는지 명확하게 이해할 수 있습니다.
- 아우딧 및 감사 기능: 모든 이벤트가 기록되므로, 감사와 검토가 용이합니다.
3. 단점:
- 복잡성 증가: 이벤트를 처리하고 저장하는 로직이 추가되면서 시스템의 복잡성이 증가합니다.
- 스토리지 요구사항: 모든 이벤트를 저장해야 하므로 스토리지 요구사항이 높아질 수 있습니다.
- 성능: 많은 이벤트를 재생하여 상태를 재구성해야 하므로, 성능 이슈가 발생할 수 있습니다. 이를 해결하기 위해 스냅샷(snapshot) 기술을 사용할 수 있습니다.
4. 사용 사례:
- 금융 시스템: 트랜잭션의 모든 변경 내역을 기록하여 추적 가능성과 복구 기능을 제공해야 하는 경우.
- 이커머스 플랫폼: 주문 상태 변경, 상품 추가 등 중요한 비즈니스 이벤트를 기록하고 관리해야 하는 경우.
- 비즈니스 프로세스 관리: 복잡한 비즈니스 프로세스를 이벤트 기반으로 관리하고 추적해야 하는 경우.
'IT 세상' 카테고리의 다른 글
2단계 커밋(2-Phase Commit, 2PC) (0) | 2024.08.11 |
---|---|
Saga 패턴 (0) | 2024.08.07 |
Strangler 패턴 (0) | 2024.08.07 |
CQRS(Command Query Responsibility Segregation) (0) | 2024.08.07 |
Architecture 설계 - 요구사항, Cloud Native, MSA (0) | 2024.08.05 |