본문 바로가기
Tip & Tech/Tech

kafka 설치 및 연동방법 / filebeat<->kafka 통신 검토

by 나비와꽃기린 2024. 9. 25.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

 

kafka 설치 및 연동방법 :: https://velog.io/@hanblueblue/Kafka-%EC%84%A4%EC%B9%98%EC%8B%A4%ED%96%89-%EB%B0%8F-%ED%85%8C%EC%8A%A4%ED%8A%B8

 

Kafka 설치/실행 및 테스트

카프카 설치와 실행, Spring Boot와 터미널을 사용하는 간단한 테스트 코드.

velog.io

 

Spring Framework, 특히 Spring Kafka 모듈이 Kafka와의 연동을 지원하기 때문에 YAML 파일에 설정을 통해 쉽게 Kafka를 사용할 수 있습니다. Spring Kafka는 Kafka의 프로듀서와 컨슈머를 설정하고 관리할 수 있는 다양한 기능을 제공합니다.

위에 설정된 YAML 파일에서 spring.kafka 항목들이 Spring Kafka 모듈에 의해 자동으로 적용되며, 이를 통해 별도의 설정 코드 없이도 Kafka와의 통신을 쉽게 설정할 수 있습니다.

 

주요 이유:

  • Spring Kafka가 Apache Kafka의 기능을 추상화하여 쉽게 사용할 수 있도록 지원.
  • @EnableKafka 또는 @KafkaListener와 같은 어노테이션을 통해 Kafka 리스너와 설정을 코드에서 간단하게 사용할 수 있음.
  • Kafka의 여러 설정들을 프로퍼티 파일 (또는 YAML)에서 직접 정의하여 자동 설정.

따라서, Spring Kafka의 지원 덕분에 설정 파일만으로도 Kafka와의 연동이 간단해집니다.

 

 

 

 

 

< 번외 >

기억을 위해 적어본다.

실무 중.. 사용자의 실시간 로그를 적재해야 해서 메시지큐 서비스 도입이 필요해 검토한 서비스 결과를 정리해 본다.
(FilebeatKafka 간의 통신 검토. 검토한 버전은 내용참고)

1. Azure Blob Storage

  • 사용 목적: 실시간 로그성 데이터를 저장하는 용도로는 적합하지 않음.
  • 이슈:
    • 1시간 단위로 로그 파일을 업로드하려고 해도, 업무에서 사용하는 서버 배포 특성상 배포 시 로그 유실 발생. (배포시 로그파일이 유실됨)
    • Blob은 주로 정적 데이터 저장에 적합.

2. Filebeat

  • 이슈:
    • 기존 환경과 같은 대역대라서 양방향 통신이 가능했지만, 실무 Azure 환경에서는 any로 포트가 열리지 않아 통신 테스트 불가했음
    • Filebeat와 Kafka 통신 문제:
      • Kafka의 응답 포트(9092)가 any로 열려야 한다는 제약.
      • Filebeat 통신이 된다 해도 클러스터에서 MySQL DB로 적재가 어려움.
      • 네트워크 에러 발생.
    • Kafka 버전 호환성 문제:
      • 테스트한 Filebeat 버전은 8.x, Kafka는 0.10.1.0 버전.
      • Kafka 0.8.2.0~2.6.0을 지원하므로 작동해야 하지만, 테스트에서는 어려움이 있었음.
    •  

 

결과적으로 사용자의 실시간 로그를 위의 기술로는 환경상 적용할 수가 없어서

사용자의 실시간 로그를 서버에서 DB에 적재 후

운영 환경에서 클러스터가 데이터를 가져와 통계를 내고.  서비스 테이블에 적재해주는 방식으로 구현되었다.