![[Kafka, 카프카] Kafka의 내부 구조와 데이터 파이프라인으로 적합한 이유](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVwkfE%2FbtsLB2DYgBc%2Fvw2XRBvnsRgka8mBSOf8Wk%2Fimg.png)
Kafka의 내부 구조
기존에 1:1 매칭으로 개발하고 운영하던 데이터 파이프라인은 커플링으로 인해 한쪽의 이슈가 다른 한쪽의 애플리케이션에 영향을 미치곤 했지만, 카프카는 이러한 의존도를 타파하였습니다.
이제 소스 애플리케이션에서 생성되는 데이터는 어느 타깃 애플리케이션으로 보낼 것인지 고민하지 않고 이단 Kafka로 넣으면 됩니다. Kafka 내부에 데이터가 저장되는 파티션의 동장은 FIFO방식으로 큐 자료구조와 유사합니다.
큐에 데이터를 보내는 것이 프로듀서이고 큐에서 데이터를 가져가는 것이 컨슈머입니다.
Kafka가 데이터 파이프라인으로 적합한 이유
높은 처리량
동일한 양의 데이터를 보낼 때 네트워크 통신 횟수를 최소한으로 줄인다면 동일 시간 내에 더 많은 데이터를 전송할 수 있습니다. 많은 양의 데이터를 묶음 단위로 처리하는 배치로 빠르게 처리할 수 있기 때문에 대용량의 실시간 로그 데이터를 처리하는 데에 적합합니다. 또한 파티션 단위를 통해 동일 목적의 데이터를 여러 파티션에 분배하고, 데이터를 병렬 처리할 수 있습니다. 파티션 개수만큼 컨슈머 개수를 늘려서 동일 시간당 데이터 처리량을 늘리는 것입니다.
확장성
데이터 파이프라인에서 데이터를 모을 때 데이터가 얼마나 들어올지는 예측하기 어렵습니다. 카프카는 가변적인 환경에서 안정적으로 확장 가능하도록 설계되었습니다. 데이터가 적을 때는 카프카 클러스터의 브로커를 최소한의 개수로 운영하다가 데이터가 많아지면 클러스터의 브로커 개수를 자연스럽게 늘려 스케일 아웃할 수 있습니다. 반대로 데이터 개수가 적어지고 추가 서버들이 더는 필요없어지면 브로커 개수를 줄여 스케일 인할 수 있습니다.
영속성
영속성이란 데이터를 생성한 프로그램이 종료되더라도 사라지지 않은 데이터를 뜻합니다. 카프카는 다른 메시징 플랫폼과 다르게 전송 받은 데이터를 메모리에 저장하지 않고 파일 시스템에 저장합니다. 운영체제에서는 파일 I/O 성능 향상을 위해 페이지 캐시 영역을 메모리에 따로 생성하여 사용합니다. 페이지 캐시 메모리 영역을 사용하여 한번 읽은 파일 내용은 메모리에 저장시켰다가 다시 사용하는 방식이기 때문에 카프카가 파일 시스템에 저장하고 데이터를 저장, 전송하더라도 처리량이 높은 것입니다. 덕분에 브로커 애플리케이션이 장애 발생으로 인해 갑작스럽게 종료되더라도 프로세스를 재시작하여 안전하게 데이터를 다시 처리할 수 있습니다.
고가용성
3개 이상의 서버들로 운영되는 카프카 클러스터는 일부 서버에 장애가 발생하더라도 무중단으로 안전하고 지속적으로 데이터를 처리할 수 있습니다. 클러스터로 이루어진 카프카는 데이터의 복제(replication)을 통해 고가용성의 특징을 가지게 되었습니다.
이러한 이유들로 인해 많은 기업에서 Kafka가 사랑받고 있는 것 같습니다 !
'개발공부 > Kafka' 카테고리의 다른 글
[Kafka, 카프카] Kafka Shell Sciprt 명령어 (0) | 2025.01.06 |
---|---|
[Kafka, 카프카] 카프카 설치 및 실행하기 (2) | 2024.12.17 |
개발의 모든 것 !
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!