하재우

하재우님의 아티클

하재우

하재우

Kafka 동물원에서 벗어나다.

kafka를 구동하기 위해서는 메타데이터를 저장하는 장소가 필요합니다. 2019년 KIP-500으로부터 메타데이터를 저장하는 Zookeeper가 아닌 kafka 자체에서 메타데이터를 저장할 수 있는 기능을 구현하여 Kafka 3.3.X 버전부터 공식적으로 KRaft 모드를 지원을 했습니다.

Kafka에서의 Zookeeper는 Kafka의 메타데이터를 별도로 관리하는 서비스입니다. Kafka 내부에 있는 것이 아닌 외부에서 존재를 하다보니 확장성 및 장애 조치에 대한 부분에 부담스러울 수 밖에 없습니다.

KRaft 모드는 Zookeeper에서 발견할 수 있는 단점을 보완하기 위해 만들어졌습니다. Kafka 내부에서 동작을 하다보니 확장성의 측면에서 장점이 있으며, 장애 조치를 즉각적으로 할 수 있는 장점 또한 있습니다. KRaft 모드를 사용하는 Kafka는 어떻게 동작을 하고, Zookeeper와 비교를 했을 때 확장성의 측면에서 얼마나 도움이 되는지 알아보았습니다.

2
0
하재우

하재우

Hexagonal Architecture with Spring boot

Hexagonal Architecture란?

  • 관심사 분리: 비즈니스 로직을 외부 종속에서 분리하는 데 중점을 둡니다.

  • 코어 중심 설계: 핵심 어플리케이션을 아키텍처 중심에 두어 도메인 모델과 비즈니스 로직을 캡슐화하는 동시에 외부 시스템과 인터페이스는 포트와 어댑터를 통해 연결이 됩니다.

  • 유연성 및 적응성: 느슨한 결으로 핵심 기능에 영향을 주지 않고 어댑터를 쉽게 교체하거나 수정할 수 있습니다.

과연 헥사고날 아키텍처가 정답일까요? 너무 많은 패키지를 요구하거나, 복잡한 설계 패턴을 요구하는 것은 아닐지 생각을 하게 되는 것 같습니다.

아키텍처 패턴을 도입하는 것은 많은 의미를 두고 있는 것 같습니다. 유지보수성을 높히기 위해서 그리고 유연한 구조를 가지기 위해서 아키텍처 패턴을 두고 많은 고민을 하게 되는데요. 과연 어떤 아키텍처 패턴이 우리 서비스에 맞는 혹은 앞으로의 우리가 대응할 수 있는 유연한 구조를 가지고 있을까요?

많이 언급이 되는 헥사고날 아키텍처 패턴을 직접 구현을 해보면서 알아봤습니다.

4
0