티스토리 뷰

반응형

[카프카, 데이터 플랫폼의 최강자 - www.yes24.com/Product/Goods/59789254]

 

  • 카프카 : 대용량, 대규모 메시지 데이터를 빠르게 처리하도록 개발된 메시징 플랫폼
    • 빅데이터를 분석할 때 여러 스트리지와 분석 시스템에 데이터를 연결하기 위한 필수도구

1.1/ 카프카의 탄생 배경

  • 카프카 도입 당시 링크드인의 서비스 유지에 필요했던 것들
    • 메트릭 모니터링용 데이터 시스템 : 미터링(사용량, 응답 시간, 에러카운트 등) 저장할 시계열(Time Serie) 데이터 처리용 시스템
    • 로그 모니터링용 데이터 시스템 : 로그 저장, 실시간/배치로 분석할 수 있도록 데이터를 저장
    • 메인 데이터 시스템 : OLTP(OnLine Transaction Process) 쿼리 실행
    • key-value storage : 실시간으로 처리해줘야하는 내용 저장
    • 데이터 웨어하우스 : 데이터를 모아 제공 or 배치 분석
    • 하둡 시스템 : 빅데이터 저장/처리, ETL(Extract, Transform, Load) 작업을 함
  • end-to-end 연결 방식의 아키텍처의 문제점
    • 실시간 트랜잭션(OLTP) 처리와 비동기 처리가 동시에 이뤄지지만 통합된 전송 영역이 없으니 복잡도가 증가한다
    • 데이터 파이프라인 관리가 어렵다
  • 카프카의 탄생
    • 모든 시스템으로 데이터를 전송할 수 있고, 준 실시간 처리도 가능하며, 급속도로 성장하는 서비스를 위해 확장이 용이한 시스템을 직접 만들기로 함
    • 목표
      • 프로듀서와 컨슈머의 분리
      • 메시징 시스템과 같이 영구 메시지 데이터를 여러 컨슈머에게 허용
      • 높은 처리량을 위한 메시지 최적화
      • 데이터가 증가함에 따라 스케일아웃이 가능한 시스템
  • 카프카 적용
    • 사내에서 발생하는 모든 이벤트/데이터의 흐름을 중앙에서 관리하는 카프카를 적용해 아키텍처가 깔끔해졌음
    • 달라진 점
      • 카프카가 전사 데이터 파이프라인으로 동작하기 때문에 모든 데이터 스토어와 여기서 발생하는 데이터이벤트가 카프카를 중심으로 연결되어 있음
      • 새로운 데이터 스토어가 들어와도 서로 카프카가 제공하는 표준 포맷으로 연결되어 있어서 데이터를 주고받는 데 부담이 없음
      • 신뢰성 높은 데이터 분석뿐만 아니라 실시간 분석도 할 수 있게 됨
  • 카프카의 지향점
    • 카프카를 메시지 전달의 중앙 플랫폼으로 두고 기업에서 필요한 모든 데이터 시스템 뿐만 아니라 마이크로서비스, SaaS 등의 서비스 등과 연결된 파이프라인을 만드는 것을 목표로 두고 개발되었음

1.2/ 카프카의 동작 방식과 원리

  • 메시징시스템
    • 메시지 : 데이터 단위
    • 토픽 : 카프카의 메시지 저장소, 식별자
    • 퍼블리셔(publisher)/프로듀서(producer) : 메시지를 토픽에 데이터를 저장
    • 서브스크라이버(subscriber)/컨슈머(consumer) : 원하는 토픽에서 데이터를 가지고 감
    • pub/sub 모델 : 중앙에 메시징 시스템 서버를 두고 메시지를 보내고(publish) 받는(subscrie) 형태의 통신
      • 비동기 메시징 전송 방식
      • 발신자의 메시지에는 수신자가 정해져 있지 않은 상태로 발행됨
      • 구독을 신청한 수신자만이 정해진 메시지를 받을 수 있음
      • 다이나믹한 네트워크 토폴로지와 높은 확장성을 확보할 수 있음
  • pub/sub이 아닌 일반적인 통신
    • 전송 속도가 빠르고 전송 결과를 신속하게 알 수 있음
    • 특정 개체에 장애가 발생한 경우 메시지를 보내는 쪽에서 대기 처리 등을 개별적으로 해주지 않으면 장애가 발생할 수 있음
    • 확장성이 좋지 않음
  • pub/sub 모델
    • 특징 
      • 프로듀서가 메시지를 컨슈머에게 직접 전달하는 게 아닌 중간의 메시징 시스템에 전달
      • 메시지 데이터와 수신처 ID를 포함시켜서 전달
      • 메시징 시스템의 교환기가 메시지의 시신처 ID 값을 확인한 다음 컨슈머들의 큐에 전달
      • 컨슈머는 자신의 큐를 모니터링하고 있다가 큐에 메시지가 전달되면 이 값을 가져감
    • 장점
      • 개체가 하나 빠지거나 수신 불능 상태가 되어도 메시징 시스템만 살아있으면 메시지가 유실되지 않음
      • 확장성이 용이
      • 교환기(exchanger)의 룰에 의해서 데이터가 수신처의 큐에 정확하게 전달되므로 메시지 데이터 유실의 염려가 없음
    • 단점
      • 메시지가 정확하게 전달되었는지 확인하려면 코드가 좀 더 복잡해짐
      • 메시지 전달 속도가 빠르지 않음
  • 기존 pub/sub 모델
    • 간단한 이벤트(수 kb 정도의 크기)를 서로 전송하는 데 주로 사용됨
      • 메시징 시스템 내부 교환기의 부하, 컨슈머들의 큐 관리, 메시지의 정합성, 전달 결과 관리하는 내부 프로세스가 다양하고 복잡해서
    • 신뢰성에 중점을 맞췄기 때문에 속도와 용량은 중요하지 않았음
  • 카프카
    • 메시지 교환 전달의 선뢰성 관리를 프로듀서와 컨슈머 쪽으로 넘김
    • 부하가 많이 걸리는 교환기 기능 역시 컨슈머가 만들 수 있게 함
    • 메시징 시스템 내에서의 작업량을 줄이고 메시징 전달 성능에 집중
      => 고성능 메시징 시스템을 만들어 냄
  • 카프카의 메시지 전달 순서
    • 프로듀서는 새로운 메시지를 카프카로 보냄
    • 프로듀서가 보낸 메시지는 카프카에 컨슈머 큐(토픽)에 도착해 저장됨
    • 컨슈머는 카프카 서버에 접속하여 새로운 메시지를 가져감

