이벤트 소싱의 아이디어는 간단합니다. 서비스에서 발생하는 이벤트를
기록을하고, 이벤트를 소비하는 서비스를 분리하는것입니다.
이벤트는 복제가 용이하고 쉽게 재생이 될수 있기때문에
이벤트를 소비하는 서비스의 확장,복구,개선 3가지활동을 더 간단하게 할수 있다라는것입니다.
이벤트정의
이벤트 소싱은 간단한 컨셉이나, 이러한 컨셉을 적용하는것이 어려운 이유중하나는
이벤트 중심적(Event Driven)설계가 선행이되어야하는데 이것에대한 이해및 설계가
익숙하지 않는데 있으며 기존 설계를 바꾸는것 역시 쉽지 않은데 있습니다.
방식 | 전통적인 3 tier 아키텍 사고방식 | 이벤트 중심적 사고방식 |
---|---|---|
프레젠테이션 : 사용자가 시스템과 상호 작용하는 사용자 인터페이스 응용 프로그램 : "비즈니스 로직" 수행 우리는 일반적으로 상태를 유지하지 않고 작업을 수행합니다. 지속성 (Persistence) : 일반적으로 데이터베이스에 저장하는 장소. | 동기식 요청 - 응답 작업 (예 :REST / JSON) 서비스가 생성하는 이벤트 서비스가 소비하는 이벤트 일괄 읽기 및 쓰기 (예 : 서비스에서 분석 시스템으로 데이터를 추출하는 ETL) | |
구매한건을 진행하였을때 사용자의 요청 하나당 저장소 한건이 저장되는것이 일반적입니다. | 구매한건을 진행하기위해 수많은 이벤트가 발생을 하게되며 생성하는것과 소비하는것을 분류하여 기록을 하는것입니다. |
참고링크: https://hackernoon.com/events-as-first-class-citizens-8633e8479493