이벤트 소싱이란
이벤트 소싱은 상태 대신 상태 변경 이벤트를 저장하는 패턴입니다. 40년간 데이터 아키텍처를 설계해온 저로서는 이벤트 소싱이 특정 문제에 강력한 해결책이라고 확신합니다. 은행 거래 내역, 버전 관리 시스템이 이벤트 소싱의 예입니다. 현재 상태는 이벤트를 재생하여 도출합니다.
이벤트 소싱의 장점
완전한 감사 추적(Audit Trail)이 있습니다. 시간 여행이 가능합니다. 과거 특정 시점의 상태를 재구성합니다. 버그 재현이 쉽습니다. 이벤트를 분석하여 새로운 뷰를 생성할 수 있습니다. 도메인 이벤트가 명시적으로 드러납니다.
CQRS(Command Query Responsibility Segregation)
CQRS는 읽기(Query)와 쓰기(Command)를 분리하는 패턴입니다. 읽기와 쓰기의 요구사항이 다를 때 유용합니다. 각각 최적화된 모델을 사용합니다. 이벤트 소싱과 함께 자주 사용됩니다. 쓰기는 이벤트로, 읽기는 최적화된 뷰로 처리합니다.
도전과 주의사항
복잡성이 증가합니다. 단순한 시스템에는 과합니다. 이벤트 스키마 진화가 어렵습니다. 이벤트는 변경 불가하므로 버전 관리가 필요합니다. 최종 일관성(Eventual Consistency)을 받아들여야 합니다. 학습 곡선이 가파릅니다.
적합한 사용 사례
감사 추적이 중요한 시스템: 금융, 의료, 법률. 복잡한 도메인 로직. 협업 도구, 실시간 시스템. 마이크로서비스 간 이벤트 기반 통신. 부적합: 단순 CRUD, 빠른 프로토타입. 필요할 때만 도입하고, 충분히 이해한 후 적용하세요.
댓글
0