본문 바로가기
서버인프라/카프카

APACHE KAFKA 이야기

by techwold ted 2021. 1. 25.

KAFKA 사용기

데이터의 빠지는 현상을 최대한 줄여야 하는 시스템 운영이 필요하던 곳에서, DB에 적재되어야 할 데이터 적재되지 못하는 현상이 발생하는 상황을 맞이 했습니다. 그런 데이터들이 중간중간에 빠지면서 계산이 맞지 않아 어려움을 격었는데요, 그때 많은 고민을 하던 중 KAFKA 도입에 대한 얘기를 했습니다. 필자는 시스템엔지니어인데 그당시 개발자들에게 KAFKA사용을 권하는게 가장 큰 힘든점 이었습니다.

그럼, KAFKA의 장점과 단점을 이야기 해 보겠습니다.

 

1. 장점

    - 속도

    - 메시지 소실율의 감소

    - 구조설계의 간소화

 

2. 단점

    - 진입장벽이 있음

    - 클러스터 구축에 있어 시스템 가용이 올라감. (zookeeper 3대, kafka 3대)

 

이벤트 스트리밍이란?

 이벤트 스트리밍은 인체의 중추 신경계에 해당하는 디지털 방식입니다. 비즈니스가 점점 더 소프트웨어 정의 및 자동화되고 소프트웨어 사용자가 더 많은 소프트웨어 인 '상시 작동'세계의 기술 기반입니다.기술적으로 말하면 이벤트 스트리밍은 데이터베이스, 센서, 모바일 장치, 클라우드 서비스 및 소프트웨어 애플리케이션과 같은 이벤트 소스에서 이벤트 스트림 형태로 실시간으로 데이터를 캡처하는 관행입니다. 나중에 검색 할 수 있도록 이러한 이벤트 스트림을 지속적으로 저장합니다. 이벤트 스트림을 실시간 및 소급 적으로 조작, 처리 및 반응합니다. 및 필요에 따라 이벤트 스트림을 다른 대상 기술로 라우팅합니다. 따라서 이벤트 스트리밍은 데이터의 지속적인 흐름과 해석을 보장하여 적절한 정보가 적절한 장소에 적시에 제공되도록합니다.

 

이벤트 스트리밍은 어디에 사용할 수 있습니까?

이벤트 스트리밍은 수많은 산업 및 조직의 다양한 사용 사례에 적용됩니다. 많은 예는 다음과 같습니다.

증권 거래소, 은행, 보험 등에서 실시간으로 결제 및 금융 거래를 처리합니다.
물류 및 자동차 산업과 같이 실시간으로 자동차, 트럭, 차량 및 배송을 추적하고 모니터링합니다.
공장 및 풍력 단지와 같은 IoT 장치 또는 기타 장비에서 센서 데이터를 지속적으로 캡처하고 분석합니다.
소매, 호텔 및 여행 산업, 모바일 애플리케이션과 같은 고객 상호 작용 및 주문을 수집하고 즉시 대응합니다.
병원 치료에서 환자를 모니터링하고 상태 변화를 예측하여 응급 상황에서 적시에 치료할 수 있도록합니다.
회사의 여러 부서에서 생성 된 데이터를 연결, 저장 및 사용 가능하게 만들기 위해.
데이터 플랫폼, 이벤트 기반 아키텍처 및 마이크로 서비스의 기반 역할을합니다.

 

 

Apache Kafka®는 이벤트 스트리밍 플랫폼입니다. 그게 무슨 뜻입니까?

Kafka는 세 가지 주요 기능을 결합하므로 전투 테스트를 거친 단일 솔루션으로 종단 간 이벤트 스트리밍 사용 사례를 구현할 수 있습니다.

다른 시스템에서 데이터의 지속적인 가져 오기 / 내보내기를 포함하여 이벤트 스트림을 게시 (쓰기)하고 구독 (읽기)합니다. 원하는 기간 동안 지속적이고 안정적으로 이벤트 스트림을 저장합니다. 이벤트가 발생할 때 또는 소급하여 처리합니다. 그리고이 모든 기능은 분산되고 확장 성이 뛰어나고 탄력적이며 내결함성이 있으며 안전한 방식으로 제공됩니다. Kafka는 베어 메탈 하드웨어, 가상 머신 및 컨테이너, 온 프레미스 및 클라우드에 배포 할 수 있습니다. Kafka 환경 자체 관리와 다양한 공급 업체에서 제공하는 완전 관리 형 서비스 사용 중에서 선택할 수 있습니다.

 

 

Kafka는 어떻게 작동합니까?

Kafka는 고성능 TCP 네트워크 프로토콜을 통해 통신하는 서버와 클라이언트로 구성된 분산 시스템입니다. 온 프레미스 및 클라우드 환경의 베어 메탈 하드웨어, 가상 머신 및 컨테이너에 배포 할 수 있습니다.

 

서버 : Kafka는 여러 데이터 센터 또는 클라우드 지역에 걸쳐있을 수있는 하나 이상의 서버 클러스터로 실행됩니다. 이러한 서버 중 일부는 브로커라고하는 스토리지 계층을 형성합니다. 다른 서버는 Kafka Connect를 실행하여 데이터를 이벤트 스트림으로 지속적으로 가져오고 내 보내어 관계형 데이터베이스 및 기타 Kafka 클러스터와 같은 기존 시스템과 Kafka를 통합합니다. 미션 크리티컬 사용 사례를 구현할 수 있도록 Kafka 클러스터는 확장 성이 뛰어나고 내결함성이 있습니다. 서버 중 하나가 실패하면 다른 서버가 작업을 대신하여 데이터 손실없이 지속적인 작업을 보장합니다.

클라이언트 : 네트워크 문제 또는 머신 장애가 발생하는 경우에도 내결함성 방식으로 대규모 이벤트 스트림을 병렬로 읽고, 쓰고, 처리하는 분산 애플리케이션 및 마이크로 서비스를 작성할 수 있습니다. Kafka는 Kafka 커뮤니티에서 제공하는 수십 개의 클라이언트로 보강 된 일부 클라이언트와 함께 제공됩니다. 클라이언트는 Go, Python, C / C ++ 및 기타 여러 프로그래밍 용 상위 수준 Kafka Streams 라이브러리를 포함하여 Java 및 Scala에서 사용할 수 있습니다. REST API뿐만 아니라 언어.

댓글