개발관련 도서/Apach Kafka

아파치 카프카

prden 2022. 12. 4. 16:05

1. 카프카의 탄생 배경

파편화된 데이터 수집 및 분배 아키텍처를 운영하는데 큰 어려움을 겪던 링크드인이 개발했다.

카프카는 각각의 애플리케이션끼리 연결하여 데이터를 처리하는 것이 아닌, 한 곳에 모아 처리할 수 있도록 중앙집중화했다. 즉, 카프카는 기업의 대용량 데이터를 수집하고 이를 사용자들이 실시간 스트림으로 소비할 수 있도록 만들어주는 일종의 중추 신경으로 동작한다고 볼 수 있다.

 

카프카를 중앙에 배치하면서 소스애플리케이션과 타깃 애플리케이션 사이의 의존도를 최소화하여 커플링을 완화하였다.

카프카 내부에 데이터가 저장되는 파티션의 동작은 FIFO 방식의 큐 자료구조와 유사하다. 큐에 데이터를 보내는 것이 프로듀서이고 큐에서 데이터를 가져가는 것이 컨슈머이다.

 

상용 환경에서 카프카는 최소 3대 이상의 서버(브로커)에서 분산 운영하여 프로듀서를 통해 전송받은 데이터를 파일 시스템에 안전하게 기록한다. 

 

2. 카프카의 특징(높은 처리량, 확장성, 높은 영속성, 고가용성)

1) 높은 처리량

카프카는 프로듀서가 브로커로 데이터를 보낼 때와 컨슈머가 브로커로부터 데이터를 받을 때 모두 묶어서 전송한다. 

많은 양의 데이터를 묶음 단위로 처리하는 배치로 빠르게 처리할 수 있기 때문에 대용량의 실시간 로그데이터를 처리하는 데 적합하다. 또한, 파티션 단위를 통해 동일 목적의 데이터를 여러 파티션에 분배하고 데이터를 병렬처리 할 수 있다. 

파티션 개수만큼 컨슈머 개수를 늘려서 동일 시간당 데이터 처리량을 늘리는 것이다. 

 

2) 확장성

카프카는 가변적인 환경에서 안정적으로 확장 가능하도록 설계 되어있다. 데이터가 적을 때는 카프카 클러스터의 블로커를 최소한의 개수로 운영하다가 데이터가 많아지면 브로커 개수를 자연스럽게 늘리는 스케일 아웃을 할 수 있다. 

반면 데이터가 적어지고 추가 서버들이 더는 필요 없어지면 브로커 개수를 줄여 스케일 인을 할 수도 있다.

 

3) 영속성

영속성이란 데이터를 생성한 프로그램이 종료 되더라도 사라지지 않은 데이터의 특성을 뜻한다.카프카는 데이터를 메모리에 저장하지 않고 파일 시스템에 저장해 애플리케이션이 장애 발생으로 급작스럽게 종료되더라도 프로세스를 재시작하여 안전하게 데이터를 다시 처리할 수 있다.

 

4) 고가용성

3개 이상의 서버들로 운영되는 카프카 클러스터는 일부 서버에 장애가 발생하더라도 무중단으로 안전하고 지속적으로 데이터를 처리 할 수 있다. 클러스터로 이루어진 카프카는 데이터의 복제를 통해 고가용성의 특징을 가지게 되었다. 

 

3. 데이터 레이크 아키텍쳐

 1) 람다 아키텍쳐 :

데이터를 배치로 모으는 구조는 유연하지 못했고 실시간으로 생성되는 데이터들에대한 인사이트를 서비스 애플리케이션에 빠르게 전달하지 못하는 단점이 있었다. 또한, 원천 데이터로부터 파생된 데이터의 히스토리르 파악하기 어려웠고 계속되는 데이터의 가공으로 인해 데이터가 파편화 되면서 데이터 거버넌스를 지키기 어려웠다. 이를 해결하기 위해 기존의 배치 데이터를 처리하는 부분외에 스피드 레이어라고 불리는 실시간 데이터 ETL작업 영역을 정의한 아키텍쳐를 만들었는데, 이것이 람다 아키텍쳐이다.

 

아파치 카프카 p10

 가. 배치 레이어 : 배치 레이어는 배치 데이터를 모아서 특정 시간, 타이밍 마다 일괄처리한다. 

 나. 서빙 레이어 : 서빙 레이어는 가공된 데이터를 데이터 사용자, 서비스 애플리케이션이 사용할 수 있도록 데이터가 저장된 공간이다. 

 다. 스피드 레이어: 서비스에서 생성되는 원천데이터를 실시간으로 분석하는 용도로 사용한다. 스피드 레이어에서 가공, 분석된 실시간 데이터는 사용자 또는 서비스에서 직접 사용할 수 있지만 필요한 경우에 서빙 레이어로 데이터를 보내서 저장하고 사용할 수 있다. 서비스 애플리케이션들의 실시간 데이터를 짧은 지연시간으로 처리, 분석할 수 있기 때문이다. 

--> 데이터를 배치 처리하는 레이어와 실시간 처리하는 레이어로 분리한 람다 아키텍쳐는 데이터 처리 방식을 병확히 나눌 수 있었지만 레이어가 2개로 나뉘면서 생기는 단점이 있다. 데이터를 분석, 처리하는 데 필요한 로직이 2벌로 각각 레이어에 따로 존재해야 한다는 점과 배치 데이터와 실시간 데이터를 융합하여 처리할 때 다소 유연하지 못한 파이프라인을 생성해야 한다는 점이다. 이를 극복하기 위해 카파 아키텍쳐가 나왔다. 카파 아키텍쳐의 가장 큰 특징은 배치 레이어를 제거하고 모든 데이터를 스피드 레이어에 넣어 처리한다는 점이다. 

아파치 카프카 p12

 2) 카파 아키텍쳐

카파 아키텍처는 스피드 레이어에서 데이터를 모두 처리할 수 있었으므로 서비스에서 생성되는 모든 종류의 데이터를 스트림 처리해야한다. 

배치 데이터를 스트림 프로세스로 처리할 수 있게 된 배경은 모든 데이터를 로그로 바라보는 것에서 시작했다. (데이터의 집합) 배치 데이터를 로그로 표현할 때는 각 시점의 배치 데이터의 변환 기록을 시간 순서대로 기록하면서 각 시점의 모든 스냅샷 데이터를 저장하지 않고도 배치 데이터로 표현할 수 있게 되었다. 

 

4. 아파치 카프카 추가 공부 사항

# 프로듀셔, # 컨슈머, #커넥트 #스트림즈..

'개발관련 도서 > Apach Kafka' 카테고리의 다른 글

Kafka 설치 및 Springboot 연동  (0) 2023.06.30
Kafka 용어  (0) 2023.06.29