모의수강신청 서비스를 구현하던 중, 동시성 제어가 필요하다는 생각이 들어 redis와 kafka를 도입하기로 했다. kafka는 처음 써봐서 공부를 시작했고, JSCODE님의 강의를 들으면서 공부하려 한다. 인프런에 풀영상이 있고, 유튜브에 일부 강의가 열려있는데, 우선은 유튜브로 듣고 추후에 인프런에서 구매할까 한다. (도커도 이 분 강의를 들었는데 도움이 되었다!)
https://www.youtube.com/playlist?list=PLtUgHNmvcs6p3304vUg6ywvUIAIe5K4WP
[인프런] 실전에서 바로 써먹는 Kafka 입문
풀버전 강의는 아래 링크를 참고해주세요😊 ✔️ https://inf.run/Qxpw1
www.youtube.com
해당 게시글에서는 kafka의 개념을 정리해보려 한다.
Kafka란?
Kafka란, 고성능 데이터 파이프라인, 스트리밍 분석, 데이터 통합 및 미션 크리티컬 애플리케이션에서 사용되는 오픈 소스 분산 이벤트 스트리밍 플랫폼이다. (라고 Apache Kafka 공식 페이지에 나와있다고 한다.) 쉽게 말하면 대규모 데이터를 처리할 수 있는 메시지 큐이다.
⭐메시지 큐(Message Queue)란?
메시지 큐는 큐에 데이터를 일시적으로 저장하는 임시 저장소를 의미한다. 메시지 큐를 이용해 데이터를 비동기적으로 처리할 수 있다. 비동기 처리는 여러 작업을 병렬적으로 데이터를 처리한다는 의미이다.
동기적 처리 = 순차적으로 처리 -> A작업이 다 끝난 후 B작업 처리
비동기적 처리 = 병렬적으로 처리 -> A작업을 시작한 직후에 B작업도 처리 (A가 끝날 때까지 기다리지 않아도 됨)
REST API 방식 통신 vs 메시지 큐 활용한 통신
REST API 방식
모든 작업이 다 처리될 떄까지 기다렸다가 응답을 받는 식으로 통신

⭐⭐ 메시지 큐 방식
비동기적으로 작업을 처리하기 때문에 모든 작업이 다 처리되는 것과 상관없이 응답을 받을 수 있음

1. 사용자가 REST API 방식으로 요청
2. 요청을 받은 서버는 메시지 큐에 전달할 메시지를 만들어 전달 (PRODUCE)
- 메시지 안에는 처리해야 할 요청에 대한 정보들이 담겨있음
- 메시지 큐는 처리해야 할 메시지들을 보관하는 임시 저장소 역할
- 메시지를 만들어 메시지 큐로 전달하는 서버를 프로듀서(PRODUCER)라고 함
3. Producer 서버는 메시지 큐에 메시지를 넣자마자 사용자에게 성공 응답
- 이메일 작업이 끝날 떄까지 기다렸다가 응답하는 게 아니라, 메시지 큐에 메시지를 넣자마자 응답을 함. 이렇게 처리하는 방식을 '비동기 방식으로 처리했다' 고 표현함
- 비동기 방식으로 처리하기 때문에 요청을 효율적으로 처리할 수 있음. 이 때문에 대규모 트래픽 처리할 때 유리한 구조
4. 메시지 큐는 Producer로부터 받은 메시지(요청)를 보관하고 있음
5. Consumer 서버가 메시지 큐에 들어있는 메시지(요청)을 꺼내서 실제 작업을 수행함
- 메시지를 꺼내서 처리하는 서버를 보고 컨슈머(CONSUMER)라고 함
카프카의 간단한 개념을 정리해보았다. 이거를 EC2에 올리는 실습을 했는데, 이거는 따로 정리하지 않고 프로젝트 배포할 때 정리하려 한다. 현재는 그냥 로컬 도커에 올려두었다!
'인프라 > Kafka' 카테고리의 다른 글
| [Kafka] 3. kafka의 기본 구성 알아보기 (Topic, Consumer, Producer) - CLI 실습 (0) | 2025.10.13 |
|---|---|
| [Kafka] 2. EC2에 kafka 기본 세팅하기 (0) | 2025.10.13 |