카테고리 없음

[Kafka] Kafka 실무 프로젝트 및 고급 활용

JABHACK 2025. 2. 3. 20:45

Kafka 실무 프로젝트 및 고급 활용

Kafka를 실무에서 효과적으로 활용하려면 로그 수집, 이벤트 스트리밍, IoT 데이터 처리 등 실제 프로젝트를 경험하는 것이 중요합니다.
또한, **성능 이슈 해결, 대량 트래픽 처리 사례 분석, 클라우드 환경에서의 Kafka 운영(AWS MSK, GCP Pub/Sub 비교)**도 필수적으로 학습해야 합니다.


📌 1. 실무 프로젝트 구현 (로그 수집, 이벤트 스트리밍, IoT 데이터 처리)

Kafka는 다양한 실무 프로젝트에서 활용됩니다.

🔹 1) 로그 수집 시스템 구축

**Kafka + ELK (Elasticsearch, Logstash, Kibana)**를 활용하여 실시간 로그 분석을 구현할 수 있습니다.

✅ Kafka 기반 로그 수집 아키텍처

Application Logs → Logstash → Kafka → Elasticsearch → Kibana (시각화)

✅ Logstash에서 Kafka로 로그 전송 예제

input {
  file {
    path => "/var/log/app.log"
    type => "log"
  }
}

output {
  kafka {
    bootstrap_servers => "localhost:9092"
    topic_id => "log-topic"
  }
}

📌 Kafka로 전송된 로그 데이터를 Elasticsearch에서 색인 후 Kibana에서 분석 가능


🔹 2) 이벤트 스트리밍 처리

Kafka는 이벤트 기반 시스템에서 주문 처리, 결제 승인, 사용자 활동 로그 분석 등에 활용됩니다.

✅ Kafka 이벤트 스트리밍 예제 (Spring Boot)

@KafkaListener(topics = "order-events", groupId = "order-group")
public void listenOrderEvents(String orderEvent) {
    System.out.println("Received Order Event: " + orderEvent);
}

📌 사용자의 주문 이벤트를 실시간으로 처리


🔹 3) IoT 데이터 처리

IoT 센서 데이터는 Kafka를 통해 대량의 스트리밍 데이터를 실시간 수집할 수 있습니다.

✅ IoT 데이터 흐름

IoT Device → MQTT → Kafka → Flink → Database

✅ IoT 센서 데이터 Kafka Producer 예제

from kafka import KafkaProducer
import json

producer = KafkaProducer(bootstrap_servers='localhost:9092', value_serializer=lambda v: json.dumps(v).encode('utf-8'))
data = {"device_id": 1, "temperature": 22.5, "humidity": 60}
producer.send('iot-sensor-topic', data)

📌 Kafka를 사용하면 IoT 데이터를 실시간 분석 및 저장 가능


📌 2. Kafka 성능 이슈 해결 (Consumer Lag, Offset Reset, Partition 관리)

🔹 1) Consumer Lag 문제 해결

Kafka Consumer Lag이 발생하면 실시간 데이터 처리가 지연됩니다.

✅ Consumer Lag 확인 명령어

bin/kafka-consumer-groups.sh --describe --group my-group --bootstrap-server localhost:9092

✅ 해결 방법

  • Consumer 개수를 늘려 병렬 처리
  • Partition 개수를 증가시켜 부하 분산
  • Offset 자동 커밋을 비활성화하고 수동 커밋 사용
@KafkaListener(topics = "test-topic", groupId = "group", autoStartup = "false")
public void consume(ConsumerRecord<String, String> record, Acknowledgment ack) {
    System.out.println("Received: " + record.value());
    ack.acknowledge(); // 수동 커밋
}

🔹 2) Offset Reset 전략

Kafka Consumer가 장기간 오프라인이었다면 이전 메시지를 어떻게 처리할지 결정해야 합니다.

Offset Reset 옵션 설명
earliest 가장 오래된 메시지부터 다시 읽음
latest 가장 최근 메시지만 읽음
none 이전 Offset 정보가 없으면 에러 발생

설정 예제

bin/kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server localhost:9092

📌 --from-beginning 옵션을 사용하면 Consumer가 처음부터 메시지를 다시 읽음


🔹 3) Partition 개수 관리

Kafka에서 Partition을 적절히 분배하면 Consumer 부하를 분산할 수 있습니다.

Partition 개수를 늘리는 명령어

bin/kafka-topics.sh --alter --topic test-topic --partitions 5 --bootstrap-server localhost:9092

📌 Partition 개수를 증가하면 Consumer가 더 많은 메시지를 병렬로 처리 가능


📌 3. 대량 트래픽 처리 사례 분석 (Netflix, LinkedIn의 Kafka 활용 사례)

🔹 1) Netflix의 Kafka 활용

Netflix는 Kafka를 로그 분석, 실시간 데이터 스트리밍, 추천 시스템 등에 활용합니다.

Netflix 아키텍처

User Events → Kafka → Flink → Recommendation Engine
  • 사용자 활동 데이터(클릭, 시청 기록)를 Kafka로 전송
  • Flink를 이용해 실시간 추천 시스템을 운영

🔹 2) LinkedIn의 Kafka 활용

Kafka는 LinkedIn에서 개발된 메시지 시스템으로, 전 세계적으로 초당 수백만 개의 메시지를 처리합니다.

LinkedIn Kafka 시스템 특징

  • Kafka를 활용해 실시간 피드 업데이트 제공
  • Kafka Streams로 데이터 변환 및 실시간 분석
  • Cross-Cluster Kafka로 글로벌 데이터 동기화

📌 4. Kafka와 클라우드 (AWS MSK, GCP Pub/Sub와 비교)

Kafka를 클라우드에서 운영할 경우 AWS MSK(Amazon Managed Streaming for Apache Kafka) 또는 GCP Pub/Sub을 사용할 수 있습니다.

🔹 AWS MSK (Amazon Managed Kafka)

특징

  • Kafka를 완전 관리형 서비스로 제공
  • 자동 스케일링 및 장애 복구 지원
  • IAM을 통한 보안 관리 가능

MSK 클러스터 생성

aws kafka create-cluster --cluster-name my-msk-cluster --kafka-version 3.6.0

Kafka Client 연결

bootstrap.servers=b-1.msk-cluster.amazonaws.com:9092

🔹 GCP Pub/Sub vs Kafka 비교

비교 항목 Kafka GCP Pub/Sub
확장성 수동 확장 필요 자동 확장
운영 방식 직접 관리 완전 관리형 서비스
Latency 낮음 (ms 단위) 상대적으로 높음
가격 클러스터 유지 비용 발생 사용량 기반 과금

Kafka는 실시간 데이터 처리 성능이 뛰어나며, GCP Pub/Sub는 관리 부담이 적은 솔루션


✅ 정리

학습 주제 설명
실무 프로젝트 구현 로그 수집, 이벤트 스트리밍, IoT 데이터 처리
Kafka 성능 이슈 해결 Consumer Lag, Offset Reset, Partition 관리
대량 트래픽 처리 사례 분석 Netflix, LinkedIn의 Kafka 활용 사례
Kafka와 클라우드 AWS MSK, GCP Pub/Sub와 비교

 

Kafka를 실무에서 활용하려면 프로젝트 경험, 성능 최적화, 대량 트래픽 처리 방법, 클라우드 운영 방식을 익혀야 합니다.
이제 Kafka를 완전한 실무 환경에서 안정적으로 운영할 준비가 되었습니다! 🚀