1. 들어가며

들어가며

'아파치 카프카 애플리케이션 프로그래밍 with 자바 - 최원영' 통한 정리 및 실습

1.1 카프카의 탄생

거대해진 아키텍처의 데이터 파이프라인이 복잡해지기 시작.

링크드인에서는 복잡도를 낮추기 위해 신규 시스템을 개발 -> Apache Kafka

링크드인의 목표
  1. 높은 처리량으로 실시간 처리한다.

  2. 임의의 타이밍에 데이터를 읽는다.

  3. 다양한 제품과 시스템에 쉽게 연동한다.

  4. 메시지를 잃지 않는다.

  • 프로듀서(Producer) : 데이터를 생산 (push)

  • 컨슈머(Consumer) : 데이터를 소비 (pull)

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

카프카는 직렬화,역직렬화를 통해 ByteArray로 통신하기 때문에 데이터 포맷은 제한이 없다.

KIP(Kafka Improvement Proposal)

카프카의 주요 변경사항을 제안하는 방법 중 하나로 누구나 생성할 수 있다.

1.2 빅데이터 파이프라인에서 카프카의 역할

  • 데이터 레이크(data lake) : 필터링 되거나 패키지화가 되지 않은 데이터가 모이는 저장 공간. -> 운영하는 서비스로부터 수집 가능한 모든 데이터 수집.

  • 데이터 파이프라인 : end-to-end를 개선하고 유연하면서 확장가능하게 자동화한 것

데이터를 data lake로 모으기 위해서는 복잡도가 올라가는 end-to-end 방식은 문제가 발생한다. 이에 데이터 파이프 라인을 구축해야 하는데 아파치 카프카가 매우 적합하다.

아파치 카프카의 적합성

높은 처리량

  • 데이터 배치 처리를 통해 네트워크 통신 횟수를 최소한으로 줄인다. (실시간 로그 데이터 처리에 적합)

  • 파티션 단위를 통해 데이터 병렬 처리가 가능. (시간당 데이터 처리량 ↑)

  • 파티션 개수만큼 컨슈머를 증가시키면 처리량 또한 증가한다.

확장성

  • 브로커 개수의 스케일 아웃(scale-out), 스케일 인(scale-in)

영속성

  • 페이지 캐시 메모리 영역을 사용.

  • 한번 읽은 파일 내용을 메모리에 저장 시켰다가 다시 사용하는 방식

  • 파일 시스템을 활용한 덕분에 프로세스 재시작에도 영속성이 보장.

고가용성

  • 데이터의 복제(replication)을 통한 특징이다.

3대 이상의 브로커로 구성하는 이유

데이터 유실의 가능성을 막기 위해 min.insync.replica의 옵션을 사용하는 경우

(isr은 2이상으로 설정해야 의미가 존재)

2대의 브로커라면, 장애에 대응할 수 없다.

고가용성

서버와 네트워크, 프로그램 등의 정보 시스템이 상당히 오랜 기간 동안 지속적으로 정상 운영이 가능한 성질을 말한다. (高)가용성이란 "가용성이 높다"는 뜻으로서, "절대 고장 나지 않음"을 의미

온프레미스(on-premise)

자체적으로 보유한 공간에 물리적으로 하드웨어 장비를 가지고 직접 운영하는 방식

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

데이터 레이크를 구성하는 람다 아키텍처와 카파 아키텍처가 존재.

해당 아키텍처들의 구성 중 하나인 스피드 레이어는 내결함성과 장애허용 특징을 지녀야한다. 이에 카프카가 완벽히 부합한다.

  • SPOF : 전체 시스템의 작동을 멈춰 버리는 한 부분 (ex: router)

  • 내결함성 : 진행 중이던 작업이나 데이터가 돌발 상황에 손상되지 않도록 대비.

  • 장애 허용 : 결함 or 고장 발생 시에도 정상적 혹은 부분적으로 기능을 수행 가능한 것.

Last updated