📚 자바 백엔드 입문 · ?편 — 48편 완주 가이드
📚 시리즈 3 · 48편
Spring Batch 입문에서 운영까지
Job·Step·Chunk 위에 ItemReader·Processor·Writer 를 얹어 대용량 데이터를 안전하게 끝내는 자바 배치 처리의 표준 프레임워크의 입문부터 운영까지. 48편을 한 호흡에 풀어쓴 학습 자료입니다.
어떤 분이 읽으면 좋아요
이 시리즈는 대용량 정산·집계·ETL·통계 배치를 자바·Spring 환경에서 다뤄야 하는 백엔드 엔지니어, 또는 cron + 수기 스크립트로 굴리던 배치를 재시작 가능한 구조로 옮기고 싶은 분을 염두에 두고 썼어요. 자바 백엔드 입문 59편 으로 Spring 기반이 잡혔고 백엔드 데이터 인프라 130편 으로 PG·Redis·Kafka 위에 영속·캐시·이벤트가 깔렸다면, 그 위에서 밤마다·시간마다·이벤트마다 도는 잡 을 정식 인프라로 끌어올리는 자리가 Spring Batch.
처음 들어오신 분은 1편(intro)·2편(architecture)·3편(domain-language)·4편(whats-new-v6) 네 글이면 큰 그림이 잡혀요. 운영에 들어가실 분은 Part 9 재시도·테스트 3편과 Part 10·11 의 패턴·관측 8편을 먼저 챙기시면 됩니다.
추천 읽기 순서
- 배치 초보 → 1편(intro) → 3편(domain-language) → 4편(whats-new-v6) → 11편(step-overview) → 12편(chunk-configuring)
- Spring 경험자가 빠르게 → 2편(architecture) → 6편(configuring-job) → 9편(running-job) → 22편(item-reader) → 23편(item-writer)
- 운영 사고 대응 → 13편(step-restart) → 14편(skip-logic) → 15편(retry-logic) → 16편(transaction-attributes) → 17편(item-stream-registering)
- 재시도·실패 함정 → 14편(skip-logic) → 15편(retry-logic) → 39편(retry) → 38편(repeat) → 41편(common-patterns)
- 대용량 스케일링 → 12편(chunk-configuring) → 37편(scaling-parallel) → 44편(async-externalization) → 34편(database-reader-writer)
- 관측·테스트 → 40편(testing) → 45편(observability-micrometer) → 46편(observability-jfr) → 10편(advanced-metadata)
전체 목차 — Part 1~11
Part 1. 입문·기본 (4편)
| 편 |
제목 |
핵심 |
| 1편 |
Spring Batch 종합 |
정의·언제 쓰나·어디는 안 어울리나 |
| 2편 |
Architecture |
Application·Core·Infrastructure 3계층 |
| 3편 |
Domain Language |
Job·JobInstance·Step·Item·Chunk |
| 4편 |
v6 What's New + Hello Job |
Framework 7·Retry 분리·JFR·JSpecify |
Part 2. Job 설정·실행 (6편)
| 편 |
제목 |
핵심 |
| 5편 |
Batch Infrastructure |
@EnableBatchProcessing·Beans |
| 6편 |
Configuring a Job |
JobBuilder·Validator·Listener |
| 7편 |
JobRepository |
영속화·Schema·Isolation |
| 8편 |
JobOperator |
실행·중지·재시작·CommandLine |
| 9편 |
Running a Job |
JobLauncher·Sync/Async·Scheduler |
| 10편 |
Advanced Metadata |
JobExplorer·JobRegistry·운영 대시보드 |
Part 3. Step · Chunk Processing (8편)
| 편 |
제목 |
핵심 |
| 11편 |
Step 종합 |
Chunk-oriented vs TaskletStep |
| 12편 |
Chunk Step 설정 |
Commit Interval 튜닝 |
| 13편 |
Step Restart |
부모 Step 상속·재시작 안전성 |
| 14편 |
Skip Logic |
부분 실패 무시·SkipPolicy·SkipListener |
| 15편 |
Retry Logic |
일시적 실패 자동 재시도 |
| 16편 |
Transaction Attributes |
Isolation·Propagation·Timeout |
| 17편 |
ItemStream 등록 |
재시작 안전성의 핵심 |
| 18편 |
Step Listener 종합 |
라이프사이클 후킹 6 종 |
Part 4. Tasklet · Flow Control (3편)
| 편 |
제목 |
핵심 |
| 19편 |
TaskletStep |
단발 작업의 정석 |
| 20편 |
Flow Control |
Decision·Split·조건 분기 |
| 21편 |
Late Binding |
@StepScope·@JobScope·SpEL |
Part 5. ItemReader · Writer 기본 (5편)
| 편 |
제목 |
핵심 |
| 22편 |
ItemReader 종합 |
인터페이스·Delegate Pattern |
| 23편 |
ItemWriter 종합 |
인터페이스·Composite·Classifier |
| 24편 |
ItemStream 본격 풀이 |
open·update·close 3원칙 |
| 25편 |
Reader·Writer 카탈로그 |
공식 구현체 전체 목록 |
| 26편 |
Custom Reader·Writer |
직접 구현·재시작 안전 |
Part 6. File · DB Reader/Writer (8편)
| 편 |
제목 |
핵심 |
| 27편 |
Flat File Overview |
파싱 3총사·LineMapper |
| 28편 |
FieldSet |
Flat File 의 ResultSet |
| 29편 |
FlatFileItemReader |
깊은 옵션·Delimited·FixedLength |
| 30편 |
FlatFileItemWriter |
LineAggregator·FieldExtractor |
| 31편 |
XML Reader·Writer |
StAX 기반 streaming |
| 32편 |
JSON Reader·Writer |
Jackson·Gson |
| 33편 |
Multi-File Input |
MultiResourceItemReader |
| 34편 |
Database Reader·Writer |
Cursor vs Paging |
Part 7. ItemProcessor · 재사용 (2편)
| 편 |
제목 |
핵심 |
| 35편 |
ItemProcessor |
변환·필터·검증 |
| 36편 |
Reusing Services |
ItemReaderAdapter·Process Indicator |
Part 8. Scaling · Parallel (1편)
| 편 |
제목 |
핵심 |
| 37편 |
Scaling · Parallel 6 전략 |
Multi-threaded·Parallel Steps·Partitioning·Remote Chunking |
Part 9. Repeat · Retry · Testing (3편)
| 편 |
제목 |
핵심 |
| 38편 |
Repeat |
RepeatTemplate·CompletionPolicy |
| 39편 |
Retry (전역) |
Spring Framework 7 Core Retry·v6 변경 |
| 40편 |
Testing |
@SpringBatchTest·End-to-End |
Part 10. Patterns · Integration · Observability (5편)
| 편 |
제목 |
핵심 |
| 41편 |
Common Patterns |
흔한 운영 패턴 카탈로그 |
| 42편 |
Spring Batch Integration |
두 프레임워크 경계 |
| 43편 |
Launching via Messages |
JobLaunchingGateway·Informational |
| 44편 |
Async · Remote Chunking · Partitioning |
외부화 3 전략 |
| 45편 |
Observability · Micrometer |
Tracing·Metric |
Part 11. 운영·완주 (3편)
| 편 |
제목 |
핵심 |
| 46편 |
Java Flight Recorder |
v6 신규·JFR Event |
| 47편 |
Meta-Data Schema |
Glossary·Appendix |
| 48편 |
시리즈 마무리 |
FAQ·완주 회고·다음 학습 |
시리즈 핵심 한 줄 정리
- 핵심 5단어 — Job · JobInstance · Step · Chunk · ItemReader / Writer / Processor
- 3계층 아키텍처 — Application (사용자 코드) · Core (Job·Step 실행기) · Infrastructure (Repository·Reader·Writer 인프라)
- Chunk vs Tasklet — 대량 Read-Process-Write 흐름은 Chunk Step, 단발 작업·파일 정리·SQL 한 방은 TaskletStep
- 재시작 안전성 — ItemStream 등록 + JobRepository 영속화 + ExecutionContext 보관, 이 3축이 어디서 죽어도 이어서 도는 핵심
- v6 핵심 변경 — Spring Framework 7 기반 · Spring Retry 분리 후 Framework Core Retry 사용 · CommandLineJobOperator · JFR 내장 · JSpecify Null 안정성
- Scaling 6 전략 — Multi-threaded Step · Parallel Steps · Remote Chunking · Partitioning · Async ItemProcessor · Externalized Step
- 운영 7대 사고 — Chunk Size 부적정·재시작 미설계·Skip/Retry 오용·Transaction Isolation 충돌·ItemStream 미등록·메타 테이블 비대화·Job Parameter 충돌
- 현재 안정 버전 — Spring Batch 6.0.3 (Spring Boot 3.5+·Java 17+, 2026-05 기준)
다른 시리즈
이 시리즈가 끝나면 시리즈 1·2 와 묶어 자바 입문 → 데이터 인프라 → 배치 처리 3 단 학습 그림이 완성돼요. Spring Batch 위에서 굴러가는 잡을 관측할 시리즈 7 (Grafana) 와 묶어 읽으시면 작성·실행·관측 한 사이클이 한 번에 잡혀요.