KRaft카프카 클러스터를 구성 및 사용하게 되면(분산 애플리케이션 환경), 클러스터 환경 관리를 위한 코디네이터(애플리케이션)가 추가로 필요하기 마련이다. 이러한 코디네이터로 아파치 주키퍼가 많이 사용되고 있으며, 카프카에서도 주키퍼와 같이 사용하는 형태로 개발되어 왔다. 주키퍼는 하둡의 서브 프로젝트 중 하나로 출발해서 2011년 아파치의 탑 레벨 프로젝트로 승격이 되며, 여러 애플리케이션과 함께 사용되는 대표적인 분산 시스템 코디네이터 애플리케이션이다. 카프카 클러스터에서 주키퍼의 사용 또는 역할로는 주키퍼의 지노드(znode)를 이용해 카프카의 메타데이터(metadata) 관리, 브로커 상태 관리(노드관리), 토픽 관리, 컨트롤러 관리 등의 역할을 하고 있다. 다만 주키퍼를 통한 카프카 외부에서 ..
Kafka
Kafka 기본 구조이 이미지는 카프카의 전체 구성도 이다.하나의 물리적(논리적) 서버에 하나의 카프카 서버가 설치되고 이것이 브로커이다.위 이미지에서는 3개의 카프카 서버를 1개의 클러스터로 묶어서 운영하는 상황이다. 카프카 클러스터로 묶인 브로커들은 프로듀서가 보낸 데이터를 안전하게 분산 저장하고 복제하는 역할을 수행한다.카프카의 데이터 복제는 파티션 단위로 이루어진다. 복제된 파티션은 리더와 팔로워로 구성된다.프로듀서나 컨슈머가 통신하는 토픽의 파티션은 리더 파티션이라고 보시면 됩니다. 팔로워 파티션은 프로듀서로부터 리더 파티션으로 전달된 데이터를 복제(replication)하여 복제된 데이터를 저장한다. 팔로워 파티션은 리더 파티션의 데이터를 복사하여 보관하는 역할을 하고 있지만, 리더 파티션이 ..
kafka 가 왜 필요할까?현대 아키텍처의 흐름상 단일 서버 자원만으로 복잡해진 서비스를 지탱하기 어렵다. 그래서 일반적으로 여러 자원(서버, 컴퓨팅 엔진)을 분산시켜 각각을 고도화하는 방식 일명 마이크로서비스 아키텍처를 적용하는 곳이 많아졌고 성공 사례가 많아졌다. 분산된 서버 간에 발생하는 이벤트나 로그 데이터, 일명 스트리밍 데이터라고 불리는 것들을 실시간으로 처리해야하는 요구사항이 점점 늘어나게 되었는데, 이에 반해 기존의 아키텍처에서는 이런 실시간 스트리밍 데이터에 대한 처리가 쉽지 않았다.위의 그림은 복잡한 현대 웹 아키텍처를 잘 보여준다. 위 그림에서도 알 수 있듯 하나의 앱/서비스에서 발생한 데이터들이 (일명 스트리밍 데이터) 시스템 전반에 걸쳐서 사용되는 것을 볼 수 있다. 이런 복잡한 ..