🌳 고급 고급
Event Sourcing이 뭔가요?
쉽게 이해하기
은행 거래 내역을 생각해보세요. 은행은 여러분의 현재 잔액만 저장하는 게 아니라 모든 입출금 내역을 기록해두죠. 그래서 언제든 과거 특정 시점의 잔액을 계산할 수 있고, 어떤 거래로 지금의 잔액이 됐는지 추적할 수 있어요. Event Sourcing도 이처럼 모든 변경사항을 이벤트로 기록하는 방식이에요.
핵심 정리
데이터의 현재 상태 대신 모든 변경 이벤트를 순서대로 저장하는 패턴이에요.
자세히 알아보기
Event Sourcing은 데이터베이스에 현재 상태만 저장하는 대신, 상태를 변경시킨 모든 이벤트를 순서대로 저장하는 패턴입니다. 기존 방식은 '사용자 이름: 김철수'처럼 현재 값만 저장하지만, Event Sourcing은 '사용자 생성됨', '이름 변경: 홍길동→김철수' 같은 이벤트들을 기록해요.
이 방식의 가장 큰 장점은 완벽한 감사 추적(Audit Trail)이 가능하다는 거예요. 언제, 누가, 무엇을, 왜 변경했는지 모두 알 수 있죠. 금융, 의료, 전자상거래처럼 변경 이력이 중요한 도메인에서 특히 유용합니다.
또한 시간 여행(Time Travel)이 가능해요. 이벤트를 특정 시점까지만 재생하면 그때의 상태를 복원할 수 있어요. 버그가 발생했을 때 과거 특정 시점으로 돌아가서 디버깅할 수 있고, 새로운 리포트나 분석을 위해 과거 데이터를 다시 계산할 수도 있죠.
CQRS(Command Query Responsibility Segregation) 패턴과 함께 쓰이는 경우가 많아요. 쓰기는 이벤트로 저장하고, 읽기는 이벤트를 재생해서 만든 별도의 읽기 전용 모델을 사용하는 식이죠. 하지만 이벤트가 계속 쌓이면 성능 문제가 생길 수 있고, 스냅샷을 주기적으로 만들어야 하는 등 복잡도가 높아지는 단점도 있어요.