간단한 개발관련 내용

Apache Kafka 개요 본문

Message Queue/Kafka

Apache Kafka 개요

vincenzo.dev.82 2024. 9. 30. 23:33
반응형

Apache Kafka는 대규모 실시간 데이터 스트리밍을 처리하기 위한 오픈 소스 분산 스트리밍 플랫폼입니다. LinkedIn에서 처음 개발되었으며, 현재는 Apache Software Foundation의 프로젝트로 관리되고 있습니다. Kafka는 높은 처리량, 확장성, 내결함성 등의 강점을 바탕으로 다양한 산업 분야에서 실시간 데이터 파이프라인 구축과 스트리밍 애플리케이션 개발에 널리 사용되고 있습니다.

Apache Kafka의 개요

  • 역사 및 배경: Kafka는 LinkedIn에서 로그 수집 및 실시간 데이터 처리 요구를 충족하기 위해 개발되었습니다. 이후 오픈 소스로 공개되어 Apache Software Foundation의 프로젝트로 성장하였으며, 현재는 다양한 기업과 개발자 커뮤니티에서 활발히 사용되고 있습니다.
  • 기본 개념: Kafka는 메시지 브로커 시스템으로, 데이터 생산자(Producer)가 생성한 메시지를 주제(Topic) 단위로 저장하고, 소비자(Consumer)가 이를 구독하여 처리하는 구조를 가지고 있습니다. 이 구조는 게시-구독(Publish-Subscribe) 모델을 기반으로 합니다.
  • 아키텍처: Kafka는 분산 시스템으로 설계되어 여러 브로커(Broker)로 구성된 클러스터를 형성합니다. 데이터는 파티션(Partition) 단위로 분할되어 저장되며, 각 파티션은 여러 브로커에 복제(Replication)되어 내결함성을 보장합니다.

Apache Kafka의 주요 특징

  1. 높은 처리량 (High Throughput)
    • kafka는 초당 수백만 건의 메시지를 처리할 수 있는 높은 처리량을 자랑합니다. 이는 디스크 기반의 저장 방식을 최적화하고, 배치 전송(batch transfer)을 통해 네트워크 효율성을 극대화하기 때문입니다.
  2. 확장성 (Scalability)
    • kafka 클러스터는 필요에 따라 손쉽게 확장할 수 있습니다. 새로운 브로커를 추가함으로써 저장 용량과 처리 능력을 증가시킬 수 있으며, 파티션을 재분배하여 부하를 고르게 분산시킬 수 있습니다.
  3. 내결함성 (Fault Tolerance)
    • 데이터는 여러 브로커에 복제되어 저장되므로, 일부 브로커에 장애가 발생해도 데이터 손실 없이 시스템을 지속적으로 운영할 수 있습니다. 리더-팔로워 모델을 통해 장애 발생 시 자동으로 리더를 교체합니다.
  4. 지속성 (Durability)
    • kafka는 디스크에 데이터를 지속적으로 저장하며, 데이터는 설정된 기간 동안 유지됩니다. 이를 통해 소비자가 나중에 데이터를 다시 읽을 수 있습니다.
  5. 실시간 처리 (Real-Time Processing)
    • kafka는 실시간으로 데이터를 스트리밍하고 처리할 수 있어, 실시간 모니터링, 실시간 분석, 실시간 경고 시스템 등에 적합합니다.
  6. 유연한 데이터 파이프라인 (Flexible Data Pipelines)
    • kafka는 다양한 데이터 소스와 싱크를 연결할 수 있는 유연성을 제공합니다. Kafka Connect를 통해 데이터베이스, 파일 시스템, 클라우드 서비스 등과 쉽게 통합할 수 있습니다.
  7. 다양한 API 지원 (Rich APIs)
    • kafka는 프로듀서 API, 컨슈머 API, 스트림 API, 커넥트 API 등 다양한 API를 제공하여 개발자가 필요한 기능을 쉽게 구현할 수 있도록 지원합니다.
  8. 메시지 순서 보장 (Message Ordering)
    • 같은 파티션 내에서는 메시지의 순서가 보장되므로, 순차적인 데이터 처리가 중요한 애플리케이션에 적합합니다.
  9. 강력한 커뮤니티 및 생태계 (Robust Community and Ecosystem)
    • kafka는 활발한 오픈 소스 커뮤니티와 다양한 서드파티 도구, 플러그인 등을 통해 지속적으로 발전하고 있습니다. 이를 통해 사용자는 다양한 요구에 맞는 솔루션을 쉽게 찾을 수 있습니다.
  10. 보안 기능 (Security Features)
    • Kafka는 인증(Authentication), 인가(Authorization), 암호화(Encryption) 등 다양한 보안 기능을 제공하여 안전한 데이터 전송과 저장을 보장합니다.

결론

Apache Kafka는 대규모 데이터 스트리밍과 실시간 처리가 필요한 현대의 다양한 애플리케이션에 적합한 강력한 플랫폼입니다. 높은 처리량, 뛰어난 확장성, 내결함성 등 주요 특징들을 통해 안정적이고 효율적인 데이터 파이프라인을 구축할 수 있습니다. 이러한 장점들 덕분에 금융, 통신, 소셜 미디어, IoT 등 다양한 산업 분야에서 Kafka의 활용도가 높아지고 있습니다.

 

 

반응형