반응형
책 카프카, 데이터 플랫폼의 최강자 1장에 대한 요약 정리 내용입니다.
1장 카프카란 무엇인가
탄생 배경
- 카프카는 링크드인에서 처음 출발한 기술
- 링크드인이 급속도로 성장하면서 발생하는 내부 여러 이슈들을 해결하기 위해 탄생함
엔드투엔드(end-to-end) 연결 방식의 아키텍처는 많은 문제점이 있음
- 실시간 트랜잭션(OLTP) 처리와 비동기 처리가 동시에 이뤄지지만 통합된 전송 영역이 없어서 복잡도 증가함
- 데이터 파이프라인 관리가 어려움
- RDBMS, 하둡, 모니터링 시스템, 키-값 저장소 등이 처음에 각자의 목적에 맞게 만들어지지만 시간이 지나면서 서로 연결되어야하는 일들이 필연적으로 발생함
- 데이터 포맷과 처리 방법이 제각각이라 확장하기 힘들고 조정 및 운영에 비용이 많이듬
- 복잡성으로 인해 시스템 간 데이터가 달라져 데이터의 신뢰도도 낮아짐
링크드인이 이런 상황에 이르자, 개발팀을 이끌던 창시자 제이 크렙스와 니하 나케디, 준 라오가 팀을 구성해 다음을 목표로 시스템을 만들게 됨
- 프로듀서와 컨슈머의 분리
- 메시징 시스템과 같이 영구 메시지 데이터를 여러 컨슈머에게 허용
- 높은 처리량을 위한 메시지 최적화
- 데이터가 증가함에 따라 스케일아웃이 가능한 시스템
동작 방식과 원리
- 카프카는 기본적으로 메시징 서버로 동작함
- 펍/섭 모델로 통신함
펍/섭 모델
- 비동기 메시징 전송 방식으로, 발신자는 수신자를 특정하지 않고 메시지를 발행
- 구독을 신청한 수신자만이 정해진 메시지를 받을 수 있음
- 다이나믹한 네트워크 토폴로지와 높은 확장성 확보 가능함
- 단점은 직접 통신하지 않기 때문에 메시지가 정확하게 전달되었는지 확인하려면 코드가 좀더 복잡해지고, 중간에 메시징 시스템이 있어서 전달 속도가 빠르지 않음
기존의 메시징 시스템은 메시지 보관, 교환, 전달 과정에서 신뢰성 보장에 중점을 맞춰서 속도와 용량은 크게 중요하지 않았음
그래서 성능 문제로 일부 콤포넌트나 원격 통신 밖에 적용되지 못함
카프카는 기존 메시징 시스템의 단점 극복을 위해,
- 메시지 교환 전달 신뢰성 관리를 프로듀서/컨슈머에게 위임
- 부하가 많이 걸리는 교환기 기능도 컨슈머가 만들 수 있게함
=> 메시징 시스템 내의 작업량을 줄이고 메시징 전달 성능에 집중하여 고성능 메시징 시스템을 만들어 냄
메시지들은 토픽이라는 식별자를 이용해 토픽 단위로 저장됨
카프카의 특징
프로듀서와 컨슈머의 분리
- 프로듀서와 컨슈머 각자의 역할이 완벽하게 분리됨
- 어느 한쪽 시스템에서 문제가 발생해도 연쇄작용이 발생할 확률이 매우 낮음
- 프로듀서 서버가 추가되더라도 카프카로만 보내면되므로 서버 추가에 대한 부담이 적음
멀티 프로듀서, 멀티 컨슈머
- 카프카는 하나의 토픽에 여러 프로듀서나 컨슈머들이 접근 가능한 구조임
- 멀티 기능은 데이터 분석 및 처리 프로세스에서 하나의 데이터를 다양한 용도로 사용하기 쉽게함
디스크에 메시지 저장
- 기존 메시징 시스템과 가장 다른 특징 중 하나로, 일반적인 메시징 시스템은 컨슈머가 메시지를 읽으면 큐에서 바로 삭제
- 카프카는 읽어가더라도 정해진 보관 주기 동안 디스크에 메시지를 저장해둠
- 메시지 손실 위험이 없고 멀티 컨슘을 가능하게 해줌
확장성
- 확장이 매우 용이하게 설계되어 있음
- 카프카 서비스 중단없이 온라인 상태에서 확장 가능
높은 성능
- 내부적으로 분산 처리, 배치 처리 등의 다양한 기법으로 고성능을 유지함
용어 정리
- 브로커 : 카프카 애플리케이션이 설치되어 있는 서버 또는 노드
- 파티션 : 병렬처리 가능하도록 토픽을 나누는게 가능, 파티션 수를 늘려 처리량을 늘릴 수 있음
반응형
'개발' 카테고리의 다른 글
카프카, 데이터 플랫폼의 최강자 - 3장 카프카 디자인 (0) | 2020.08.30 |
---|---|
카프카, 데이터 플랫폼의 최강자 - 2장 카프카 설치 (0) | 2020.08.26 |
모바일 API 디자인 참고 사항 (0) | 2018.04.04 |
클린 코더 - 1장 프로의 마음가짐 (0) | 2017.10.20 |
실용주의 디버깅 - 2부 큰 그림 (2) | 2016.10.18 |