안녕하세요 괴짜 개발자 namedboy 입니다. 😎
아파치 카프카는 링크드인에서 링크드인 웹사이트 로그를 처리해서 웹사이트 활동을 추적하는 목적으로 개발되었습니다. 그래서 아래의 목적을 가지고 개발이 되었습니다.
- 높은 처리량으로 실시간 처리한다.
- 임의의 타이밍에서 데이터를 읽는다.
- 다양한 제품과 시스템에 쉽게 연동한다.
- 메시지를 잃지 않는다.
카프카는 위의 목적을 실현시키기 위해 메시징 모델을 사용 합니다. 메시징 모델은 Producer, Broker, Consumer 이 3가지 요소를 가지고 구성됩니다.
카프카의 메시징 모델은 여러 컨슈머가 분산 처리로 메시지를 소비하는 모델과 여러 서브스크라이버에 동일한 메시지를 전달하고, 토픽 기반으로 전달 내용을 변경하는 모델을 사용하고 있습니다. 이 두가지 모델을 실현하기 위해 컨슈머 그룹이라는 개념을 도입하여 컨슈머를 확장 구성할 수 있도록 설계하고 있습니다.
기본 구조는 Producer에서 메시지를 생성해서 전달하면 기본적으로 broker가 수집하고 소비자에게 전달하는 구조 입니다.
심플한 구조지만 확장을 위해서는 기본적으로 큐잉모델을 쓰며 실시간 처리, 임의의 타이밍에서 데이터를 읽기, 메시지를 잃지 않는다는 목적을 위해 추가적으로 필요한 구성요소가 생깁니다. 이런 목표들을 만족시키기이 위해 디스크에 영속화하고 쉬운 API를 제공하며 전달 보증의 기능이 들어가 있습니다.
이런 기능들 덕분에 카프카는 아래의 목적으로 구축하고 이용될 수 있습니다.
- 데이터 허브로서의 역할 여러 시스템 사이에서 데이터를 상호 교환합니다.
- 로그 수집 BI 도구를 이용한 리포팅과 인공지능 분석을 위해 여러 서버에서 생성된 로그를 수집하고 축적할 곳에 연결한다.
- 웹 활동 분석 실시간 대시보드와 이상 탐지/부정 검출 등 웹에서의 사용자 활동을 실시간으로 파악한다.
- 사물인터넷 센서 등 다양한 디바이스에서 보낸 데이터를 수신해서 처리한 후 디바이스에 송신한다.
- 이벤트 소싱 데이터에 대한 일련의 이벤트를 순차적으로 기록하고 CQRS 방식으로 대량의 이벤트를 유연하게 처리한다.
경우에 따라서는 직접적으로 개발해야 하는 부분도 있으며 그 때문에 책에 예제가 포함되어 있으며 Java를 사용하여 기본적인 구축을 할 수 있도록 가이드 되어 있습니다.
카프카를 잘 모르는 사람도 기본적인 서버 개발의 지식만 있다면 충분히 따라할 수 있도록 구성되어 있어 카프카에 대한 이해를 한 층 더 높일 수 있겠다는 생각이 들었습니다.
카프카를 처음 도입하거나 시도해보고자 하는 분들에게는 도움이 되리라 생각합니다.
실전 아파치 카프카는 링크 에서 보실 수 있습니다.
이 리뷰는 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.