수백만 건 이상의 데이터를 처리하는 배치 시스템을 운영하면서 느끼는 가장 큰 문제는 성능 저하와 장애 발생 시 복구의 어려움입니다. 단순 반복문이나 잘못된 설계로는 이러한 문제를 해결할 수 없습니다. 이 강의에서는 실제 서비스 환경에서 대용량 데이터를 안정적으로 처리해온 경험을 바탕으로, Spring Batch의 구조와 동작 원리를 이해하고 이를 활용해 성능과 안정성을 모두 잡는 설계 방법을 전달합니다. 단순한 기능 설명을 넘어 실무에서 바로 적용 가능한 배치 아키텍처를 통해 데이터 처리에 대한 근본적인 해결 능력을 키울 수 있도록 돕습니다.
강의 너무 잘 봤습니다. 처음 배워보는 Spring Batch관련된 내용인데 처음들어도 다 이해가 될만큼 편하게 설명해주셔서 많은 도움이 되었습니다!
5.0
letes ky
92% 수강 후 작성
면접관님의 좋은 견해를 옅볼 수 있는 좋은 강의였습니다. 실무 개발을 한지 꽤 된거 같은데도 아직도 배울부분이 많다는걸 이 강의를 통해 알게되었네요.
좋은 내용 감사합니다.
5.0
warna
88% 수강 후 작성
딱 핵심만 쏙쏙 잘 봤습니다.
수강 후 이런걸 얻을 수 있어요
대용량 데이터(수백만~수천만 건)를 안정적으로 처리할 수 있는 Spring Batch 설계 능력
Chunk 기반 처리, 트랜잭션 관리, Retry/Skip 전략을 실제 코드로 구현하는 실전 역량
Job / Step 구조를 활용해 확장 가능하고 유지보수 가능한 배치 아키텍처 설계 능력
장애 발생 시 재처리 및 복구 전략을 스스로 설계하고 적용할 수 있는 문제 해결 능력
멀티 스레드, 파티셔닝 등을 활용한 배치 성능 최적화 및 병렬 처리 구현 경험
개발 · 프로그래밍 · 백엔드
수천만 건을 반복문으로 돌릴 수는 없습니다 대용량 데이터를 다루는 Spring Batch 강의
이 강의는 Spring Batch를 "배치를 돌리는 방법"이 아니라 대용량 데이터를 안정적으로 처리하는 설계로 다루는 실습 강의입니다. Job과 Step, Chunk
기반 트랜잭션에서 시작해 실패한 데이터만 골라 다시 처리하는 방법, 그리고 병렬 처리로 시간을 줄이는 방법까지 직접 구현합니다.
Job → Step → Chunk구조를 처음부터 손으로 짭니다
첫 Job에서 병렬 처리까지거의 모든 시간이 실습으로 이어집니다
Skip · Retry · 병렬장애 복구와 성능까지
카카오 현직 서버 개발자 · 면접관이 함께 구성한 커리큘럼 난이도는 입문이지만 5·6섹션의 내결함성과 병렬 처리는 이미 배치를 운영 중인 분에게도
새로운 내용입니다 실습 환경은 macOS(Apple M3) · Java 17 · VS Code
이 강의가 시작된 이유
배치 돌릴 때마다 무섭다는 말에서 시작했습니다
아래는 실제 대화 내용입니다. 토스 개발자의 하소연에 카카오 면접관이 "이거 내가 강의로 만들어볼게"로 답한 날이에요.
Toss 개발자요즘 배치 돌릴 때마다 터질까봐 무섭다… 데이터가 너무
많아졌어.
Choi (Kakao 면접관)몇 건 정도 처리하는데?? 금융 쪽이라 되게
많을 것 같기는 하다.
Toss 개발자한 번 돌리면 몇 천만 건은 기본이지… 처리 속도도
문제고, 장애 나면 복구도 너무 힘들어.
Ande (Naver)음... Spring 자체가 무겁긴 한데 Multi
Threaded 같은 거 적용하면 막 엄청 헤비하게 돌지는 않던데. DB 문제가 아닌 이상.
Choi (Kakao 면접관)나도 인정. 복구도 Listener 같은 거
도입해서 보면 그렇게 어렵지 않아. Skip, Retry 넣으면 개별로 다시 Transaction도 지원해주니까
Choi (Kakao 면접관)이거 내가 한번 강의로 녹여볼게. 생각보다
Spring Batch 잘 모르시는 분들이 많더라고
Hong이젠 뭐... 내 일정 물어보지도 않고 일단 던지고
보네;;
그렇게 이 강의가 만들어졌습니다. 배치가 무섭다는 사람과, 그게 왜 안 무서운지 아는 사람의 대화에서요.
“
생각보다 Spring Batch 잘 모르시는 분들이 많더라고요.
현직 카카오 서버 개발자 · 면접관12년차 · 이 대화 뒤에 직접 강의를 만들었습니다
지금 겪고 있는 일
대용량 데이터 배치 처리, 그냥 반복문으로 해결하고 계신가요
실무에서 데이터를 다루다 보면 단순한 CRUD를 넘어서는 순간이 반드시 옵니다. 그때 아래 문제가 한꺼번에 옵니다.
수백만에서 수천만 건에 이르는 데이터를 한 번에 처리해야 한다
중간에 실패하면 어디서부터 다시 돌려야 할지 알 수 없다
트랜잭션을 어디까지 묶어야 할지, 메모리는 버틸지 확신이 없다
배치 스케줄링과 운영을 사람이 매번 챙기고 있다
이 문제들을 코드 몇 줄로 해결할 수 있을까요, 아니면 몇만 줄을 써야 할까요.
Why Spring Batch
Spring Batch는 어떤 프레임워크인가요
Spring Batch는 대용량 데이터 처리를 위한 Java · Spring 기반 프레임워크입니다. 단순한 반복 작업을 넘어 안정성과 확장성을 고려한 처리를
가능하게 합니다. Spring Boot 위에서 바로 쓸 수 있고, spring-framework 생태계의 트랜잭션 관리를 그대로 활용합니다.
Chunk
Chunk는 Step 안에서 한 번에 처리할 데이터 묶음의 단위입니다. Spring Batch는 이
Chunk 단위로 데이터를 나눠 처리해 메모리 사용과 성능을 함께 잡습니다.
트랜잭션
Spring Batch는 Chunk 단위로 트랜잭션을 관리해, 실패했을 때 그 단위만 롤백하고 다시 처리할 수
있습니다.
Skip · Retry
Spring Batch는 특정 데이터가 실패해도 전체를 멈추지 않고 건너뛰거나 다시 시도하는
복구 전략을 제공합니다.
Job · Step
Spring Batch는 복잡한 배치 로직을 단계로 나눠 설계하게 해, 어디서 무엇이 도는지
명확해집니다.
Reader · Processor · Writer
ItemReader는 데이터를 하나씩 읽고,
ItemProcessor는 읽어온 데이터를 가공하거나 걸러내며, ItemWriter는 그 결과를 Chunk 단위로 모아 저장합니다.
ExecutionContext
Spring Batch는 실행 상태를 저장해 중단된 작업을 그 지점부터 다시
실행(restart)할 수 있습니다.
병렬 처리
Spring Batch는 멀티 스레드와 파티셔닝으로 처리 시간을 줄이는 병렬 처리 패턴을
지원합니다.
공식 문서는 Spring Batch를 이렇게 설명합니다.
A lightweight, comprehensive batch framework designed to enable the development of robust
batch applications vital for the daily operations of enterprise systems.
기업 시스템의 일상 운영에 필수적인, 견고한 배치 애플리케이션 개발을 가능하게 하는 가볍고 포괄적인 배치 프레임워크입니다. 로깅과 추적, 트랜잭션 관리, 작업
통계, 재시작, Skip 처리, 리소스 관리 같은 기능을 재사용 가능한 형태로 제공합니다.
Spring Batch가 관리하는 워크플로우 DDL실패했을 때 어디까지 되돌아가는지를 DB 테이블로 직접 확인합니다
하나의 Reader를 공유하는 Multi Threaded Step병렬로 돌리면 시간이 얼마나 줄어드는지
배치가 무섭지 않아지는 지점이 있습니다
첫 Job을 만드는 것에서 시작해 병렬 처리까지 이어집니다.
이 강의의 특징
왜 이 Spring Batch 강의인가요
면접관 관점에서 반드시 알아야 할 개념을 짚습니다
기능 설명으로 끝내지 않습니다. 실제 면접과 실무에서 중요하게 보는 지점을 중심으로 Spring Batch를 어떻게 설계해야 하는지 다룹니다.
거의 모든 시간이 실습으로 이어집니다
배치는 이론만으로 이해하기 어렵습니다. 직접 구현하고 실행하면서 데이터가 어떻게 처리되는지, 어디서 병목이 생기는지 눈으로 확인합니다.
주니어와 시니어를 가르는 지점은 데이터 처리입니다
API만 만들어 본 개발자에서 데이터 흐름까지 설계할 수 있는 개발자로 넘어가는 구간을 다룹니다.
장애가 났을 때를 먼저 설계합니다
Skip과 Retry, ExecutionContext 기반 restart를 다뤄, 실패한 지점부터 다시 이어 돌리는 구조를 손에 익힙니다.
수강 후 달라지는 것
이 강의를 끝내면 무엇을 할 수 있나요
아래 다섯 가지는 강의를 마친 뒤 코드로 만들 수 있거나, 면접에서 근거를 들어 설명할 수 있는 것들입니다.
설계
처리할 데이터의 성격을 보고 Tasklet과 Chunk 지향 Step 중 무엇을 쓸지 고르고, 그 이유를 설명할
수 있습니다.
트랜잭션
Chunk 크기를 얼마로 잡을지 판단하고, 실패했을 때 어디까지 롤백되는지를 DB에서 확인할 수
있습니다.
복구
Skip과 Retry 중 무엇을 쓸 상황인지 구분하고, 중단된 Job을 그 지점부터 다시 이어 돌릴 수
있습니다.
성능
멀티 스레드 Step과 파티셔닝을 적용해 같은 데이터를 더 짧은 시간에 처리할 수 있습니다.
운영
JobRepository가 남긴 메타데이터를 읽어 어제 배치가 왜 실패했는지 추적할 수 있습니다.
이런 분께 추천해요
이 Spring Batch 강의는 누구를 위한 강의인가요
배치 작업이 느리거나 자주 실패하는데 원인을 정확히 모르는 백엔드 개발자
대용량 데이터 처리에서 메모리·성능 문제로 장애를 겪어 본 개발자
Spring Batch를 쓰고는 있지만 구조를 몰라 비효율적으로 구현하고 있는 개발자
장애가 났을 때 재처리와 복구 로직을 어떻게 설계할지 막막한 개발자
단순 CRUD를 넘어 데이터 처리 중심의 역량으로 성장하고 싶은 개발자
반대로 Chunk 단위 트랜잭션의 경계, Skip과 Retry의 차이, 멀티 스레드 Step이 안전한 조건을 지금 바로
설명할 수 있다면 이 강의는 필요하지 않습니다.
커리큘럼
Spring Batch 강의 커리큘럼
Spring Batch를 처음 배우는 개발자를 위한 순서로 구성돼 있습니다. 배치가 왜 필요한지에서 시작해 핵심 개념, 워크플로우, 내결함성, 병렬 처리 순으로
이어집니다.
섹션 2. 다양한 도메인에서 배치 처리가 왜 필요할까
여러분들은 배치 처리를 뭐라고 생각하시나요
Spring Batch가 제공하는 그 생태계만의 아키텍처
Spring Initializr를 통한 실습 구성 및 빌드 설정
섹션 3. Spring Batch의 핵심적인 기본 개념
첫 번째 Job과 Step 작성하며 실행 및 DB 상태 확인하기
JobRepository와 JobLauncher 그리고 ExecutionContext
Tasklet Step 인터페이스 집중 분석과 커스텀 Tasklet 구현
Chunk 지향 Step 패턴과 트랜잭션 상관관계
섹션 4. 워크플로우 : Reader + Processor + Writer 패턴
데이터를 읽고 가공하고 쓰는 흐름을 실습으로 다룹니다.
섹션 5. 내결함성과 트러블 슈팅을 위한 Optional 패턴
Skip·Retry를 포함한 복구 전략과 트러블 슈팅을 다룹니다.
섹션 6. 성능 향상의 핵심, 3가지 병렬 처리 패턴
멀티 스레드 Step을 포함한 병렬 처리 패턴 세 가지를 다룹니다.
다루는 기술 · 실습 환경
무엇으로 실습하나요
Spring Batch
Job · Step
Chunk
Tasklet
Skip · Retry
Multi Threaded Step
Java
Spring
Spring Boot
spring-framework
macOS (Apple M3)
Apple M3 Air 환경에서 Java 17.0.12 LTS로 진행하며 편집기는 VS Code를 씁니다. Spring
Initializr로 프로젝트를 만드는 단계부터 함께 짚습니다.
커리큘럼까지 다 보셨다면
수강기한은 무제한입니다. 장애가 났을 때 필요한 섹션만 다시 꺼내 볼 수도 있어요.
누가 만들었나요
현업 서버 개발자 · 면접관이 함께 만들었습니다
이 강의는 판교 플랫폼 서버 개발자 Hong과, 카카오 본사 12년차 서버 개발자이자 면접관인 Choi가 함께 만들었습니다.
지식공유자 · 판교 플랫폼 서버 개발
Hong
판교에서 플랫폼 서버 개발을 담당하고 있습니다. 직접 공부한 방법과 실무에서 마주치는 문제·해결책을 나누려고 지식공유자 활동을 이어가고 있어요. 강의는 혼자가 아니라 현업의
여러 개발자와 함께 만듭니다.
[現] 판교 플랫폼 서버 개발자
인프런 지식공유자 · 백엔드 강의 다수 운영
[前] 블록체인 · 메타버스 백엔드 개발
카카오 · 12년차 서버 개발자 · 면접관
Choi
12년차 백엔드 서버 개발자로 카카오에서 서버 개발과 면접관을 함께 맡고 있습니다. Hong과는 컨퍼런스에서 인연을 맺어 강의 활동 중반부터 계속 함께 참여하며 여러 주제를
만들어 왔습니다. 대기업 이력 하나가 좋은 개발자를 증명하지는 않지만, 일반적인 플랫폼보다 더 많은 트래픽과 경험을 쌓을 수 있다고 보고 그 경험을 강의에 녹입니다.
[現] 카카오 본사 서버 개발자 · 면접관
[前] 서울 4년제 컴퓨터공학 전공
자주 묻는 질문
Spring Batch 강의 자주 묻는 질문
Spring Batch는 무엇인가요?
Spring Batch는 대용량 데이터를
처리하기 위한 Java·Spring 기반 배치 프레임워크입니다. 로깅과 추적, 트랜잭션 관리, 작업 통계, 재시작, Skip 처리 같은 기능을 재사용 가능한 형태로 제공해,
수백만 건 이상의 데이터를 안정적으로 처리하도록 돕습니다.
Job과 Step은 무엇인가요?
Job은 배치 작업 하나 전체를 가리키는
단위이고, Step은 그 Job을 이루는 실행 단계입니다. 하나의 Job은 여러 Step으로 나뉘고, 각 Step은 순서대로 또는 조건에 따라 실행됩니다. 섹션 3에서 첫
Job과 Step을 직접 만들어 실행하고 DB 상태까지 확인합니다.
Chunk란 무엇인가요?
Chunk는 Step 안에서 한 번에 처리할
데이터 묶음의 단위입니다. 예를 들어 Chunk 크기가 1,000이면 1,000건을 읽어 가공하고 한 번에 저장한 뒤 커밋합니다. 트랜잭션이 이 Chunk 단위로 묶이기
때문에, 실패하면 그 Chunk만 롤백됩니다. 섹션 3에서 Chunk 지향 Step과 트랜잭션의 관계를 실습으로 다룹니다.
Reader, Processor, Writer는 각각 무엇을 하나요?
ItemReader는 처리할 데이터를 하나씩
읽어오고, ItemProcessor는 읽어온 데이터를 가공하거나 조건에 맞지 않는 것을 걸러내며, ItemWriter는 가공된 데이터를 Chunk 단위로 모아 저장합니다.
이 세 컴포넌트가 반복 실행되며 하나의 Chunk 지향 Step을 이룹니다. 섹션 4가 이 워크플로우 전체를 다룹니다.
Tasklet과 Chunk 지향 Step은 언제 각각 쓰나요?
Tasklet은 한 번 실행하고 끝나는 단순한
작업에 맞고, Chunk 지향 Step은 읽고 가공하고 쓰는 흐름을 대량으로 반복할 때 씁니다. 대용량 처리는 대부분 Chunk 지향입니다. 섹션 3에서 Tasklet
인터페이스를 뜯어보고 커스텀 구현까지 해 본 뒤, Chunk 지향과 트랜잭션의 관계를 이어서 다룹니다.
배치가 중간에 실패하면 처음부터 다시 돌려야 하나요?
아니요. Spring Batch는 실행 상태를
ExecutionContext에 기록해 두기 때문에 중단된 지점부터 다시 이어서 실행할 수 있습니다. 특정 데이터만 문제라면 Skip으로 건너뛰거나 Retry로 다시 시도할
수도 있습니다. 섹션 5에서 이 복구 전략을 실습으로 다룹니다.
배치 처리 속도를 어떻게 올리나요?
Chunk 크기를 조정하는 것에서 시작해,
하나의 Reader를 여러 스레드가 공유하는 Multi Threaded Step이나 데이터를 나눠 병렬로 도는 파티셔닝을 씁니다. 섹션 6에서 병렬 처리 패턴 세 가지를
다루고, 미리보기 영상에서 그중 하나를 볼 수 있습니다.
Spring Batch가 스케줄링 기능도 제공하나요?
아니요. Spring Batch 자체에는
스케줄링 기능이 없습니다. Job을 언제 얼마나 자주 실행할지는 Spring의 스케줄러나 외부 스케줄러가 담당하고, Spring Batch는 그렇게 실행된 Job을
안정적으로 처리하고 실패 시 복구하는 역할을 맡습니다. 둘은 경쟁 관계가 아니라 역할이 나뉘어 있습니다.
Spring Batch 입문자도 따라갈 수 있나요?
네. 난이도 입문 강의로, 배치가 왜
필요한지에서 시작해 Spring Initializr로 프로젝트를 만드는 단계부터 함께 갑니다. Java와 Spring Boot를 써 본 경험이 있으면 충분하고, 뒤쪽의
내결함성과 병렬 처리는 이미 배치를 운영 중인 분에게도 새로운 내용입니다.
실습 환경은 어떻게 구성하나요?
Apple M3 Air에서 Java
17.0.12 LTS와 VS Code로 진행합니다. 섹션 2에서 Spring Initializr를 통해 프로젝트를 만들고 빌드 설정을 잡는 과정을 함께 다루므로 그대로
따라오면 됩니다.
이미 실무에서 Spring Batch를 쓰고 있는데도 들을 이유가 있나요?
돌아가게 만드는 것과 왜 그 구조인지 설명하는
건 다른 일입니다. Chunk 경계를 어디에 두었는지, Skip과 Retry 중 무엇을 골랐는지, 멀티 스레드 Step이 안전한 조건이 무엇인지 지금 바로 답할 수 있다면
이 강의는 필요하지 않습니다. 막힌다면 섹션 3·5·6이 그 지점을 채웁니다.
Spring Batch 강의 커리큘럼은 어떤 순서인가요?
배치 처리가 왜 필요한지와 Spring
Batch 아키텍처에서 시작해, Job·Step·Tasklet·Chunk 같은 핵심 개념, Reader·Processor·Writer 워크플로우, 내결함성과 트러블 슈팅,
병렬 처리 패턴 순으로 이어집니다. 수강기한은 무제한입니다.
데이터가 쌓이는 만큼, 다루는 사람도 달라져야 합니다
첫 Job을 만드는 것에서 시작해 복구와 병렬 처리까지 전부 실습으로 확인합니다.
함께 성장해요
개발자 오픈 채팅방
커리어와 현업 상황, 기술을 나누는 개발자 오픈 채팅방을 운영하고 있어요. 강의를 들으며 궁금한 점이나 실무 고민을 편하게 나눠 보세요.