죽음의 스프링 배치 6(프로그래밍 언어)
새벽 3시의 처절한 공포는 이제 끝이다
Regular price
$38.20
Sale price
Regular price
✈️
Estimated delivery date 예상 배송일
Standard Shipping
불러오는 중...
주문일로부터 8-12 영업일
Express Shipping
불러오는 중...
주문일로부터 6-8 영업일
데이터를 향한 무자비한 집행,
스프링 배치 6로 완성하는 엔터프라이즈 '배치 처단'의 기술!
"어떤 버그도 시스템을 멈출 수 없다. 재시도(Retry)와 스킵(Skip)으로 완성하는 난공불락 데이터 핸들링"
이 책은 자바 엔터프라이즈 환경의 필수 관문인 '스프링 배치 6'를 단순한 프레임워크 사용법을 넘어, 데이터를 효율적으로 '처단(Processing)'하는 실전 작전 지침서로 풀어냈다. 파일 시스템부터 NoSQL까지 아우르는 강력한 읽기/쓰기 전략은 물론, 실무에서 가장 빈번하게 발생하는 '조용한 데이터 유실'과 '성능 저하' 문제를 정면으로 돌파한다.
특히 FaultTolerant 작전을 통해 예외 상황에서도 시스템을 굴복시키는 내결함성 설계 노하우를 '처형자'라는 독특한 페르소나를 빌려 강렬하게 전달한다.
독자들은 단순히 기능을 구현하는 수준을 넘어, 수백만 건의 데이터를 찰나의 순간에 처리하는 압도적인 최적화 기법을 체득하게 될 것이다.
이제 코드를 타이핑하는 수준을 벗어나, 완벽하게 통제된 배치 시스템의 지휘관으로 거듭날 시간이다.
스프링 배치 6로 완성하는 엔터프라이즈 '배치 처단'의 기술!
"어떤 버그도 시스템을 멈출 수 없다. 재시도(Retry)와 스킵(Skip)으로 완성하는 난공불락 데이터 핸들링"
이 책은 자바 엔터프라이즈 환경의 필수 관문인 '스프링 배치 6'를 단순한 프레임워크 사용법을 넘어, 데이터를 효율적으로 '처단(Processing)'하는 실전 작전 지침서로 풀어냈다. 파일 시스템부터 NoSQL까지 아우르는 강력한 읽기/쓰기 전략은 물론, 실무에서 가장 빈번하게 발생하는 '조용한 데이터 유실'과 '성능 저하' 문제를 정면으로 돌파한다.
특히 FaultTolerant 작전을 통해 예외 상황에서도 시스템을 굴복시키는 내결함성 설계 노하우를 '처형자'라는 독특한 페르소나를 빌려 강렬하게 전달한다.
독자들은 단순히 기능을 구현하는 수준을 넘어, 수백만 건의 데이터를 찰나의 순간에 처리하는 압도적인 최적화 기법을 체득하게 될 것이다.
이제 코드를 타이핑하는 수준을 벗어나, 완벽하게 통제된 배치 시스템의 지휘관으로 거듭날 시간이다.
Couldn't load pickup availability
출판사 리뷰
출판사 리뷰
◈ 내용 소개 ◈
1. 해부 - Job, Step, 그리고 스코프의 내장을 꺼내라
배치를 어렵게 느끼는 이유는 단 하나다. 내부에서 무슨 일이 벌어지는지 모르기 때문이다. Job과 Step의 생명 주기를 처음부터 해체하고, 개발자들이 가장 많이 틀리는 스코프(Scope)의 함정을 정조준한다. 기초를 제대로 장악하면 나머지는 그냥 따라온다.
2. 침투 - 어떤 데이터 소스도 막을 수 없다
플랫 파일(CSV/JSONL)부터 NoSQL까지, 어떤 형태의 데이터라도 막힘없이 읽고 쓰는 리더·라이터 전술을 완전히 내 것으로 만든다. 데이터가 어디 숨어있든 끄집어낸다.
3. 처단 - 에러가 시스템을 무너뜨리기 전에, 네가 먼저 에러를 처형해라
실전 배치의 진짜 공포는 기능 구현이 아니다. 아무도 모르게 조용히 사라지는 데이터, 예외 하나에 통째로 멈추는 Job이다. Retry와 Skip 전략으로 어떤 예외 상황에서도 굴복하지 않는 FaultTolerant 아키텍처를 구축한다. 트랜잭션 경계 안에서 데이터를 완벽히 통제하는 법, 이제 배운다.
4. 지배 - 단일 스레드의 한계를 돌파하고, 시스템을 완전히 장악하라
수백만 건 데이터를 빠르게 처리하고 싶다면 단일 스레드로는 어림도 없다. 멀티 스레드 Step과 파티셔닝으로 처리 속도를 극한까지 끌어올린다. 배치 메타데이터로 실행 이력을 추적하고 성능 저하의 원인을 찾아내는 디버깅 기술까지. 이 챕터를 끝내면 배치 시스템 앞에 지휘관으로 서게 된다.
◈ 지은이의 말 ◈
Part I: 배치의 존재
엔터프라이즈 세상에는 보이지 않는 묵묵한 일꾼이 있다.
그렇다. 그 녀석의 정체는 배치(batch)다.
새벽 3시, 세상이 잠든 시간. 수백만 건의 포인트가 정산되고, 이메일이 발송되며, 재고가 동기화된다. 사용자는 모른다. 자신의 계좌에 찍힌 그 숫자가, 아침에 받은 그 알림이, 어젯밤 배치의 손을 거쳐 태어났다는 것을.
배치는 화려하지 않다. 실시간 API처럼 즉각적인 피드백을 주지 않는다. 사용자의 클릭 한 번에 반응하지도 않는다. 그저 묵묵히 정해진 시간에, 정해진 일을 수행할 뿐이다.
하지만 이 녀석이 죽는 순간, 지옥이 펼쳐진다.
포인트가 증발하고, 정산이 꼬이며, 고객 센터는 불타오른다. 그제야 사람들은 깨닫는다. 배치가 얼마나 중요한 존재였는지를.
배치는 시스템의 심장박동이다. 눈에 보이지 않지만, 멈추는 순간 모든 것이 멈춘다.
그리고 그때, 너는 처형당한다. 새벽 3시 긴급 호출로.
Part Ⅱ: 스프링 배치의 필연성
국내 대다수의 서비스는 스프링(Spring)으로 구현돼 있다. REST API는 Spring MVC로, 데이터 접근은 Spring Data로 구현돼 있다. 스프링은 이미 우리의 코드 곳곳에 스며들어 있다.
이런 환경에서 배치를 구현한다면? 스프링 배치(Spring Batch)를 선택하는 것은 자연스러운 귀결이다. 아니, 거의 필연에 가깝다.
더 중요한 것은, 스프링 배치는 검증된 무기라는 사실이다.
거의 20년 가까이 수많은 엔터프라이즈 환경에서 수조 건의 데이터를 처리하며 진화해 왔다. 실패하고, 배우고, 개선됐다. 새벽 3시의 장애들을 견디며 단단해졌다.
배치는 실패가 허용되지 않는 영역이다. 포인트가 날아가고, 정산이 꼬이는 순간, 회사 전체가 흔들린다.
그렇다면 선택은 명확하다.
검증된 도구를 쓰거나, 스스로 검증 과정을 겪거나.
참고로, 후자는 고통스럽다.
Part Ⅲ: 스프링 배치 6, 그리고 변곡점
이 책은 스프링 배치 6을 다루는 최초의 책이다.
버전 6. 단순한 숫자가 아니다. 이것은 변곡점이다.
스프링 배치 6에 들어서며, 프레임워크의 심장부가 재설계됐다. 청크 지향 처리를 담당하는 핵심 컴포넌트들이, 완전히 새로운 코드로 교체됐다.
'교체'라는 단어는 너무 가볍다. 이것은 단순한 리팩터링이 아니다. 재탄생이다.
코드를 한 줄 한 줄 비교해 본다면, 당신은 경악할 것이다. 많은 것이 바뀌었다는 사실에.
내결함성(fault tolerance): 스프링 배치의 가장 강력한 무기 중 하나인 이 기능의 내부 동작이 근본부터 변했다. Skip, Retry, Restart, 이 모든 것이 전과 다른 방식으로 작동한다.
멀티스레드 스텝(multi-threaded step): 병렬 처리를 위한 확장 기능 역시 내부 메커니즘이 재설계됐다. 버전 5에서 6으로 넘어가는 과정은, 4에서 5로의 변화보다 훨씬 더 근본적이다.
기존 지식만으로는 부족하다. 버전 5의 경험에 안주한 채 6으로 업그레이드했다가는 예상치 못한 곳에서 무너질 것이다. 겉보기에는 같아 보이지만, 속은 완전히 다른 생물이 됐기 때문이다.
깨닫는 순간, 이미 늦었다.
이 책은 그 새로운 생물을 해부하는 최초의 시도다. 버전 6의 내부를 라인 바이 라인으로, 코드 레벨로, 처형자의 눈으로 파헤칠 것이다.
Part IV: 여정의 지도
이제 우리가 어디로 향할 것인지 이야기하자.
경고한다. 이 여정은 편안하지 않다. 'Death World' 배치 튜토리얼을 기대했다면, 당장 '뒤로 가기'를 눌러라.
우리는 표면을 긁지 않는다. 우리는 뼛속까지 파고든다.
0장에서 배치의 본질과 스프링 배치의 역할을 파악한다. 지형을 모르고 전투에 뛰어드는 것은 자살 행위다.
1장은 무기 점검이다. Step 유형, Job 파라미터, 배치 스코프, 리스너. 이것들은 모든 장의 토대가 되는 핵심 지식이다. 1장을 건너뛴다면, 앞으로의 여정에서 길을 잃을 것이다.
2장부터 본격적으로 데이터를 처형하기 시작한다. 파일 기반 배치 처리 - CSV, JSON. 형식은 다양하지만 본질은 하나다. 읽고, 가공하고, 쓴다.
3장은 데이터베이스로 이동한다. 페이징과 커서, 두 가지 방식의 차이를 명확히 이해하고, 언제 무엇을 써야 하는지 판단할 수 있게 될 것이다.
4장은 생존의 기술이다. ItemStream으로 중간 상태를 관리하고, Skip/Retry로 실패에 대응한다. 그리고 마지막, 버전 6의 ChunkOrientedStep을 코드 레벨로, 라인 바이 라인으로 완전히 해부한다.
5장에서 Step을 넘어 Job 수준으로 올라간다. Job의 실행, 재시작, 중지. JobRepository, JobExecution, JobInstance의 관계. 5장을 제대로 학습한다면, 다음 6장 확장 기능의 정확한 동작을 이해하는 밑거름이 될 것이다.
6장은 한계를 넘어선다. 멀티스레드 Step, 파티셔닝, 원격 청킹, 병렬 Step과 SEDA 패턴. 대용량 데이터 처리를 위한 스프링 배치의 고급 무기들을 해부한다.
7장은 테스트다. 테스트 없는 배치는 시한폭탄이다. 스프링 배치의 테스트 도구로 안전하게 배치를 검증하는 방법을 익힐 것이다.
Part V: 처형자의 초대
이 책은 단순한 '사용법 설명서'가 아니다.
이것은 스프링 배치의 해부학이다.
표면을 넘어 내부로, 코드를 넘어 원리로, 사용을 넘어 이해로.
우리는 스프링 배치를 완전히 지배할 것이다.
준비됐는가? 자, 이제 배치의 세계로 가보자.
1. 해부 - Job, Step, 그리고 스코프의 내장을 꺼내라
배치를 어렵게 느끼는 이유는 단 하나다. 내부에서 무슨 일이 벌어지는지 모르기 때문이다. Job과 Step의 생명 주기를 처음부터 해체하고, 개발자들이 가장 많이 틀리는 스코프(Scope)의 함정을 정조준한다. 기초를 제대로 장악하면 나머지는 그냥 따라온다.
2. 침투 - 어떤 데이터 소스도 막을 수 없다
플랫 파일(CSV/JSONL)부터 NoSQL까지, 어떤 형태의 데이터라도 막힘없이 읽고 쓰는 리더·라이터 전술을 완전히 내 것으로 만든다. 데이터가 어디 숨어있든 끄집어낸다.
3. 처단 - 에러가 시스템을 무너뜨리기 전에, 네가 먼저 에러를 처형해라
실전 배치의 진짜 공포는 기능 구현이 아니다. 아무도 모르게 조용히 사라지는 데이터, 예외 하나에 통째로 멈추는 Job이다. Retry와 Skip 전략으로 어떤 예외 상황에서도 굴복하지 않는 FaultTolerant 아키텍처를 구축한다. 트랜잭션 경계 안에서 데이터를 완벽히 통제하는 법, 이제 배운다.
4. 지배 - 단일 스레드의 한계를 돌파하고, 시스템을 완전히 장악하라
수백만 건 데이터를 빠르게 처리하고 싶다면 단일 스레드로는 어림도 없다. 멀티 스레드 Step과 파티셔닝으로 처리 속도를 극한까지 끌어올린다. 배치 메타데이터로 실행 이력을 추적하고 성능 저하의 원인을 찾아내는 디버깅 기술까지. 이 챕터를 끝내면 배치 시스템 앞에 지휘관으로 서게 된다.
◈ 지은이의 말 ◈
Part I: 배치의 존재
엔터프라이즈 세상에는 보이지 않는 묵묵한 일꾼이 있다.
그렇다. 그 녀석의 정체는 배치(batch)다.
새벽 3시, 세상이 잠든 시간. 수백만 건의 포인트가 정산되고, 이메일이 발송되며, 재고가 동기화된다. 사용자는 모른다. 자신의 계좌에 찍힌 그 숫자가, 아침에 받은 그 알림이, 어젯밤 배치의 손을 거쳐 태어났다는 것을.
배치는 화려하지 않다. 실시간 API처럼 즉각적인 피드백을 주지 않는다. 사용자의 클릭 한 번에 반응하지도 않는다. 그저 묵묵히 정해진 시간에, 정해진 일을 수행할 뿐이다.
하지만 이 녀석이 죽는 순간, 지옥이 펼쳐진다.
포인트가 증발하고, 정산이 꼬이며, 고객 센터는 불타오른다. 그제야 사람들은 깨닫는다. 배치가 얼마나 중요한 존재였는지를.
배치는 시스템의 심장박동이다. 눈에 보이지 않지만, 멈추는 순간 모든 것이 멈춘다.
그리고 그때, 너는 처형당한다. 새벽 3시 긴급 호출로.
Part Ⅱ: 스프링 배치의 필연성
국내 대다수의 서비스는 스프링(Spring)으로 구현돼 있다. REST API는 Spring MVC로, 데이터 접근은 Spring Data로 구현돼 있다. 스프링은 이미 우리의 코드 곳곳에 스며들어 있다.
이런 환경에서 배치를 구현한다면? 스프링 배치(Spring Batch)를 선택하는 것은 자연스러운 귀결이다. 아니, 거의 필연에 가깝다.
더 중요한 것은, 스프링 배치는 검증된 무기라는 사실이다.
거의 20년 가까이 수많은 엔터프라이즈 환경에서 수조 건의 데이터를 처리하며 진화해 왔다. 실패하고, 배우고, 개선됐다. 새벽 3시의 장애들을 견디며 단단해졌다.
배치는 실패가 허용되지 않는 영역이다. 포인트가 날아가고, 정산이 꼬이는 순간, 회사 전체가 흔들린다.
그렇다면 선택은 명확하다.
검증된 도구를 쓰거나, 스스로 검증 과정을 겪거나.
참고로, 후자는 고통스럽다.
Part Ⅲ: 스프링 배치 6, 그리고 변곡점
이 책은 스프링 배치 6을 다루는 최초의 책이다.
버전 6. 단순한 숫자가 아니다. 이것은 변곡점이다.
스프링 배치 6에 들어서며, 프레임워크의 심장부가 재설계됐다. 청크 지향 처리를 담당하는 핵심 컴포넌트들이, 완전히 새로운 코드로 교체됐다.
'교체'라는 단어는 너무 가볍다. 이것은 단순한 리팩터링이 아니다. 재탄생이다.
코드를 한 줄 한 줄 비교해 본다면, 당신은 경악할 것이다. 많은 것이 바뀌었다는 사실에.
내결함성(fault tolerance): 스프링 배치의 가장 강력한 무기 중 하나인 이 기능의 내부 동작이 근본부터 변했다. Skip, Retry, Restart, 이 모든 것이 전과 다른 방식으로 작동한다.
멀티스레드 스텝(multi-threaded step): 병렬 처리를 위한 확장 기능 역시 내부 메커니즘이 재설계됐다. 버전 5에서 6으로 넘어가는 과정은, 4에서 5로의 변화보다 훨씬 더 근본적이다.
기존 지식만으로는 부족하다. 버전 5의 경험에 안주한 채 6으로 업그레이드했다가는 예상치 못한 곳에서 무너질 것이다. 겉보기에는 같아 보이지만, 속은 완전히 다른 생물이 됐기 때문이다.
깨닫는 순간, 이미 늦었다.
이 책은 그 새로운 생물을 해부하는 최초의 시도다. 버전 6의 내부를 라인 바이 라인으로, 코드 레벨로, 처형자의 눈으로 파헤칠 것이다.
Part IV: 여정의 지도
이제 우리가 어디로 향할 것인지 이야기하자.
경고한다. 이 여정은 편안하지 않다. 'Death World' 배치 튜토리얼을 기대했다면, 당장 '뒤로 가기'를 눌러라.
우리는 표면을 긁지 않는다. 우리는 뼛속까지 파고든다.
0장에서 배치의 본질과 스프링 배치의 역할을 파악한다. 지형을 모르고 전투에 뛰어드는 것은 자살 행위다.
1장은 무기 점검이다. Step 유형, Job 파라미터, 배치 스코프, 리스너. 이것들은 모든 장의 토대가 되는 핵심 지식이다. 1장을 건너뛴다면, 앞으로의 여정에서 길을 잃을 것이다.
2장부터 본격적으로 데이터를 처형하기 시작한다. 파일 기반 배치 처리 - CSV, JSON. 형식은 다양하지만 본질은 하나다. 읽고, 가공하고, 쓴다.
3장은 데이터베이스로 이동한다. 페이징과 커서, 두 가지 방식의 차이를 명확히 이해하고, 언제 무엇을 써야 하는지 판단할 수 있게 될 것이다.
4장은 생존의 기술이다. ItemStream으로 중간 상태를 관리하고, Skip/Retry로 실패에 대응한다. 그리고 마지막, 버전 6의 ChunkOrientedStep을 코드 레벨로, 라인 바이 라인으로 완전히 해부한다.
5장에서 Step을 넘어 Job 수준으로 올라간다. Job의 실행, 재시작, 중지. JobRepository, JobExecution, JobInstance의 관계. 5장을 제대로 학습한다면, 다음 6장 확장 기능의 정확한 동작을 이해하는 밑거름이 될 것이다.
6장은 한계를 넘어선다. 멀티스레드 Step, 파티셔닝, 원격 청킹, 병렬 Step과 SEDA 패턴. 대용량 데이터 처리를 위한 스프링 배치의 고급 무기들을 해부한다.
7장은 테스트다. 테스트 없는 배치는 시한폭탄이다. 스프링 배치의 테스트 도구로 안전하게 배치를 검증하는 방법을 익힐 것이다.
Part V: 처형자의 초대
이 책은 단순한 '사용법 설명서'가 아니다.
이것은 스프링 배치의 해부학이다.
표면을 넘어 내부로, 코드를 넘어 원리로, 사용을 넘어 이해로.
우리는 스프링 배치를 완전히 지배할 것이다.
준비됐는가? 자, 이제 배치의 세계로 가보자.
목차
목차
SYSTEM INIT
0장: 스프링 배치 종결의 서막
시스템 처형 전 무기 점검
DEATH BATCH
SYSTEM BUILD
1장: 스프링 배치 종결의 첫걸음
작전 1: 바이너리 초이스 - 스프링 배치의 두 가지 Step 유형
작전 2: Job 파라미터와 스프링 배치 스코프
작전 3: 스프링 배치 리스너와 활용
SYSTEM EXECUTE
2장: 파일 처리로 시스템을 처형하라
작전 1: FlatFileItemReader
작전 2: FlatFileItemWriter
작전 3: JSON 파일 읽고 쓰기
SYSTEM DOMINATE
3장: 대량 학살이 시작된다… 데이터베이스 심판의 시작
작전 1: 관계형 데이터베이스 읽고 쓰기
작전 2: NoSQL 읽고 쓰기
작전 3: 위임 ItemWriter와 ItemReader
SYSTEM TAKEOVER
4장: 배치 Step을 강탈하라
작전 1: ItemStream의 정체가 드러나다
작전 2: ItemProcessor - 읽기와 쓰기 사이, 데이터 숙청을 집행하라
작전 3: FaultTolerant
0장: 스프링 배치 종결의 서막
시스템 처형 전 무기 점검
DEATH BATCH
SYSTEM BUILD
1장: 스프링 배치 종결의 첫걸음
작전 1: 바이너리 초이스 - 스프링 배치의 두 가지 Step 유형
작전 2: Job 파라미터와 스프링 배치 스코프
작전 3: 스프링 배치 리스너와 활용
SYSTEM EXECUTE
2장: 파일 처리로 시스템을 처형하라
작전 1: FlatFileItemReader
작전 2: FlatFileItemWriter
작전 3: JSON 파일 읽고 쓰기
SYSTEM DOMINATE
3장: 대량 학살이 시작된다… 데이터베이스 심판의 시작
작전 1: 관계형 데이터베이스 읽고 쓰기
작전 2: NoSQL 읽고 쓰기
작전 3: 위임 ItemWriter와 ItemReader
SYSTEM TAKEOVER
4장: 배치 Step을 강탈하라
작전 1: ItemStream의 정체가 드러나다
작전 2: ItemProcessor - 읽기와 쓰기 사이, 데이터 숙청을 집행하라
작전 3: FaultTolerant
저자
저자
KILL-9 인프런의 지루한 강의들이 판치던 그날, 홀연히 나타나 배치 생태계를 초토화한 전설의 강사. 수강생들은 그를 킬구형이라 부른다.
"선은 뽑으라고 있는 것이다. 버그는 디버깅하는 게 아니라 프로세스째 처형하면 된다."
이 철학 하나로 수많은 개발자를 새벽 3시 장애 호출에서 해방시켰다. 현재 인프런에서 〈죽음의 스프링 배치〉 강의를 운영 중이며, 수강생들의 멘탈을 갱생시키고 있다.
이제 개발 도서 시장까지 장악하러 왔다.
(사실... 카카오에서 조용히 일하는 평범한 개발자예요...)
"선은 뽑으라고 있는 것이다. 버그는 디버깅하는 게 아니라 프로세스째 처형하면 된다."
이 철학 하나로 수많은 개발자를 새벽 3시 장애 호출에서 해방시켰다. 현재 인프런에서 〈죽음의 스프링 배치〉 강의를 운영 중이며, 수강생들의 멘탈을 갱생시키고 있다.
이제 개발 도서 시장까지 장악하러 왔다.
(사실... 카카오에서 조용히 일하는 평범한 개발자예요...)
Payment & Security
Payment methods
Your payment information is processed securely. We do not store credit card details nor have access to your credit card information.

