Post

카프카(Kafka)

카프카란

카프카는 MOM(Message Oriented Middleware) 소프트웨어 중 하나로 대규모로 발생하는 메세지성 데이터를 비동기 방식으로 중계하는 역할을 한다. 원천 시스템으로부터 대규모 트랜잭션 데이터가 발생했을 때, 중간에 데이터를 버퍼링하면서 타깃 시스템에 안정적으로 전송해주는 중간 시스템이 필요한데, 카프카가 그와 관련된 강력한 기능, 아키텍처를 제공한다.

카프카 아키텍처

카프카는 클러스터 방식에 따라 세 가지 아키텍처 구성이 가능하며, 이때 주키퍼를 반드시 이용해야 한다.

  • 대량의 발행/소비 요건이 없고, 업무 도메인이 단순할 때
    → 1대의 카프카 서버만 구성하고, 1개의 Broker만 구성한다.

  • 대량의 발행/소비 요건이 없고, 업무 도메인이 복잡해서 메세지 처리를 분리 관리해야 할 때
    → 1대의 카프카 서버에 2개의 Broker를 구성한다.

  • 대규모 발행/소비 데이터 처리가 필요하며, 업무 도메인이 복잡할 때
    → 2대 이상의 카프카 서버로 Multi Broker를 구성한다.

카프카 활용 방안

플럼이 실시간 데이터를 수집해 카프카 토픽에 전송하면 카프카는 전송받은 데이터를 토픽에 임시로 저장하고 있다가 컨슈머 프로그램이 작동할 때 토픽에서 데이터를 가져갈 수 있는 환경을 조성한다.

이 방안에서 카프카가 사용되는 이유는 플럼이 아주 빠르게 발생하는 데이터를 실시간으로 수집하게 되면 이를 최종 목적지에 전달하기 전 중간에서 안정적인 버퍼링 처리가 필요해서다. 동시적으로 다수의 데이터가 발생되면 플럼 입장에서 수집이 부담스럽다. 카프카와 같은 분산 환경의 대규모 중간 저장소가 완충 역할을 해주면 안정적인 수집 아키텍처를 구성할 수 있다.

This post is licensed under CC BY 4.0 by the author.