Communitygithub.com

AxonIQ/AxonFramework

동적 일관성 경계(DCB)와 Axon Framework 5 및 Axon Server에서 이를 구현하는 방법을 설명하고 추론합니다. 사용자가 'DCB', '동적 일관성 경계', '일관성 경계', '애그리게이트 제거', 여러 엔티티 간 일관성 모델링, 'EventCriteria', '@EventCriteriaBuilder', '@EventTag', '@EventSourcedEntity', 'Tag', 태그와 스트림 차이, 'AppendCondition', 'SourcingCondition', 'ConsistencyMarker', 이벤트 저장소의 낙관적 동시성 제어, 선택 방법 등을 질문할 때 사용합니다.

AxonFramework란 무엇인가요?

이 스킬은 Axon Framework 5와 Axon Server에서 도입된 혁신적인 개념인 동적 일관성 경계(Dynamic Consistency Boundaries, DCB)를 깊이 있게 설명합니다. 전통적인 애그리게이트 기반의 정적 일관성 모델과 달리, DCB는 이벤트 태그(Event Tags)와 이벤트 기준(Event Criteria)을 활용하여 여러 엔티티 간의 일관성 경계를 동적으로 정의하고 조정할 수 있게 합니다. 사용자는 '@EventSourcedEntity', 'Tag', 'AppendCondition', 'SourcingCondition'과 같은 특정 API와 개념에 대한 질문을 통해, 애플리케이션에서 일관성 요구사항을 유연하게 처리하는 방법을 배울 수 있습니다. 이 스킬은 낙관적 동시성 제어, 일관성 마커(ConsistencyMarker), 그리고 '애그리게이트 제거(killing the aggregate)'와 같은 고급 패턴을 이해하는 데 도움을 줍니다. 모든 설명은 실제 코드 예제와 Axon Server의 구현 세부 사항을 포함하여 개발자가 즉시 적용할 수 있도록 구성되어 있습니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add AxonIQ/AxonFramework

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

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를 사용하여 이벤트 스트림 내에서 일관성 경계를 표시할 수 있습니다.

모범 사례

  1. 태그와 스트림의 차이 이해: 태그는 이벤트에 메타데이터를 추가하는 방법이고, 스트림은 이벤트의 순서를 보장합니다.
  2. 일관성 경계 설계: 성능과 일관성 요구사항을 균형있게 고려하여 경계를 설계하세요.
  3. 애그리게이트 제거 시기: 더 이상 필요하지 않은 애그리게이트는 "kill"하여 저장 공간을 절약할 수 있습니다.
  4. 동시성 전략 선택: 비즈니스 요구사항에 따라 낙관적 또는 비관적 동시성 제어를 선택하세요.

관련 문서

참고

  • 이 스킬은 Axon Framework 5.x 이상에서 동작합니다.
  • Axon Server는 DCB 구현을 위한 인프라를 제공합니다.

관련 스킬