[Spring boot] Axon Framework 맛보기

반응형

이번 포스트부터 Spring을 이용한 CQRS에 대해 적어보도록 하겠습니다. 몇 파트가 지난 포스트에서 우리는 MSA의 트랜잭션 이야기 중 이벤트 소싱과 CQRS에 대해 이야기 하였습니다.

 

2021.03.21 - [Architecture/MSA] - [MSA] 7. MSA의 트랜잭션 이야기 3 - 이벤트 소싱과 CQRS

 

[MSA] 7. MSA의 트랜잭션 이야기 3 - 이벤트 소싱과 CQRS

이벤트 소싱을 처음 접하게 된 것은 2017 SpringCamp에서였습니다. 당시에는 MSA라는 개념에 대해 잘 알지도 못했고, MSA는 대기업에서나 쓸 수 있고, 적용가능한 엄청나게 큰 아키텍처였다. 라고만 인

blog.neonkid.xyz

CQRS와 이벤트 소싱에 대한 개념은 제대로 이해되었지만 이에 대한 구현을 어떻게 하시는지 잘 감이 안오실 수 있을 것입니다. 저 또한 처음 CQRS에 대한 이야기를 들었을 때는 그 개념 조차도 생소했고, 서버를 개발하는 데 있어 기존의 트랜잭션이 정말 만족스러운데, 이러한 트랜잭션이 왜 필요한지도 잘 몰랐었습니다. 

 

하지만 서비스의 분리, 느슨한 결합에 대해 그 필요성을 뼈아프게 느끼고 지금 이 순간, 데이터베이스의 트랜잭션을 의존하지 못하는 경우 내 애플리케이션이 트랜잭션까지 맡는다고 생각한다면 이러한 개념이 필요할 수 밖에 없을 것이라고 봅니다. 그래서 저는 백엔드 프레임워크 중 가장 자신 있는 Spring Framework를 골라서 CQRS를 간단히 구현해보고자는 다짐을 하였습니다.

 

 

 

Axon Framework

Java, 특히 Spring 진영에서는 CQRS를 재현하기 위한 구현체가 이미 존재하는데, 그 중 대표적인 것이 바로 Axon Framework 입니다. 

 

https://axoniq.io 

 

Axon, the open source Java platform supporting event sourcing, CQRS and DDD architecture through Axon Framework, Axon Server, GD

We use cookies to analyze our traffic, to optimize the site functionality and to make sure you get the best experience on our website. We do not place cookies to invade your privacy. By continuing to use this site you are giving us your consent to our cook

axoniq.io

Axon은 네덜란드의 AxonIQ에서 개발하여 오픈 소스와 상용 소프트웨어로 운영하고 있는 CQRS 구현 도구입니다. CQRS를 구현할 수 있는 다양한 방법이 존재하지만 Axon은 CQRS를 처음 접하는 개발자들도 쉽게 그 구현을 할 수 있어서 꽤 장점으로 꼽히고 있습니다.

 

우리는 여기서 Axon Framework, EventStore, Axon Server 이렇게 3가지를 이용하여 CQRS를 구현해보고자 합니다.

 

 

 

 

Architecture

 

출처; https://docs.axoniq.io/reference-guide/architecture-overview

맨 왼쪽에 있는 UI(Front)이거나 API가 될 수도 있습니다. 클라이언트로부터 들어온 요청을 Command라 정의하고, 해당 명령이 들어오면 그 명령을 EventStore에 저장하고 Event Broker에 해당 이벤트를 발행합니다. 이 과정이 바로 이벤트를 발생시키는 일련의 과정입니다.

 

이 과정은 CQRS와 동일하며 Axon이 CQRS를 채택하여 동작하고 있음을 알려주는 아키텍처입니다. 

 

 

 

 

Axon Server 설치

Axon Server는 CQRS에서 EventStore와 Event Broker의 두 가지 역할을 수행하는 애플리케이션입니다. 그러나 Axon Framework를 이용하는 데 있어 필수로 설치해야 하는 사항은 아니며 Axon Framework를 사용하기 위해 지원하는 다른 애플리케이션을 이용할 수도 있습니다.

 

  • Kafka
  • Spring Cloud
  • MongoDB
  • AMQP
  • Open Tracing

먼저 Axon Server를 설치해보도록 하겠습니다.

 

https://axoniq.io/download

 

Download - Axon

You can also download a ZIP file with Axon Server as a standalone JAR. This will also give you the Axon Server CLI and information on how to run and configure the server.

axoniq.io

위의 링크를 이용하여 이름과 이메일 주소를 입력한 후, 직접 바이너리 파일을 다운로드 받거나 압축 파일 혹은 Docker 이미지를 받을 수도 있습니다.

 

저는 여기서 Docker Image로 진행해보도록 하겠습니다.

$ docker run -d --name axonserver -p 8024:8024 -p 8124:8124 axoniq/axonserver

위 명령어를 이용해서 Axon Server를 사용하기 위한 2개의 포트를 열고 axonserver를 Docker 위에 띄워줍니다.

 

위의 화면이 나온다면 잘 진행하고 있는 것입니다.

 

docker ps 명령어를 이용해서 Axon Server가 잘 실행되었는지 확인해줍니다. 여기까지 되었다면 Axon Server의 설치는 완료된 것입니다.

 

각 포트 주소가 어떻게 사용되냐면..

 

  • 8024: Dashboard (Web)
  • 8124: Message Routing

대시보드에서 Axon으로 들어오고 나가는 메시지를 직접 확인하는 등의 상태를 웹으로 시각화된 형태의 확인이 가능합니다.

 

Axon 대시보드에서는 서버의 상태와 Command, Query의 상태 등 다양한 상태를 확인할 수 있습니다.

 

 

 

 

마치며..

아주 간단하게 Axon에 대해서 알아보고, 서버를 설치하는 시간을 가져봤습니다. Axon 서버는 Spring 기반으로 되어 있으며 JVM 튜닝을 통해서 비즈니스에 맞게 튜닝할 수 있다는 점이 돋보였는데요.

 

다음 포스트에서는 직접 Spring 프로젝트를 만들어서 Axon을 사용해보는 시간을 가져보도록 하겠습니다.

 

반응형
TAGS. , ,