이 글은 “카프카, 데이터 플랫폼의 최강자” 책 내용을 정리한 글입니다.
카프카, 데이터 플랫폼의 최강자 - 카프카란 무엇인가?
IT 트렌드를 뒤흔드는 단어들이 지속적으로 등장하고 있음. 하지만 이와 같은 개별 용어에 집착하기보다는 이 용어들을 이루는 기술적인 방향과 의미에 집중해야 함. 가장 큰 특징은 아래와 같음.
- 느슨한 결합 (Loosely Coupled) : 클라우드 시대가 본격적으로 열리면서 컴퓨터 리소스는 더이상 영속적(persist)이지 않음
그렇기 때문에 각 컴포넌트들은 견고한 결합으로 연결될 수 없음. 결과적으로 근래의 컴퓨팅 통신은 직접 통신 대신 비동기 메시징 프레임워크를 기반으로 간접적으로 데이터를 주고 받는 형태를 취함. - 데이터 중앙화 : 이전 세대에서는 회사의 각 서비스별로 별도의 데이터 파이프라인 계층이나 데이터 분석용 시스템을 운영했기 때문에
회사 전체의 데이터가 파편화되어 총합적인 데이터 분석이 어려웠음
- 과거에는 많은 서비스에서 생성되는 모든 이벤트의 부하를 견딜만한 버스 시스템이 없었음
- 강력한 메시지 처리 성능, 수평확작성, Fault-torelance에 기반한 이벤트 버스 애플리케이션이기도 한 카프카의 도입으로 만족할 만한 수준의 분석 기술이 가능해짐
- 카프카를 전격 도입 -> 중앙 데이터 파이프라인으로 사용하는 회사들이 늘어남
카프카란?
전통적인 메시지 시스템으로서 메시징 처리 뿐만 아니라, 사용자의 웹 사이트 활동 추적 파이프라인으로 활용되고 통계를 집계해 모니터링 데이터로도 사용함.
1. 카프카의 탄생 배경
- 기존 링크드인 시스템의 문제점 : 하나의 서비스가 너무 많은 시스템과 연결됨 -> 유지 관리 부담이 늘어나게 되었고, 이로 인해 기능 개발 자체가 지연됨.
- end-to-end 연결 방식의 아키텍처는 많은 문제점이 있음
- 1) 실시간 트랜잭션 처리와 비동기 처리가 동시에 이뤄지지만 통합된 전송 영역이 없으니 복잡도가 증가
- 2) 데이터 파이프라인 관리의 어려움. 통합 데이터 분석을 위해 서로 다른 데이터 시스템을 연결해야 하는 경우가 있는데, 데이터 포맷이나 처리 방법이 다른 경우 통합이 어려움.
- 위 문제를 해결하기 위한 새로운 시스템 구축 (카프카)
- 프로듀서와 컨슈머 분리
- 메시징 시스템과 같이 영구 메시지 데이터를 여러 컨슈머에게 허용
- 높은 처리량을 위한 메시지 최적화
- 데이터가 증가함에 따라 스케일아웃이 가능한 시스템
- end-to-end 연결 방식의 아키텍처는 많은 문제점이 있음
[링크드인에서 카프카를 적용한 이후의 데이터 처리 시스템의 특징]
- 사내 서비스에서 발생하는 모든 이벤트/데이터의 흐름을 중앙에서 관리
- 카프카가 전사 데이터 파이프라인으로 동작하기 때문에 모든 데이터 스토어와 여기서 발생하는 데이터/이벤트가 카프카를 중심으로 연결되어 있음
- 카프카가 제공하는 데이터를 이용해서 다양한 분석이 가능해짐
- 여러 시스템에 의존하지 않고, 카프카에만 데이터를 전달하면 되기 때문에 본연의 업무에만 집중할 수 있게 됌.
2. 카프카의 동작 방식과 원리
카프카는 기본적으로 메시징 서버로 동작함.
- 메시징 시스템
- 프로듀서 혹은 퍼블리셔 : 메시지라고 불리는 데이터 단위를 보내는 측
- 컨슈머 혹은 서브스크라이버 : 메시지를 가져가는 측
- 토픽 : 메시지 저장소
- 펍/섭 모델 : 중앙에 메시징 시스템 서버를 두고 이렇게 메시지를 보내고 받는 형태의 통신
- 프로듀서가 컨슈머에게 직접 메시지를 전달하지 않고, 중간의 메시징 시스템에 전달
- 컨슈머가 불능 상태가 되더라도 프로듀서에는 영향이 없음. 즉, 메세지는 유실되지 않음
- 다대다 통신이 아니기 때문에 확장 용이
- 정확한 전달 여부를 확인하려면 코드가 복잡함
- 중간에 메시징 시스템을 통하기 때문에 메시지 전달 속도가 빠르진 않다.
- 메시지 보관, 교환, 전달 과정에서의 신뢰성에 초점을 맞췄기 때문에 속도와 용량은 그렇게 중요하지 않았음
- 이러한 기존의 메시징 시스템의 단점을 극복하기 위해 카프카는 메시지 교환 전달의 신뢰성 관리를 프로듀서와 컨슈머 쪽으로 넘김
- 메시징 시스템 내에서의 작업량을 줄이고, 메시징 전달 성능에 집중시켜 고성능 메시징 시스템을 만듬
3. 카프카의 특징
프로듀서와 컨슈머의 분리
- 카프카는 메시징 전송 방식 중 메시지를 보내는 역할과 받는 역할이 완벽하게 분리된 펍/섭 방식을 적용함
- 각자의 역할이 완벽하게 분리되면서, 어느 한쪽 시스템에서 문제가 발생하더라도 연쇄작용이 발생할 확률은 매우 낮음.
- 웹 서버가 추가되더라도 카프카로만 보내면 되기 때문에 서버 추가에 대한 부담도 줄음
멀티 프로듀서, 멀티 컨슈머
- 카프카는 하나의 토픽에 여러 프로듀서 또는 컨슈머들이 접근 가능한 구조로 되어있음
- 데이터 분석 및 처리 프로세스에서 하나의 데이터를 다양한 용도로 사용하는 요구가 많아지기 시작했고, 멀티 기능 덕분에 이러한 요구를 손쉽게 충족할 수 있음
디스크에 메시지 저장
- 일반적인 메시징 시스템들은 컨슈머가 메시지를 읽어가면 큐에서 바로 메시지를 삭제함.
- 카프카는 컨슈머가 메시지를 읽어가더라도 정해져 있는 보관 주기 동안 디스크에 메시지를 저장.
- 앞에서 말한 멀티 컨슈머도 카프카에 메시지들이 디스크로 저장되어 있기 때문에 가능한 것임.
- 메시지 손실 없이 작업이 가능
확장성
- 카프카는 확장이 매우 용이하도록 설계되어 있음. 하나의 카프카 클러스터는 3개의 브로커로 시작해 수십 대의 브로커로 확장이 가능
- 확장 작업은 카프카 서비스의 중단 없이 온라인 상태에서 작업이 가능
높은 성능
- 고성능을 유지하기 위해 카프카는 내부적으로 분산 처리, 배치 처리 등 다양한 기법을 사용하고 있음.
4. 카프카의 확장과 발전
- 카프카를 통해 ESB, 메시지 버스, 이벤트 버스 등과 같이 기업 내 데이터 흐름을 중앙에서 관리하는 많은 사례들이 생겨남
- 필요한 모든 데이터가 연결되어 서로 가져갈 수 있는 형태로 발전하고 있음
- 오늘날의 카프카는 단순한 메시지 큐의 기능을 넘어 많은 기업의 비즈니스 확장 요구에 맞춰 기업 내 중요 시스템 중 하나로 널리 사용되고 있음
댓글남기기