이번 글은 소프트웨어 아키텍처 패턴 중 하나인 이벤트 소싱에 대해서 알아보겠습니다.
이벤트 소싱이란?
마틴 파울러가 작성한 <Event Sourcing>에서는 이벤트 소싱을 다음과 같이 정의합니다.
Capture all changes to an application state as a sequence of events.
번역하자면, 이벤트 소싱은 애플리케이션의 상태를 이벤트의 시퀀스로 캡처하는 것을 의미합니다.
우리는 흔히 데이터의 현재 상태만을 데이터베이스에 저장하는 방식으로 데이터를 많이 관리합니다.
- 이벤트 소싱을 사용하면 잠금을 통해서 업데이트를 하는 방식과 비교하여 이벤트를 기반으로 데이터를 관리하기 떄문에 잠금을 사용하지 않아도 됩니다.
이러한 방식으로 인해 분산 시스템에서의 동기화 문제를 해결할 수 있고, 변경 이력을 추적하고 복구할 수 있습니다.
The fundamental idea of Event Sourcing is that of ensuring every change to the state of an application is captured in an event object, and that these event objects are themselves stored in the sequence they were applied for the same lifetime as the application state itself.
이벤트 소싱의 기본 아이디어는 애플리케이션의 상태에 대한 모든 변경 사항이 이벤트 객체에 캡처되고, 이 이벤트 객체 자체가 적용된 순서대로 동일한 수명 동안 애플리케이션 상태 자체와 함께 저장된다는 것입니다.
https://learn.microsoft.com/ko-kr/azure/architecture/patterns/event-sourcing