AKKA는 다른 프레임워크에 탑재가능해 프레임워크라기보다 툴킷형태에 가까우며

Axon은 DDD를 하기위해 만들어진 프레임워크 그자체이기때문에 DDD채택이 프레임워크보다 중요할때 선택할수 있습니다.

필자는 전면채택보다 부분채택및 부부개선에 액터모델을 일부이용하고 있기때문에 전자를 조금더 선호하지만

DDD규칙을 프레임워크가 잡아주며 전술적패턴을 학습할수 있다란점에서 조사를 진행해보았습니다.


주요링크 


차이점 - Axib VS Akka

1. CQRS/ES 패턴과 플랫폼의 필요성 [6]


2. CQRS/ES 플랫폼의 핵심 구성요소 [14]


3. 논리적 인프라: Akka의 특징 [20]


4. 논리적 인프라: Axon의 특징 [38]


5. 물리적 인프라: Akka의 특징 [57]


6. 물리적 인프라: Axon의 특징 [58]


7. 결론 및 통합 가능성 [66]


8. 참고 및 저자 정보 [68]


🧭 Axon Framework란?

Axon Framework는 복잡한 도메인을 가진 시스템에서 **도메인 주도 설계(DDD)**와 함께 CQRS(Command Query Responsibility Segregation)Event Sourcing을 실용적으로 구현하도록 설계된 프레임워크입니다.


🎯 Axon의 핵심 아키텍처

1. Command (명령)

@CommandHandler
fun handle(cmd: CreateOrderCommand) {
    AggregateLifecycle.apply(OrderCreatedEvent(...))
}





2. Event (이벤트)

@EventSourcingHandler
fun on(event: OrderCreatedEvent) {
    this.orderId = event.orderId
}



3. Query (조회)

@QueryHandler
fun handle(query: FindOrderQuery): OrderView {
    return repository.findById(query.orderId)
}



4. Aggregate

@Aggregate
class OrderAggregate {
    @AggregateIdentifier
    lateinit var orderId: String
}

5. Event Store


6. Saga


@Saga
class OrderProcessingSaga {
    @SagaEventHandler(...)
    fun on(OrderCreatedEvent e) {
        // 다음 행동 트리거
    }
}

💎 Axon Framework의 장점

장점설명
DDD 구조를 잘 반영복잡한 도메인을 명확히 모듈화 가능
CQRS 구현 지원읽기/쓰기 분리로 확장성과 성능 확보
Event Sourcing 지원과거 상태 추적과 시간여행 가능
Spring Boot 통합손쉬운 설정과 Bean 관리
Axon Server 제공이벤트 저장소와 라우팅을 중앙 관리 가능
Saga로 프로세스 오케스트레이션여러 도메인의 장기 트랜잭션 처리 가능

📦 Axon Server (선택사항)


🎯 Axon은 언제 적합할까?

적합한 경우설명
복잡한 비즈니스 도메인예: 금융, 쇼핑몰, 물류, 상담 시스템 등
강한 일관성이 필요한 경우트랜잭션 단위 명확화
감사/이력 기능이 중요한 경우모든 상태 변경을 이벤트로 보존
마이크로서비스 간 프로세스 연결Saga 및 이벤트 기반 통합

🧱 Axon 구성요소 요약 도표

역할어노테이션 / 구성
Aggregate@Aggregate, @AggregateIdentifier
Command클래스 + @CommandHandler
Event클래스 + @EventSourcingHandler
Query클래스 + @QueryHandler
Saga@Saga, @SagaEventHandler
이벤트 저장소Axon Server / RDB / Kafka 등