기술 블로그

아파치 카프카의 역사와 미래 본문

온라인강의/아파치 카프카 애플리케이션

아파치 카프카의 역사와 미래

parkit 2023. 9. 5. 09:01
728x90
반응형

1. 카프카의 탄생

 

시간이 지날수록 아키텍처는 거대해졌고, 소스 애플리케이션과 타겟 애플리케이션의 개수가 점점 많아지면서 문제가 생김.

 

이를 해결하기 위해, 링크드인 데이터팀에서는 데이터 파이프라인의 파편화를 개선하려고 하였지만, 데이터 파이프라인의 복잡도를 낮춰주는 아키텍처가 되지는 못함.

 

결국 링크드인의 데이터팀은 신규 시스템을 만들기로 결정했고, 그 결과물이 바로 아파치 카프카다.

 

링크드인의 내부 데이터 흐름을 개선하기 위해 개발한 것이 카프카다.

 

 

2. 메시지 큐 구조를 그대로 살린 카프카 내부 구조

 

 

기존에 1:1 매칭으로 개발하고 운영하던 데이터 파이프라인의 커플링으로 인해 한 쪽의 이슈가 다른 한 쪽의 애플리케이션에 영향을 미치곤 했지만, 카프카는 이러한 의존도를 타파하였음.

 

어느 타깃 애플리케이션으로 데이터를 보낼 것인지 고민하지 않아도 되며, 우선적으로 카프카로 넣으면 됨.

 

카프카 내부에 데이터가 저장되는 파티션의 동작은 FIFO 방식의 Queue 자료구조와 유사함.

 

* 프로듀서 : Queue에 데이터를 보내는 것

* 컨슈머 : Queue에서 데이터를 가져오는 것

 

 

3. 빅데이터 파이프라인에 적합한 카프카의 특징 4가지

  • 높은 처리량 : 많은 양의 데이터를 묶음 단위로 처리하는 배치로 빠르게 처리 가능하며, 여러 파티션에 분배하고 데이터를 병렬처리 할 수 있음. ex: 대용량 로그 데이터
  • 확장성 : 클러스터의 브로커 개수를 자연스럽게 늘려 Scale-Out 할 수 있고, 데이터가 적어지고 추가 서버들이 필요없으면 Scale-In 할 수 있음.
  • 영속성 : 카프카는 데이터를 파일 시스템에 적재함. 운영체제 레벨에서의 Page Cache 영역을 메모리에 따로 생성하여 사용. 디스크 기반의 파일 시스템을 활용한 덕분에 안전하게 데이터를 처리할 수 있음.
  • 고가용성 : 서버를 직접 운영하는 On-Premise 환경의 서버 랙 또는 Public Cloud의 리전 단위 장애에도 데이터를 안전하게 복제할 수 있는 브로커 옵션들이 준비되어 있음.

 

4. 데이터 레이크 아키텍처와 카프카의 미래

  • 람다 아키텍처 : 데이터 처리 방식을 명확히 나눌 수 있지만, 레이어가 2개로 나뉘기 때문에 생기는 단점이 있다. 데이터를 분석 및 처리하는 로직이 따로 존재. 그리고 배치 데이터와 실시간 데이터를 융합하여 처리할 때는 다소 유연하지 못함.

  • 카파 아키텍처 : 스피드 레이어와 서빙 레이어만 존재. 람다 아키텍처의 단점을 해소. 스피드 레이어에서 데이터를 모두 처리.

 

5. 카파 아키텍처의 활용

로그는 배치 데이터를 스트림으로 표현하기에 적합하다. 배치 데이터를 로그로 표현할 때는 시간(Timestamp)도 저장함.

따라서, 각 시점의 모든 스냅샷 데이터를 저장하지 않아도 됨.

 

 

6. 배치 데이터와 스트림 데이터

  • 배치 데이터 : 한정된(bounded) 데이터 처리. 대규모 배치 데이터를 위한 분산 처리 수행. 복잡한 키 조인 수행.
  • 스트림 데이터 : 무한(unbounded) 데이터 처리. 지속적으로 들어오는 데이터를 위한 분산 처리 수행. 단순한 키 조인 수행.

 

7. 스트림 데이터를 배치로 사용하는 방법(in 카프카)

스트림 데이털르 배치 데이터로 사용하는 방법은 로그에 시간을 남기는 것.

카프카는 로그에 시간(Timestamp)을 남김.

 

 

8. 스트리밍 데이터 레이크

카파 아키텍처에서 서빙 레이어를 제거한 것이다.

 

스피드 레이어로 사용되는 카프카에 분석과 프로세싱을 완료한 거대한 용량의 데이터를 오랜 기간 저장하고, 사용할 수 있다면, 서빙 레이어는 제거되어도 된다. 오히려 서빙 레이어와 스피드 레이어가 이중으로 관리되는 운영 리소르를 줄일 수 있을 것이다.

 

아직은 카프카를 스트리밍 데이터 레이크로 사용하기 위해 개선해야 하는 부분이 있음.

우선 자주 접근하지 않는 데이터를 굳이 비싼 자원(브로커의 메모리, 디스크)에 유지할 필요가 없음.

 

카프카 클러스터에서 자주 접근하지 않는 데이터는 따로 별도의 저장소에 저장하고,

자주 사용하는 데이터만 브로커에서 사용하는 구분 작업이 필요.

 

9. 정리

  • 카프카는 중앙집중화 구조
  • 카프카의 파티션 내부 구조는 메시지 Queue와 동일한 FIFO 구조
  • 람다 아키텍처에서 카프카는 스피드 레이어에 위치함
  • 람다 아키텍처는 프로세싱 레이어가 2개로 나뉘어지기 때문에 로직이 2개로 나뉜다는 단점이 있음
  • 카파 아키텍처는 람다 아키텍처의 단점을 개선한 아키텍처
  • 스트리밍 데이터 레이크는 서빙 레이어를 제거하고, 카프카를 롱텀 저장소로 사용하는 것.
728x90
반응형