1. 들어가며
들어가며
Last updated
들어가며
Last updated
'아파치 카프카 애플리케이션 프로그래밍 with 자바 - 최원영' 통한 정리 및 실습
거대해진 아키텍처의 데이터 파이프라인이 복잡해지기 시작.
링크드인에서는 복잡도를 낮추기 위해 신규 시스템을 개발 -> Apache Kafka
프로듀서(Producer) : 데이터를 생산 (push)
컨슈머(Consumer) : 데이터를 소비 (pull)
카프카 내부에 데이터가 저장되는 파티션의 동작은 FIFO 방식의 큐 자료구조와 유사.
카프카는 직렬화,역직렬화를 통해 ByteArray로 통신하기 때문에 데이터 포맷은 제한이 없다.
KIP(Kafka Improvement Proposal)
카프카의 주요 변경사항을 제안하는 방법 중 하나로 누구나 생성할 수 있다.
데이터 레이크(data lake) : 필터링 되거나 패키지화가 되지 않은 데이터가 모이는 저장 공간. -> 운영하는 서비스로부터 수집 가능한 모든 데이터 수집.
데이터 파이프라인 : end-to-end를 개선하고 유연하면서 확장가능하게 자동화한 것
데이터를 data lake로 모으기 위해서는 복잡도가 올라가는 end-to-end 방식은 문제가 발생한다. 이에 데이터 파이프 라인을 구축해야 하는데 아파치 카프카가 매우 적합하다.
데이터 배치 처리를 통해 네트워크 통신 횟수를 최소한으로 줄인다. (실시간 로그 데이터 처리에 적합)
파티션 단위를 통해 데이터 병렬 처리가 가능. (시간당 데이터 처리량 ↑)
파티션 개수만큼 컨슈머를 증가시키면 처리량 또한 증가한다.
브로커 개수의 스케일 아웃(scale-out), 스케일 인(scale-in)
페이지 캐시 메모리 영역을 사용.
한번 읽은 파일 내용을 메모리에 저장 시켰다가 다시 사용하는 방식
파일 시스템을 활용한 덕분에 프로세스 재시작에도 영속성이 보장.
데이터의 복제(replication)을 통한 특징이다.
3대 이상의 브로커로 구성하는 이유
데이터 유실의 가능성을 막기 위해 min.insync.replica의 옵션을 사용하는 경우
(isr은 2이상으로 설정해야 의미가 존재)
2대의 브로커라면, 장애에 대응할 수 없다.
데이터 레이크를 구성하는 람다 아키텍처와 카파 아키텍처가 존재.
해당 아키텍처들의 구성 중 하나인 스피드 레이어는 내결함성과 장애허용 특징을 지녀야한다. 이에 카프카가 완벽히 부합한다.
SPOF : 전체 시스템의 작동을 멈춰 버리는 한 부분 (ex: router)
내결함성 : 진행 중이던 작업이나 데이터가 돌발 상황에 손상되지 않도록 대비.
장애 허용 : 결함 or 고장 발생 시에도 정상적 혹은 부분적으로 기능을 수행 가능한 것.