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 셋팅하기
[실습] 잘 작동하는 지 테스트해보기
← 블로그 목록으로 돌아가기

AWS EC2에 Kafka 설치/실행하기

JSCODE 박재성
JSCODE 박재성
2026. 03. 13.
author
JSCODE 박재성
category
Kafka
createdAt
Dec 6, 2025 05:14 AM
isPublic
isPublic
series
실전에서 바로 써먹는 Kafka 입문
slug
install-run-kafka-on-aws-ec2
type
post
updatedAt
Mar 13, 2026 09:00

✅ AWS EC2에 Kafka 설치하기

  1. JDK 17 설치하기
    1. Kafka를 실행시키려면 JDK 17 이상이 설치되어 있어야 한다.
      $ sudo apt update $ sudo apt install openjdk-17-jdk $ java -version # 잘 설치됐는 지 확인
       
  1. Kafka 설치 파일 다운받기
    1. $ wget https://archive.apache.org/dist/kafka/4.0.0/kafka_2.13-4.0.0.tgz
      ** 카프카 4.0 버전을 설치
       
  1. 설치한 파일 압축풀기
    1. $ tar -xzf kafka_2.13-4.0.0.tgz # 압축 풀기 $ cd kafka_2.13-4.0.0
       
  1. Kafka를 실행시켰을 때 잡아먹는 메모리 크기 낮추기
    1. ** 프리티어 혜택을 받아 셋팅한 AWS EC2의 t3.micro라는 컴퓨팅 사양은 메모리가 1GB이다. 그런데 Kafka를 실행시키기에는 부족한 메모리 사양이다. 그래서 Kafka를 실행시킬 때 Kafka가 잡아먹는 메모리의 크기를 낮춰야만 실행시킬 수 있다.
      $ export KAFKA_HEAP_OPTS="-Xmx400m -Xms400m"
       
  1. swap을 활용해 메모리 늘리기
    1. ** swap은 일부 디스크 공간을 메모리로 활용하는 기법이다. swap을 활용하면 EC2 인스턴스의 부족한 메모리 사양을 어느 정도 보완할 수 있다.
      5.1. swap 메모리를 2GB로 설정
      $ sudo dd if=/dev/zero of=/swapfile bs=128M count=16 # 2GB짜리의 파일 생성 $ sudo chmod 600 /swapfile # 파일에 권한 부여 $ sudo mkswap /swapfile # 2GB 짜리 파일을 swap 공간의 형태로 전환 $ sudo swapon /swapfile # swap 활성화
       
      5.2. 시스템 부팅 시마다 자동으로 활성화 되도록 파일시스템 수정
      # 시스템 부팅 시마다 자동으로 활성화 되도록 파일시스템 수정 $ sudo vi /etc/fstab # 아래 내용을 추가하고 저장하기 /swapfile swap swap defaults 0 0
      notion image
       
      5.3. swap 메모리가 잘 설정됐는 지 확인하기
      $ free
      notion image
       
  1. Kafka 설정 수정하기
    1. $ vi config/server.properties
       
      server.properties
      ... # 외부에서 접근할 때 사용하는 주소 advertised.listeners=PLAINTEXT://{EC2 Public IP}:9092,CONTROLLER://{EC2 Public IP}:9093
      클라이언트가 외부에서 접근할 때 사용하는 IP 주소로 고쳐야 한다. 그래서 EC2의 Public IP 주소로 변경해주었다.
       
  1. Kafka 서버 시작하기
    1. # 초기 로그 폴더 셋팅 (카프카 첫 실행 때만 이 명령어를 입력하면 됨) $ KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)" $ bin/kafka-storage.sh format --standalone -t $KAFKA_CLUSTER_ID -c config/server.properties # 카프카 서버 실행 $ cd ~/kafka_2.13-4.0.0 $ bin/kafka-server-start.sh config/server.properties # 포그라운드에서 실행
      notion image
      • Kafka를 실행시켰을 때 위와 같은 로그가 찍힌다면 성공적으로 서버가 실행된 것이다.
      • Kafka 서버를 종료하고 싶다면 Ctrl + c를 누르면 된다.
       
  1. Kafka 서버를 백그라운드에서 실행하기
    1. # 백그라운드에서 실행 $ bin/kafka-server-start.sh -daemon config/server.properties # 백그라운드에서 실행되고 있는 kafka 서버의 로그 확인하기 $ tail -f logs/kafkaServer.out
       
  1. Kafka 서버가 실행 중인지 확인하는 방법
    1. $ sudo lsof -i:9092 # 9092번 포트에서 실행 중인 프로세스 조회
      notion image
 
 

✅ Kafka 종료하기 / 다시 실행하기

Kafka를 연습하다보면 껐다가 다시 실행시킬 일이 많다. 따라서 Kafka를 종료했다가 다시 실행시켜보자.
 
  1. Kakfa 종료하기
    1. # 카프카 종료하기 $ bin/kafka-server-stop.sh # 잘 종료됐나 확인 $ sudo lsof -i:9092
       
  1. Kakfa 다시 실행하기
    1. # 백그라운드에서 실행 $ bin/kafka-server-start.sh -daemon config/server.properties # 잘 실행됐나 확인 $ sudo lsof -i:9092
 
 

✅ 참고) 명령어 분석

notion image
kafka 디렉터리 내부에 있는 bin 디렉터리로 들어가보면 다양한 쉘 스크립트 파일(.sh)이 존재한다. 실제 카프카 명령어를 실행시킬 때 이 쉘 스크립트 파일을 활용해서 실행시키는 것이다. 그래서 이전에 입력한 명령어를 살펴보면 쉘 스크립트 파일을 실행시키는 명령어로 시작한다.
** 쉘 스크립트 파일 실행 방법 : 실행시키고자 하는 파일의 경로를 명령어로 입력하면 된다. (이 개념에 대해 모른다면 리눅스를 별도로 공부해서 리눅스의 핵심 개념들을 숙지하는 걸 권장한다.)
 
📎
이 글은 실전에서 바로 써먹는 Kafka 입문 강의의 수업 자료 중 일부입니다.