작성
·
608
0
안녕하세요.
강의 내용중에 Event Driven Architecture 파트 설명중에 Commit Trancation에서는 상태값을 두어 하나의 트랜잭션에 여러 Row가 기록되지 않는데,
다음에 설명하는 Event Sourcing 파트에서는 데이터의 마지막 상태만 저장하는 것이 아닌, 해당 데이터에 수행된 전체 이력을 기록한다고 설명하고 있습니다.
이 부분이 헷갈리는데, 데이터를 관리하는 방식이 서로 다른데 (그 외 Saga pattern 등) 상황에 맞게 쓰면 된다는것인가요?
Event Driven Architecture라는 큰 개념이 있고 그 하위?에는 Event Sourcing, Saga pattern 등 다양항 방법이 있다고 생각하고 있는데 잘못 이해한것일까요?
감사합니다.
답변 1
1
안녕하세요, 이도원입니다.
Event Sourcing과 Event Driven Architecture를 다시 정리하면, Event Sourcing은 이벤트를 사용하여 상태를 나타내는 것이고, Event Driven Architecture에서 이벤트는 다른 서비스 경계와 통신하는 데 사용됩니다.
Event Sourcing은 데이터를 저장하는 접근 방식 중 하나입니다. 현재 데이터의 상태를 저장하는 것 대신 이벤트를 저장하게 되고, 이벤트는 시스템에서 발생한 상태의 변경을 나타냅니다.
Event Driven Architecture는 이벤트를 사용하여 다른 서비스와 통신하는 데에 사용됩니다. 일반적으로 메시지 브로커(또는 이벤트 로그)를 활용하여 발행/구독자 패턴을 사용하게 되는데, 이벤트를 게시하고 다른 경계 내에서 비동기식으로 이벤트를 소비하는 방식입니다. 게시자는 이벤트를 소비하는 사람을 모르고, 소비자 역시 서로의 존재를 모릅니다. 이벤트 기반 아키텍처는 서비스 경계 간의 느슨한 결합 방식을 유지해 주며, 강의에서도 사용한 Kafka를 이용한 형태가 여기에 속한다고 보시면 될 것 같습니다.
끝으로 Saga Pattern은, Event Sourcing을 활용하며, 마이크로서비스들끼리 이벤트를 주고받아 특정 마이크로서비스에서의 작업이 실패하면 이전까지 작업이 완료된 마이크로서비스들에게 보상 이벤트를 소싱함으로써 분산 환경에서도 atomicity를 보장할 수 있도록 해주는 개발 패턴이라고 보시면 될 것 같습니다.
감사합니다.