Skip to main content

Axon Framework

마이크로서비스간 트랜잭션 관리를 위한 SAGA 컴포넌트

Axon Framework는 DDD(Domain-Driven Design), CQRS(Command-Query Responsibility Separation) 및 이벤트 소싱의 원칙을 기반으로 진화하는 이벤트 기반 마이크로서비스 시스템을 구축하기 위한 프레임워크입니다.

Axon Framework는 이러한 원칙을 따르는 데 필요한 빌딩 블록을 제공합니다. 빌딩 블록의 예로는 집계 디자인 핸들, 집계 리포지토리, 명령 버스, saga 디자인 핸들, 이벤트 저장소, 쿼리 버스 등이 있습니다.

Axon Server는 분산 명령 버스, 이벤트 버스, 쿼리 버스 및 확장 가능한 이벤트 소싱을 위한 효율적인 이벤트 저장소 구현을 제공합니다.

  • 클러스터 모드를 지원함
  • 핸들러가 먹통이 되었더라도 큐에 메세지를 저장
  • 서비스간 통신은 gRPC 방식을 사용

Turaco에서는 몇가지 설정만으로 간단하게 Axon 프레임워크 서버를 배포하고, 마이크로서비스 애플리케이션을 Axon 서버에 등록할 수 있습니다.

본 챕터에서는 Axon 컴포넌트에 대한 사용법을 설명합니다.


컴포넌트 배치

Axon 컴포넌트는 아키텍처 설계 화면 (이하 디자이너 화면)에서 좌측에 위치한 컴포넌트 목록에서 '수집 및 분석' 카테고리에 있습니다.

  1. 설계화면 왼쪽 컴포넌트 리스트 화면에서 Axon 컴포넌트를 선택 후 디자이너 화면으로 드래그 & 드롭합니다.

컴포넌트배치

  1. 배치된 Axon 컴포넌트에 대한 이름과 설명을 입력 후 확인 버튼을 클릭합니다.
    이름과 설명은 필수 입력값이며 입력하지 않으면 확인 버튼이 활성화되지 않습니다.

호스트

외부에 별도로 Axon 프레임워크를 운영중일 때 해당 서버에 대한 Endpoint를 입력합니다.
이 속성을 설정하면, 클러스터 내부에 배포하기 위한 HelmChart 리소스를 생성하지 않습니다.





  1. 외부에서 사용중인 Axon 프레임워크에 대한 Endpoint를 입력합니다.

  2. 입력은 "[Axon서버주소]:[포트번호]" 형식으로 설정합니다.


포트 설정

클러스터 배포시 서비스로 노출될 포트 정보를 입력합니다.
이 속성에서 입력된 포트는 GUI 및 Grpc 통신을 위한 포트로 주입됩니다.



  1. 통신을 위한 프로토콜을 설정합니다.(TCP만 지원)

  2. 외부에서 접속을 위한 서비스 포트를 입력합니다.

  3. Axon 서버의 포트 정보를 입력합니다.


서비스 선택

Axon 서비스는 독립적으로 배포가 가능하지만, 결국 마이크로서비스간의 트랜잭션을 관리하는데 그 목적이 있습니다.

따라서 Axon 서버를 사용할 마이크로서비스를 선택해야 합니다.

  1. 마이크로 서비스를 추가해야 속성 메뉴에서 선택이 가능합니다.

마이크로서비스 선택

  1. Axon을 사용할 서비스를 선택하기 위해 드롭다운 버튼을 클릭합니다.

  2. 추가된 마이크로서비스 리스트가 나타납니다.

  3. 리스트에서 Axon 서버를 사용할 서비스를 선택합니다.

애플리케이션 생성 시, 선택된 서비스들은 Axon 서버에 연결하기 위한 기본 정보들이 주입되어 코드가 생성됩니다.
Axon GUI 콘솔에 로그인하면 Axon 서버와 연결된 서비스를 확인할 수 있습니다.