Axon Framework
Axon Framework는 CQRS 및 이벤트 소싱을 구현하기 위한 자바 기반 오픈 소스 프레임워크입니다.
Axon Framework의 아키텍처
1. Command 모듈
Command 모듈은 명령(Command)을 처리하는 데 필요한 구성 요소를 제공합니다. 명령은 시스템에서 변경을 일으키는 작업을 나타내며, 명령 핸들러(Command Handler)는 이를 처리합니다.
2. Event 모듈
Event 모듈은 이벤트를 처리하는 데 필요한 구성 요소를 제공합니다. 이벤트는 시스템에서 발생한 사건을 나타내며, 이벤트 핸들러(Event Handler)는 이를 처리합니다.
3. Query 모듈
Query 모듈은 읽기 모델을 처리하기 위한 구성 요소를 제공합니다. Query 모듈은 CQRS 패턴을 지원하며, 읽기 측면의 요청에 대한 처리를 담당합니다.
4. Saga 모듈
Saga 모듈은 여러 Aggregate 간의 상호 작용을 조정하고 비즈니스 프로세스를 관리하는 데 사용됩니다. Saga는 일련의 이벤트를 처리하면서 다양한 상태를 유지하고 업무 로직을 실행합니다.
5. Axon Server
Axon Server는 독립적인 메시지 브로커로서 Axon 애플리케이션 간의 메시지를 전송하고 관리합니다. 분산 시스템에서 메시지 브로커 역할을 수행하여 이벤트를 효율적으로 전파하고 저장합니다.
6. Event Store
Event Store는 이벤트를 영속적으로 저장하는 데이터베이스입니다. 이벤트 소싱 패턴을 구현하며, 각 Aggregate의 상태 변경 사항을 이벤트로 기록하여 시스템 상태의 변경 이력을 추적합니다.
Axon Framework의 동작 방식
1. Command Handling
클라이언트가 명령을 발행하면, 해당 명령은 Command Bus를 통해 Command Handler로 라우팅 됩니다. Command Handler는 해당 명령을 처리하고 Aggregate를 업데이트하거나 새로운 이벤트를 발행합니다.
2. Event Handling
Aggregate의 상태가 변경되면 이벤트가 생성되어 Event Bus를 통해 이벤트 핸들러로 라우팅 됩니다. 이벤트 핸들러는 이벤트를 처리하여 읽기 모델을 업데이트하거나 추가적인 비즈니스 로직을 수행합니다.
3. Saga Handling
Saga는 여러 Aggregate 간의 상호 작용을 관리합니다. 특정 이벤트를 수신하면 Saga가 시작되어 여러 단계의 비즈니스 프로세스를 실행합니다.
4. Query Handling
Query 모듈은 CQRS를 통해 읽기 측면의 요청을 처리합니다. Query를 수행하면 해당 Query Handler가 호출되어 읽기 모델에서 데이터를 검색하여 변환합니다.
'인프라 > MSA' 카테고리의 다른 글
[MSA] 분산 트랜잭션 - 이벤트 소싱 (0) | 2023.12.20 |
---|---|
[MSA] 분산 트랜잭션 - 보상 트랜잭션 (0) | 2023.12.19 |
[MSA] 분산 트랜잭션 - 2PC (0) | 2023.12.18 |
[MSA] 분산 트랜잭션 - ACID (1) | 2023.12.18 |
[MSA] Hexagonal Architecture (0) | 2023.12.07 |