본문 바로가기

Infra/Kafka

(2)
[Kafka] Kafka에서 Avro를 사용하는 이유 목차들어가며Kafka 환경에서 데이터를 주고받을 때 직렬화(Serialization) 과정은 필수이다. 만약, 직렬화에 대해서 모른다면 다음의 글을 먼저 읽어보는 것을 추천한다.2023.08.20 - [Language/Java] - [JAVA] 직렬화(Serialization)란? 프로듀서는 객체를 바이트 배열로 변환해 토픽에 전송하고, 컨슈머는 이를 다시 객체로 복원(deserialize)한다. 이 과정에서 단순히 “객체 → 바이트” 변환만 필요하다면 커스텀 시리얼라이저(Custom Serializer) 를 직접 구현할 수도 있다. 하지만 시스템이 확장되고 데이터 구조가 바뀌기 시작하면 프로듀서와 컨슈머 간의 결합도, 유지보수성, 호환성 문제가 드러나게 된다. 이러한 이유로 Avro, Protobuf,..
[Kafka] Kafka 기초 정리 (메시지 큐, 파티션, DLT, 클러스터 구조) 목차들어가며기존의 모놀리식 애플리케이션을 MSA로 마이그레이션하면서 이벤트 기반 통신이 필요하게되었다. 이를 위해 Redis, RabbitMQ, Kafka 등의 다양한 도구가 있겠지만, MSA 구조에서 많은 장점을 가진 Kafka를 이번 구현에서 선택했다. Kafka는 대규모 데이터를 빠르게 처리할 수 있는 분산 메시징 플랫폼이다. 단순한 메시지 큐 이상의 기능을 제공하며, 비동기 이벤트 기반 시스템을 구성할 때 자주 사용된다.중점적으로 봐야 하는 내용Kafka는 메시지를 토픽(topic) 단위로 관리한다.토픽은 여러 개의 파티션(partition) 으로 구성되어 병렬 처리 성능을 높인다.Kafka는 컨슈머 그룹(consumer group) 단위로 오프셋(offset)을 관리해 메시지 중복 없이 안정적인..