JSCODE Logo
JSCODE 박재성JSCODE 제이온JSCODE 시니
온라인 강의프로그래밍 과외책/전자책무료 강의
유튜브블로그
후기
완강 후기 이벤트블로그 리뷰 이벤트AWS SAA 합격 후기 이벤트
회사명 : JSCODE대표 : 박재성사업자 등록번호 : 244-22-01557통신판매업 : 제 2023-인천미추홀-0381 호

서울특별시 구로구 경인로 20가길 11(오류동, 아델리아)

Copyright ⓒ 2026 JSCODE - 최상위 현업 개발자들의 프로그래밍 교육 All rights reserved.

이용약관개인정보처리방침

실전에서 바로 써먹는 Kafka 입문

Kafka 사전 지식 / 환경 셋팅

Kafka를 왜 배워야할까?
Kafka란? / 메시지 큐(Message Queue)란?
Kafka 설치할 환경 셋팅하기 (feat. EC2)
AWS EC2에 Kafka 설치/실행하기

Kafka 기본 개념

Kafka의 기본 구성 (Topic, Consumer, Producer)
토픽 생성하기 / 조회하기 / 삭제하기
Kafka에 메시지 넣기 / Kafka에서 메시지 조회하기
메시지를 어디까지 읽었는 지 기억하고, 그 다음 메시지부터 처리하기 (Consumer Group, Offset)
[보충 자료] 토픽, 컨슈머 그룹 이름 짓는 법 (Naming Convention)
[실습] Spring Boot에 Kafka 연결을 위한 코드 추가하기
[실습] Spring Boot로 Kafka에 메시지 넣는 코드 작성하기 (Producer)
[실습] Spring Boot가 Kafka에 메시지 잘 넣는 지 테스트해보기
[실습] Spring Boot로 Kafka에서 메시지 조회하기 (Consumer)
Kafka의 비동기 처리로 인한 성능 이점 느껴보기

Kafka 메시지 처리 실패 시 대처 방법

[실습] Spring Boot로 Kafka에서 처리에 실패한 메시지를 재시도(Retry)하도록 만들기
[실습] Spring Boot로 Kafka에서 재시도조차 실패한 메시지를 따로 보관하기 (DLT, Dead Letter Topic)
[실습] Spring Boot로 재시도조차 실패한 메시지 사후 처리하기

Kafka 메시지 처리 성능 높이기 (병렬 처리)

컨슈머가 메시지를 하나씩만 처리하는 현상
파티션(Partition)이란? / 특징
[실습] Spring Boot로 하나의 파티션에는 정말 하나의 컨슈머만 할당되는 지 확인해보기
특정 토픽의 파티션 수 조회하기 / 설정하기 / 변경하기
[실습] Spring Boot로 여러 개의 파티션에 메시지가 골고루 들어가는 지 확인해보기
[실습] Spring Boot에서 여러 개의 컨슈머로 메시지 병렬적으로 처리하기
[실습] Spring Boot에서 하나의 컨슈머로 메시지 병렬적으로 처리하기
적정 파티션 개수 계산하는 방법
컨슈머가 메시지를 지연 없이 잘 처리하고 있는 지 확인하는 방법 (Consumer Lag)

Kafka 장애 대비하기 (고가용성)

노드(node), 브로커(broker), 컨트롤러(controller), 클러스터(cluster), 레플리케이션(replication)이란?
[실습] kafka 서버 총 3대 셋팅하기
[실습] Kafka 서버 3대가 서로 잘 연동됐는 지 확인하기
토픽 세부 정보 출력값 정보 해석하기 (Isr, Leader, Replicas 등)
[실습] 팔로워 파티션에 메시지를 넣으면 어떻게 될까?
[실습] 리더 파티션에 장애가 발생하면 어떻게 될까? / Kafka 서버 1대가 고장나면 어떻게 될까?
Kafka 서버는 몇 대를 운용하는 게 좋을까?
Spring Boot에 Kafka 서버 3대를 연결해서 사용하는 방법

[프로젝트] MSA 프로젝트에서 Kafka 도입하기

프로젝트 설계
[실습] Spring Boot로 UserService 서버 초기 환경 설정하기
[실습] 회원가입 API 전체 뼈대 만들기
[실습] 회원 가입 비즈니스 로직 짜기
[실습] Spring Boot로 EmailService 서버 초기 환경 설정하기
[실습] 이메일 발송을 처리할 Consumer 로직 짜기
[실습] 프로젝트 구조에 맞게 Kafka 셋팅하기
[실습] 잘 작동하는 지 테스트해보기
← 블로그 목록으로 돌아가기

컨슈머가 메시지를 지연 없이 잘 처리하고 있는 지 확인하는 방법 (Consumer Lag)

JSCODE 박재성
JSCODE 박재성
2026. 03. 13.
author
JSCODE 박재성
category
Kafka
createdAt
Dec 6, 2025 02:14 PM
isPublic
isPublic
series
실전에서 바로 써먹는 Kafka 입문
slug
monitoring-consumer-lag
type
post
updatedAt
Mar 13, 2026 09:00
👨🏻‍🏫
컨슈머가 메시지를 지연 없이 잘 처리하고 있는 지 확인하는 방법을 알아보기 전에, 가장 먼저 Lag이라는 용어가 어떤 의미인지 정리해보자.

