본문으로 바로가기

[기술] KAFKA란

category 컴퓨터/기술 2021. 4. 26. 22:02
728x90
반응형

kafka는 아파치에서 만든 소프트웨어입니다.

실시간으로 데이터를 처리할 수 있는 분산 데이터 스트리밍 플랫폼입니다.

소스에서 데이터를 처리하고, 여러 사용자에게 전달하도록 설계되어 있습니다.

데이터 분산에 특화되어 있어, 데이터를 어느 곳으로 이동하는것 뿐만 아니로, 모든 곳의 데이터를 동시에 이동시킬 수 있습니다.

초당 수백만 개 이상의 데이터를 처리할 수 있어 빅데이터와 관련된 프로젝트에 매우 적합합니다.

그러나 kafka가 제공하는 많은 기능들은 빅데이터 뿐만 아니라 다른 곳에도 활용할 수 있습니다.

예를 들자면 IT 인프라를 운영하거나, IoT라 불리는 사물 인터넷, 전자상거래 등에서도 많이 활용됩니다.

kafka에서는 애플리케이션에 대한 모니터링, 알람, 보고, 데이터 관리, 로그 관리 등의 기능을 제공해주기 때문에 IT 운영 측면에서 매우 적합합니다.

IoT 기기는 날이 갈수록 늘고 있기 때문에, 이러한 대용량 데이터를 처리하기 위해서는 kafka가 적합합니다.

kafka는 데이터를 송/수신 하는데 메시지 큐를 사용합니다.

일반 메시지큐와는 성능에서 훨씬 앞섭니다.

기본 모델은 pub/sub를 사용하고있습니다.

 


kafka 공식 홈페이지에서는 이벤트 스트리밍이란 용어로 kafka를 설명합니다.

이벤트 스트리밍은 데이터베이스, 센서, 모바일 장치, 클라우드 서비스 및 소프트웨어에서 이벤트를 실시간으로 캡쳐하는 것입니다.

이런 이벤트들을 저장하고, 이것들을 조작, 처리, 수행 합니다.

또한, 필요에 따라서는 이 스트림을 다른 대상으로 송신합니다.

따라서 이벤트 스트리밍은 적절한 정보가 적절한 곳에서 처리되도록 도와줍니다.

이벤트 스트리밍은 많은 곳에 적용이 가능합니다.

1. 증권 거래소, 은행, 보험 등 실시간으로 처리하는 데이터(결제, 거래 등)
2. 물류, 자동차 산업에서 실시간으로 자동차의 배송을 추적하고, 모니터링
3. 공장 등의 IoT장치 또는 그 외의 장비들에 센서들로 데이터를 캡처하고 분석
4. 호텔, 여행 등의 여러 가지 산업에서 고객의 주문을 수집하고 대응
5. 병원에서 환자를 지속적으로 모니터링하고, 상태 변화를 체크하여 치료하고 관리
6. 회사의 여러 부서로 부터 만들어진 데이터를 연결하고 통합

kafka의 가장 중요한 기능은 3가지입니다.

1. publish/subscribe : 발생한 이벤트를 읽고 씁니다.
2. 이벤트를 지속적이고 안정적으로 저장합니다.
3. 발생한 이벤트를 소급적으로 처리합니다.

kafka는 TCP 프로토콜을 사용하여 통신하고, 서버/클라이언트로 구성되어 있는 시스템입니다.

서버 : 여러 센터의 경우, kafka는 하나 이상의 클러스터로 실행됩니다.

이러한 서버들 중 몇몇은 브로커라는 스토리지 계층을 형성합니다.

다른 서버는 kafka connect를 사용하여 이벤트를 지속적으로 가져오고 내보내어 kafka와 같은 클러스트들 간에 kafka를 통합합니다.

kafka의 장점 중 하나는 확장성이 뛰어나고, 내결함성이 있습니다.

한 쪽에 장애가 발생하더라도, 다른 서버가 작업을 대신하는 등의 운영을 보장합니다.


클라이언트 : 네트워크 이슈가 발생하더라도 대규모 이벤트를 병렬로 처리하여 서비스를 내결함성 방식으로 수행합니다.

kafka 클라이언트의 경우, 여러 가지 언어로 개발이 가능하여 호환성이 좋습니다.

 

출처 : kafka.apache.org/intro

728x90
반응형