AxonFramework은(는) 무엇을 하나요?
동적 일관성 경계(Dynamic Consistency Boundaries, DCB)와 Axon Framework 5 및 Axon Server에서 이를 구현하는 방법을 설명하고 추론합니다. 사용자가 다음과 같은 주제에 대해 질문할 때 사용하세요:
- "DCB", "동적 일관성 경계", "일관성 경계"
- "애그리게이트 제거(killing the aggregate)"
- 여러 엔티티 간 일관성 모델링
- "EventCriteria", "@EventCriteriaBuilder", "@EventTag"
- "@EventSourcedEntity", "Tag", 태그와 스트림의 차이
- "AppendCondition", "SourcingCondition", "ConsistencyMarker"
- 이벤트 저장소에서의 낙관적 동시성 제어
- 선택 방법 및 모범 사례
개요
Axon Framework 5는 기존의 애그리게이트 중심 일관성 모델을 확장하여 동적 일관성 경계(DCB) 개념을 도입했습니다. 이를 통해 여러 엔티티에 걸쳐 일관성을 유지하면서도, 시스템의 유연성을 크게 향상시킬 수 있습니다.
핵심 개념
동적 일관성 경계(DCB)
DCB를 사용하면 런타임에 이벤트 태그와 기준을 기반으로 일관성 경계를 정의할 수 있습니다. 이는 정적 애그리게이트 경계와 달리, 비즈니스 요구사항에 따라 경계를 동적으로 조정할 수 있게 합니다.
주요 API
- @EventSourcedEntity: 이벤트 소싱 엔티티를 선언합니다.
- @EventTag: 이벤트에 태그를 지정하여 일관성 경계를 정의합니다.
- EventCriteria: 특정 이벤트 패턴을 매칭하는 기준을 정의합니다.
- AppendCondition: 이벤트 추가 시 조건을 지정합니다.
- SourcingCondition: 이벤트 소싱 시 조건을 지정합니다.
- ConsistencyMarker: 일관성 경계 내에서의 마커 역할을 합니다.
구현 예제
@EventSourcedEntity
public class SomeEntity {
@EventTag(name = "entityType")
private String type;
@EventCriteriaBuilder
public EventCriteria getCriteria() {
return EventCriteria.tag("entityType").matching("SpecificType");
}
}
동시성 제어
DCB는 낙관적 동시성 제어를 지원합니다:
AppendCondition을 사용하여 이벤트 추가 전에 일관성 마커를 검증할 수 있습니다.SourcingCondition을 사용하여 이벤트 소싱 중 특정 조건을 충족하는 이벤트만 적용할 수 있습니다.ConsistencyMarker를 사용하여 이벤트 스트림 내에서 일관성 경계를 표시할 수 있습니다.
모범 사례
- 태그와 스트림의 차이 이해: 태그는 이벤트에 메타데이터를 추가하는 방법이고, 스트림은 이벤트의 순서를 보장합니다.
- 일관성 경계 설계: 성능과 일관성 요구사항을 균형있게 고려하여 경계를 설계하세요.
- 애그리게이트 제거 시기: 더 이상 필요하지 않은 애그리게이트는 "kill"하여 저장 공간을 절약할 수 있습니다.
- 동시성 전략 선택: 비즈니스 요구사항에 따라 낙관적 또는 비관적 동시성 제어를 선택하세요.
관련 문서
참고
- 이 스킬은 Axon Framework 5.x 이상에서 동작합니다.
- Axon Server는 DCB 구현을 위한 인프라를 제공합니다.