✅ Lag 이란?

평소에 컴퓨터가 느려지거나 버벅거리면 우리는 “렉 걸린다”라는 표현을 쓴다. 이 때, 렉이라는 단어는 영어 단어인 Lag을 한글로 읽은 것이다. Lag의 뜻은 ‘지연, delay’의 의미를 가진다.
 
카프카에서 사용하는 랙(Lag)의 의미는, 지연된 메시지 수(컨슈머가 아직 처리하지 못한 메시지 수)이다. 다른 말로, 컨슈머 랙(Consumer Lag)이라고도 부른다.
 
 

✅ 컨슈머 랙(Consumer Lag)은 언제 발생할까?

프로듀서의 메시지 생산량보다 컨슈머의 메시지 처리량이 작을 때 컨슈머 랙(Consumer Lag)이 발생한다. 메시지가 1초에 3개씩 생기는데 1초에 메시지를 1개씩 밖에 처리를 못한다면, 1초 당 2개의 메시지가 계속해서 쌓일 것이다.
notion image
실제 현업에서 서비스를 운영하다보면 갑작스럽게 요청이 증가할 때나 컨슈머에 장애가 생겼을 때 컨슈머 랙이 발생한다. 컨슈머 랙이 발생했다는 건 메시지 처리가 지연되고 있다는 뜻이다. 이메일 발송 작업을 예로 들면, 이메일을 보내기 위해 발송 버튼을 눌렀는데 처리되지 못한 메시지들이 많이 밀려있어 이메일이 발송되기까지 오랜 시간이 걸릴 수도 있다는 뜻이다.
 
따라서 컨슈머 랙이 시간이 갈수록 계속해서 늘어나고 있다면 빠르게 조치를 취해야 한다. 그렇지 않으면 사용자들 입장에서 요청을 보낸 내용이 처리되지 않아 서비스에 버그가 생겼다고 생각할 것이다. 빠르게 조치를 취하려면 컨슈머 랙을 지속적으로 모니터링 할 수 있어야 한다.
 
우선 CLI를 활용해 컨슈머 랙을 확인하는 방법을 먼저 알아보자.
 
 

✅ 컨슈머 랙(Consumer Lag) 확인하는 방법

컨슈머 랙(Consumer Lag)을 확인하기 위해 컨슈머 랙(Consumer Lag)을 의도적으로 만들자.
 
  1. 프로듀서 서버만 켜두고, 컨슈머 서버 종료하기
    1. notion image
       
  1. API 요청을 통해 토픽에 메시지 쌓이게 만들기
    1. API 요청을 총 4번 보내서 메시지가 4개 쌓이도록 만들자.
      notion image
       
  1. CLI로 컨슈머 랙 확인하기
    1. 아래 명령어는 컨슈머 그룹의 세부 정보를 조회할 때 사용하던 명령어다. 컨슈머 랙을 확인할 때도 아래 명령어를 사용하면 된다.
      # 컨슈머 그룹 세부 정보 조회하기 $ bin/kafka-consumer-groups.sh \ --bootstrap-server localhost:9092 \ --group email-send-group \ --describe
      notion image
      LAG이라는 항목을 보자. 이전에 만들어뒀던 3개의 파티션이 존재하고, 각 파티션에 4개의 메시지가 분배되어 들어가있다. 그래서 1번 파티션에 처리되지 않은 2개의 메시지가 쌓여있고 2, 3번 파티션에 처리되지 않은 1개의 메시지가 쌓여있다는 걸 알 수 있다.
 
컨슈머 랙을 CLI로 확인하는 방법을 알아봤다. 하지만 우리가 매번 컴퓨터 앞에 앉아서 CLI로 컨슈머 랙이 생기는 지 안 생기는 지를 24시간 동안 체크할 수는 없다. 그러면 현업에서는 컨슈머 랙을 24시간동안 어떻게 체크하는 걸까?
 
 

✅ 현업에서의 컨슈머 랙(Consumer Lag) 체크 방법

  1. 외부 모니터링 툴 사용하기
    1. 외부 모니터링 툴을 사용해서 컨슈머 랙(Conusmer Lag)을 지속적으로 모니터링하면서, 특정 케이스에 대해 알림을 발송하게 만들어서 빠르게 대처할 수 있게 셋팅하는 편이다.
      많이 사용하는 외부 모니터링 툴로는 이런 것들이 있다.
      • Datadog (유료)
      • Burrow (무료 오픈소스)
      • Prometheus, Grafana (무료 오픈소스)
       
  1. 매니지드 서비스(Managed Service)에서 제공하는 모니터링 기능 사용하기
    1. 현업에서는 카프카를 직접 구축해서 사용하지 않고, 클라우드의 카프카 서비스를 사용하는 경우도 많다. 대표적인 서비스로 AWS MSK와 Confluent Cloud가 있다. 이 서비스를 사용하면 자체적으로 컨슈머 랙(Consumer Lag)에 대한 모니터링 기능을 같이 제공하는 경우가 많다.
 
📎
이 글은 실전에서 바로 써먹는 Kafka 입문 강의의 수업 자료 중 일부입니다.