공부해봅시당
[KAFKA] 들어가기 전 본문
현재 작성 중인 KAFKA 시리즈는 [카프카 핵심 가이드] 책을 보고 정리한 글임을 밝힙니다.
들어가기 전
카프카의 시작
카프카는 링크드인에서 구축한 내부 인프라스트럭처
등장배경
- 데이터를 저장하기 위해 만들어진 데이터베이스와 다른 시스템들은 많이 있었지만, 지속적인 데이터의 흐름을 처리할 수 있게 해주는 것은 없었음
- 카프카를 개발하기 전 메시징 시스템에서부터 로그 수집 시스템과 ETL 툴에 이르는 모든 종류의 현존하는 해법들을 실험해봤지만, 만족스러운 것은 없었음
- 따라서 완전히 새로운 것을 개발하기로 함
조건
- 관계형 데이터베이스나 키-값 저장소, 검색 인덱스, 혹은 캐시처럼 데이터 저장에 초점을 둬서는 안되었음
- 대신 데이터를 지속적으로 진화하고 성장하는 스트림으로서의 데이터를 다루는 것에 초점을 맞추고, 이에 근거한 데이터 아키텍처와 시스템을 구축해야 했음
카프카는 무엇일까
- 스트리밍 플랫폼으로 생각할 수 있음
- 데이터 스트림을 쓰고, 읽고, 저장하고, 처리할 수 있게 해주는 시스템
- 메시지 스트림을 쓰고 읽게 해준다는 점에서 메시징 시스템과 유사함
- ActiveMQ나 RabbitMQ, IBM의 MQ 등과 유사함
- 하지만 중대한 3가지 차이점이 있음
- 1. 카프카는 현대적인 분산 시스템임
- 컴퓨터 네트워크로 연결된 일반적인 하드웨어 위에서 분산 클러스터 형태로 작동하며, 거대 회사들의 모든 애플리케이션을 처리할 수 있을 정도로 확장이 가능함
- 따라서 기업이 보유한 모든 종류의 데이터 스트림을 처리할 수 있을 정도로 신축성 있게 확장 가능한 중심 플랫폼의 역할을 할 수 있음
- 수십 개의 메시지 브로커를 제각각 운용하고, 서로 다른 앱들을 일일이 연결하지 않아도 됨
- 2. 카프카는 원하는 만큼 오랫동안 데이터를 저장할 수 있도록 만들어진 진정한 저장 시스템임
- 카프카를 서로 다른 시스템 간의 연결 계층으로 사용하고자 할 때 크나큰 이점이 됨
- 데이터가 복제되고, 영구적이며, 원하는 만큼 오랫동안 보존할 수 있는 만큼 데이터 전송을 확실하게 보장할 수 있기 때문임
- 3. 스트림 처리의 세계는 추상화의 수준을 현격히 끌어올림
- 대부분의 메시징 시스템은 단순히 메시지를 전달만 하는 것이 보통
- 카프카에 내재된 스트림 처리 능력은 훨씬 더 적은 코드를 사용해서 기존 스트림에서 파생 스트림과 데이터세트를 동적으로 산출할 수 있게 해줌
- 1. 카프카는 현대적인 분산 시스템임
따라서 카프카를 단순히 또 다른 메시지 큐로 간주하는 것은 적절하지 않음
하둡과의 차이점
- 유사점
- 매우 큰 규모의 데이터 스트림을 저장하고 지속적으로 처리할 수 있게 해준다는 점
- 차이점
- 하둡과 빅데이터
- 분석 애플리케이션을 목적으로 함
- 카프카
- 저지연(low latency)라는 특성을 가지기 때문에 직접적으로 비즈니스를 구동하는 코어 애플리케이션을 구축하는 데 활용될 수 있음
- 하둡과 빅데이터
ETL이나 데이터 통합 툴과의 차이점
- 유사점
- 데이터를 흐르게 하는 것이 목적이고 카프카 역시 마찬가지임
- 차이점
- 데이터 통합 툴
- 한 시스템의 데이터를 긁어모아서 다른 시스템에 집어넣는 역할을 함
- 카프카
- 실시간 이벤트 스트림의 처리를 지향하는 플랫폼의 역할을 함
- 기존의 애플리케이션과 데이터 시스템을 연결할 수 있을 뿐 아니라 데이터 스트림을 작동시키는 커스텀 애플리케이션을 구동시키기 위해 사용될 수 있다는 것을 의미함
- 데이터 통합 툴
이벤트 스트림에 중점을 두는 아키텍처가 매우 중요함
모든 상황에 걸쳐 모든 데이터 스트림을 한데 모을 수 있는 능력이 스트리밍 플랫폼의 개념을 매력적으로 보이게 만듦
'STUDY > Kafka' 카테고리의 다른 글
[Kafka] 카프카 시작하기 4 (0) | 2023.06.29 |
---|---|
[Kafka] 카프카 시작하기 3 (0) | 2023.06.29 |
[Kafka] 카프카 시작하기 2 (0) | 2023.06.29 |
[Kafka] 카프카 시작하기 1 (1) | 2023.06.29 |