Category 카프카

소프트웨어 공학 중 카프카에 대한 내용입니다.

Kafka 컨슈머 설계 판단 기준, 5가지 질문으로 끝낸다

Kafka를 처음 붙일 때 대부분 프로듀서부터 본다. KafkaTemplate을 주입받고 send()를 호출하면 메시지가 나간다. 여기까지는 반나절이면 끝난다. 문제는 컨슈머다. 그룹 ID를 어떻게 나눌지, 키를 줄지, 커밋을 자동으로 할지 수동으로 할지, 실패한 메시지를 어떻게 할지를 전부 정해야 한다. 이 결정을 미루고 기본값으로…

카프카 클러스터는 브로커·토픽·파티션 세 겹으로 이해한다

카프카를 처음 배울 때 가장 많이 헷갈리는 지점은 “토픽에 메시지를 넣었는데 왜 순서가 뒤죽박죽으로 나오지?”다. 답은 카프카의 저장 구조에 있다. 카프카 클러스터는 브로커라는 서버 위에, 토픽이라는 논리 단위를 두고, 그 안에 파티션이라는 물리 단위로 메시지를 나눠 저장한다. 이 세 겹을…

카프카는 데이터를 주고받는 중간다리, 메시지 브로커다

두 서버가 직접 데이터를 주고받게 만들면 언젠가 문제가 생긴다. 받는 쪽 서버가 잠깐 죽으면 보낸 요청은 그대로 사라지고, 응답을 기다리는 동안 보낸 쪽 서버의 성능도 같이 떨어진다. 아파치 카프카(Apache Kafka)는 이 문제를 “중간에 메시지를 대신 보관해 주는 저장소”를 두는 방식으로…

Kafka를 활용한 MSA 이벤트 기반 아키텍처 구축

Kafka를 활용하여 마이크로서비스 아키텍처(MSA) 기반의 회원 가입 및 이메일 발송 시스템을 구축하는 방법을 알아보자. Kafka의 메시지 브로커 역할을 통해 서비스 간 비동기 통신을 구현하며, 이벤트 기반 아키텍처의 핵심 개념을 실습한다 프로젝트 목표 시스템 아키텍처 전체 구조 서비스 구성 서비스 역할…

Kafka 고가용성 (High Availability) 구축

Apache Kafka(이하 Kafka)의 고가용성(High Availability)이란 시스템이 장애 상황에서도 중단 없이 정상적으로 서비스를 제공할 수 있는 능력을 의미한다 핵심 개념 이해 Kafka의 고가용성을 이해하기 위해서는 다음 다섯 가지 핵심 개념을 먼저 숙지해야 한다 노드 (Node) 노드란 Kafka가 설치되어 있는 실행되는 서버…

Kafka 파티션 이해

우리는 흔히 MSA(Microservices Architecture) 환경에서 비동기 메시징 처리를 위해 Kafka를 사용한다. 특히 이메일 발송과 같이 시간이 오래 걸리는 작업을 비동기로 처리할 때 Kafka는 매우 유용하다. 이를 활용하여 Spring Boot 기반의 컨슈머 애플리케이션에서 메시지 처리 성능을 극대화하는 방법에 대해 알아보자. 비효율적인…

Kafka 재시도 및 DLT

Spring Boot와 Kafka를 연동할 때 필수적으로 고려해야 할 메시지 처리 실패 시 재시도(Retry) 전략과 데드 레터 토픽(Dead Letter Topic, DLT) 활용 방안에 대해 심층적으로 알아보자. 이는 비동기 메시지 처리 시스템의 견고성과 안정성을 확보하는 데 매우 중요하다 메시지 처리 실패 상황…

Spring Boot와 Kafka 연동

Spring Boot 애플리케이션에서 Kafka를 사용하려면 의존성을 추가하고 설정 파일을 구성해야 한다 Spring Boot로 Kafka에 메시지 넣기 (Producer) application.yaml 설정 Kafka 서버 연결 및 Producer/Consumer의 직렬화/역직렬화 방식을 설정한다 application.yaml (Producer) 주의사항 Kafka 서버를 백그라운드로 실행하고 email.send 토픽을 미리 생성해 두어야 한다…

Kafka 핵심 구성 요소

Kafka는 메시지를 생산하고 소비하는 주체와 그 메시지를 분류하고 저장하는 공간으로 구성된다 Kafka의 기본적인 데이터 흐름 이러한 분리된 역할 덕분에 프로듀서와 컨슈머는 서로의 처리 속도에 영향을 받지 않고 비동기적으로 동작할 수 있으며, 이는 시스템의 확장성과 안정성을 크게 향상시킨다 CLI를 활용한 Kafka…