◈내용소개◈
1.해부-Job,Step,그리고스코프의내장을꺼내라
배치를어렵게느끼는이유는단하나다.내부에서무슨일이벌어지는지모르기때문이다.Job과Step의생명주기를처음부터해체하고,개발자들이가장많이틀리는스코프(Scope)의함정을정조준한다.기초를제대로장악하면나머지는그냥따라온다.
2.침투-어떤데이터소스도막을수없다
플랫파일(CSV/JSONL)부터NoSQL까지,어떤형태의데이터라도막힘없이읽고쓰는리더·라이터전술을완전히내것으로만든다.데이터가어디숨어있든끄집어낸다.
3.처단-에러가시스템을무너뜨리기전에,네가먼저에러를처형해라
실전배치의진짜공포는기능구현이아니다.아무도모르게조용히사라지는데이터,예외하나에통째로멈추는Job이다.Retry와Skip전략으로어떤예외상황에서도굴복하지않는FaultTolerant아키텍처를구축한다.트랜잭션경계안에서데이터를완벽히통제하는법,이제배운다.
4.지배-단일스레드의한계를돌파하고,시스템을완전히장악하라
수백만건데이터를빠르게처리하고싶다면단일스레드로는어림도없다.멀티스레드Step과파티셔닝으로처리속도를극한까지끌어올린다.배치메타데이터로실행이력을추적하고성능저하의원인을찾아내는디버깅기술까지.이챕터를끝내면배치시스템앞에지휘관으로서게된다.
◈지은이의말◈
PartI:배치의존재
엔터프라이즈세상에는보이지않는묵묵한일꾼이있다.
그렇다.그녀석의정체는배치(batch)다.
새벽3시,세상이잠든시간.수백만건의포인트가정산되고,이메일이발송되며,재고가동기화된다.사용자는모른다.자신의계좌에찍힌그숫자가,아침에받은그알림이,어젯밤배치의손을거쳐태어났다는것을.
배치는화려하지않다.실시간API처럼즉각적인피드백을주지않는다.사용자의클릭한번에반응하지도않는다.그저묵묵히정해진시간에,정해진일을수행할뿐이다.
하지만이녀석이죽는순간,지옥이펼쳐진다.
포인트가증발하고,정산이꼬이며,고객센터는불타오른다.그제야사람들은깨닫는다.배치가얼마나중요한존재였는지를.
배치는시스템의심장박동이다.눈에보이지않지만,멈추는순간모든것이멈춘다.
그리고그때,너는처형당한다.새벽3시긴급호출로.
PartⅡ:스프링배치의필연성
국내대다수의서비스는스프링(Spring)으로구현돼있다.RESTAPI는SpringMVC로,데이터접근은SpringData로구현돼있다.스프링은이미우리의코드곳곳에스며들어있다.
이런환경에서배치를구현한다면?스프링배치(SpringBatch)를선택하는것은자연스러운귀결이다.아니,거의필연에가깝다.
더중요한것은,스프링배치는검증된무기라는사실이다.
거의20년가까이수많은엔터프라이즈환경에서수조건의데이터를처리하며진화해왔다.실패하고,배우고,개선됐다.새벽3시의장애들을견디며단단해졌다.
배치는실패가허용되지않는영역이다.포인트가날아가고,정산이꼬이는순간,회사전체가흔들린다.
그렇다면선택은명확하다.
검증된도구를쓰거나,스스로검증과정을겪거나.
참고로,후자는고통스럽다.
PartⅢ:스프링배치6,그리고변곡점
이책은스프링배치6을다루는최초의책이다.
버전6.단순한숫자가아니다.이것은변곡점이다.
스프링배치6에들어서며,프레임워크의심장부가재설계됐다.청크지향처리를담당하는핵심컴포넌트들이,완전히새로운코드로교체됐다.
‘교체’라는단어는너무가볍다.이것은단순한리팩터링이아니다.재탄생이다.
코드를한줄한줄비교해본다면,당신은경악할것이다.많은것이바뀌었다는사실에.
내결함성(faulttolerance):스프링배치의가장강력한무기중하나인이기능의내부동작이근본부터변했다.Skip,Retry,Restart,이모든것이전과다른방식으로작동한다.
멀티스레드스텝(multi-threadedstep):병렬처리를위한확장기능역시내부메커니즘이재설계됐다.버전5에서6으로넘어가는과정은,4에서5로의변화보다훨씬더근본적이다.
기존지식만으로는부족하다.버전5의경험에안주한채6으로업그레이드했다가는예상치못한곳에서무너질것이다.겉보기에는같아보이지만,속은완전히다른생물이됐기때문이다.
깨닫는순간,이미늦었다.
이책은그새로운생물을해부하는최초의시도다.버전6의내부를라인바이라인으로,코드레벨로,처형자의눈으로파헤칠것이다.
PartIV:여정의지도
이제우리가어디로향할것인지이야기하자.
경고한다.이여정은편안하지않다.‘DeathWorld’배치튜토리얼을기대했다면,당장‘뒤로가기’를눌러라.
우리는표면을긁지않는다.우리는뼛속까지파고든다.
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장은테스트다.테스트없는배치는시한폭탄이다.스프링배치의테스트도구로안전하게배치를검증하는방법을익힐것이다.
PartV:처형자의초대
이책은단순한‘사용법설명서’가아니다.
이것은스프링배치의해부학이다.
표면을넘어내부로,코드를넘어원리로,사용을넘어이해로.
우리는스프링배치를완전히지배할것이다.
준비됐는가?자,이제배치의세계로가보자.