1.3/ 카프카의 특징

  • 프로듀서와 컨슈머의 분리
    • 메시지 전송 방식 중 메시지를 보내는 역할과 받는 역할이 완벽하게 분리된 pub/sub 방식 적용
      • 각각의 서비스 서버들은 모니터링이나 분석 시스템의 상태 유무와 관계없이 카프카로 메시지를 보내는 역할 수행
      • 모니터링이나 분석 시스템들도 서비스 서버들의 상태유무와 관계없이 카프카에 저장되어 있는 메시지만 가져오면 됨
    • 서버 추가에 대한 부담도 줄일 수 있음
  • 멀티 프로듀서, 멀티 컨슈머
    • 카프카는 하나의 토픽에 여러 프로듀서 또는 컨슈머들이 접근 가능한 구조로 되어있음
      • 데이터 분석 및 처리 프로세스에서 하나의 데이터를 다양한 용도로 사용하는 요구들을 손쉽게 충족할 수 있음
    • 중앙집중현 구조로 구성 가능
  • 디스크에 메시지 저장
    • 카프카는 컨슈머가 메시지를 읽어 가더라도 정해져 있는 보관 주기 동안 디스크에 메시지를 저장해둔다
    • 컨슈머는 메시지 손실 없이 메시지를 가져갈 수 있음
    • 멀티 컨슈머가 가능해짐
  • 확장성
    • 카프카는 확장이 매우 용이하도록 설계되어 있음
  • 높은 성능

* 카프카 용어 정리

  • 카프카(kafka) : 아파치 프로젝트 애플리케이션 이름, 클러스터 구성이 가능하며 카프카 클러스터라고 부름
  • 브로커(broker) : 카프카 애플리케이션이 설치되어 있는 서버 또는 노드
  • 토픽(topic) : 프로듀서와 컨슈머들이 카프카로 보낸 자신들의 메시지를 구분하기 위한 네임으로 사용
  • 파티션(partition) : 병렬처리가 가능하도록 토픽을 나눌 수 있고 많은 양의 메시지 처리를 위해 파티션 수를 늘려줄 수 있음
  • 프로듀서(producer) : 메시지를 생산하여 브로커의 토픽 이름으로 보내는 서버 또는 애플리케이션 등
  • 컨슈머(consumer) : 브로커의 토픽 이름으로 저장된 메시지를 가져가는 서버 또는 애플리케이션 등

1.4/ 카프카의 확장과 발전

  • 서비스 기반 아케텍처(SOA, Service Oriented Architecture)
    • 엔터프라이즈 서비스 버스(ESB, Enterprise Service Bus)
      • 다양한 시스템과 연동하기 위한 멀티 프로토콜과 데이터 타입 지원
      • 느슨한 결합을 위한 메시지 큐 지원
      • 정기적으로 데이터를 가져오는 대신 이벤트 기반 통신 지향
    • SOA는 업무를 서비스라는 단위로 쪼개고, 각 서비스 간의 연결은 ESB를 통해 연결한다는 철학 지향
  • 기업에서 사용하고 있는 예시
    • 링크드인
    • 넷플릭스
    • 패브릭

1.5/ 정리

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함