Kafka는 분산 메시징 시스템으로 대량의 데이터를 빠르고 안정적으로 처리할 수 있도록 설계된 오픈소스 메시지 브로커이다.
Kafka는 Producer, Broker, Consumer 등의 구성 요소로 이루어져 있다.
Producer (생산자)
Broker (중개자)
Consumer (소비자)
Topic & Partition
Zookeeper
Kafka는 Pull 방식으로 메시지를 소비한다. Consumer가 필요한 시점에 Broker로부터 메시지를 가져온다.
높은 처리량과 확장성
내결함성
장기적인 데이터 저장 가능
다양한 언어 지원
Spring Boot 환경에서 Kafka를 사용하는 간단한 예제 코드
먼저 spring-kafka 의존성을 추가한다.
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>2.8.0</version>
</dependency>
@Service
public class KafkaProducer {
private final KafkaTemplate<String, String> kafkaTemplate;
public KafkaProducer(KafkaTemplate<String, String> kafkaTemplate) {
this.kafkaTemplate = kafkaTemplate;
}
public void sendMessage(String message) {
kafkaTemplate.send("example-topic", message);
}
}
@Service
public class KafkaConsumer {
@KafkaListener(topics = "example-topic", groupId = "my-group")
public void listen(String message) {
System.out.println("Received Message: " + message);
}
}
application.yml)spring:
kafka:
bootstrap-servers: localhost:9092
consumer:
group-id: my-group
auto-offset-reset: earliest
producer:
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.apache.kafka.common.serialization.StringSerializer
Kafka는 대량의 데이터를 빠르게 처리하는 데 최적화된 분산 메시징 시스템으로
실시간 데이터 스트리밍, 로그 수집, 마이크로서비스 통신에서 강점을 발휘한다.
Spring Kafka를 활용하면 Kafka를 쉽게 연동할 수 있으며 마이크로서비스 아키텍처에서의 데이터 흐름을 효율적으로 관리할 수 있다.
Kafka의 구조와 동작 방식을 이해하면 데이터 처리 성능을 최적화할 수 있으므로 실무에서 적극 활용할 수 있도록 더 깊이 공부해야겠다고 느꼈다.