Page History
| Info |
|---|
AKKA는 다른 프레임워크에 탑재가능해 프레임워크라기보다 툴킷형태에 가까우며 Axon은 DDD를 하기위해 만들어진 프레임워크 그자체이기때문에 DDD채택이 프레임워크보다 중요할때 선택할수 있습니다. 필자는 전면채택보다 부분채택및 부부개선에 액터모델을 일부이용하고 있기때문에 전자를 조금더 선호하지만 DDD규칙을 프레임워크가 잡아주며 전술적패턴을 학습할수 있다란점에서 조사를 진행해보았습니다. |
주요링크
...
🧭 Akka vs Axon DDD 프레임워크 비교
| 항목 | Axon Framework | Akka / Pekko (Typed) |
|---|---|---|
| 주요 언어 | Java, Kotlin | Scala, Java, Kotlin (Pekko로 JVM 범위 확대 중) |
| DDD 지원 방식 | CQRS + Event Sourcing + Aggregate 직접 구현 | Actor = Aggregate 역할, 메시지 핸들링 기반 상태 전이 |
| Command/Query 분리 | 내장 CQRS 구조 제공 (@CommandHandler, @QueryHandler) | 별도 설계 필요 (Actor 메시지 타입을 직접 설계) |
| Event Sourcing | 자동 관리 (Axon Event Store or Axon Server 사용) | 수동 구현 (EventPersistence + Snapshot 관리 필요) |
| Aggregate 관리 | @Aggregate 어노테이션 기반 | FSM 또는 PersistentActor로 수동 구성 |
| Saga 프로세스 | @Saga 기반 장기 트랜잭션 처리 | Actor 간 메시지 기반 오케스트레이션 (FSM 또는 Supervisor Pattern) |
| 복구/재처리 | 이벤트 재생으로 Aggregate 상태 복구 | 이벤트 소싱 재생 및 Snapshot 활용 |
| 분산 메시징 | Axon Server or Kafka 연동 | Akka Cluster & Sharding + Akka |
아래는 DDD 패턴을 구현할 때의 Axon vs Akka(Pekko) 기본 예제 비교입니다. 공통 시나리오는 간단한 주문(Order) 생성 및 상태 변경이며, 모두 Kotlin 기준입니다.
...
명시적인 FSM 스타일 구조
이벤트 핸들링과 상태 관리 수동 구현
Behavior,CommandHandler,EventHandler분리복잡하지만 분산 시스템/Actor 모델에 적합
...
📊 비교 요약
| 항목 | Axon | Akka / Pekko |
|---|---|---|
| 코드 양 | 매우 간결 (어노테이션 기반) | 많음 (핸들러와 상태 분리 명시 필요) |
| 구조적 통합성 | CQRS/EventSourcing 통합 관리 | 구성요소 직접 설계 필요 |
| 학습 난이도 | 중급 (Spring 기반 경험 있으면 쉬움) | 고급 (Actor, FSM, 메시지 처리 이해 필요) |
| 확장성 | Axon Server or Kafka | Akka Cluster, Sharding, Projection |
| 유즈케이스 | 도메인 중심 시스템, 전통 시스템 CQRS 전환 | 실시간 처리, 고부하 분산 시스템, IoT, 게임 서버 등 |
...
🔚 결론
Axon: DDD + CQRS + Event Sourcing을 간단하게 구조화하고 싶은 경우 → 선언형으로 빠르게 구현 가능
Akka: 고성능, 실시간성, 분산 처리 중심 시스템에서 더 유연하게 동작 → 자유도는 높지만 복잡도도 높음
...