**Event Sourcing**은 엔티티의 현재 상태 대신 상태 변화를 유발한 **이벤트 시퀀스 자체를 저장**하는 패턴이다. 현재 상태는 직접 저장되지 않고, 이벤트 히스토리를 재생(replay)하여 도출된다. 이를 통해 기존 CRUD에서 발생하는 이전 상태 소실 문제를 근본적으로 해결할 수 있다. **CQRS(Command Query Responsibility Segregation)** 는 쓰기 모델과 읽기 모델을 분리하는 패턴으로, `PlaceOrder`, `ShipOrder` 같은 커맨드는 상태 변경 의도를 표현하고, 쿼리는 상태를 변경하지 않고 읽기만 수행한다. 완전한 구현에서는 두 모델이 별도의 로직과 **별도의 스토리지**를 사용하여, 읽기/쓰기 성능 최적화 및 분산 시스템 설계에 유리한 구조를 갖는다.
본 기사는 DZone Java의 내용을 기반으로 AI가 백엔드 개발자 관점에서 자동 요약한 스크랩입니다. 카테고리는 백엔드 분야에 해당하며, 관련 분야의 최신 동향 파악을 위해 매일 자동 수집됩니다.