장바구니 담기 close

장바구니에 상품을 담았습니다.

스프링 배치 완벽 가이드 2/e

스프링 배치 완벽 가이드 2/e

  • 마이클미넬라
  • |
  • 에이콘출판
  • |
  • 2021-04-30 출간
  • |
  • 692페이지
  • |
  • 188 X 235 X 33 mm
  • |
  • ISBN 9791161755168
판매가

40,000원

즉시할인가

36,000

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

수량
+ -
총주문금액
36,000

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평




스프링 배치(Spring Batch)는 제가 간접적으로 관여했던 최초의 오픈소스 프로젝트였습니다. 첫 번째 자녀는 어떤 의미에서 항상 특별하다고 생각하는데, 스프링 배치도 제게 비슷한 존재였습니다. 스프링 배치를 뱃속에 품고 있던 기간은 생각했던 것보다 조금 더 길었습니다. 결국에는 쥐보다 코끼리에 가까웠지만, 항상 잘 동작했고 부모에게 자랑거리였습니다. 우리는 스프링 배치에 대한 책임이 있었으며, 결국 출산을 해서 양육을 해야 했습니다. 기억하기로는 1.0의 출시가 계속 미뤄졌던 데는 두 가지 이유가 있었습니다. 하나는 서비스 기능의 품질이 실제로 현장에서 동작하는지 확인해야 한다는 것이었고 다른 이유는 API 설계에 대한 관리 수준이었습니다. 어차피 실수는 피할 수 없었지만, 적어도 인생의 좋은 출발은 끊었다고 말할 수 있을 것 같습니다.
스프링 배치의 계보를 살펴보면, 당연히 전 세계의 많은 비즈니스 기능의 길고 반복적인 발명과 재발명에서 비롯됐음을 알 수 있을 것입니다. 2006년에 처음 봤던 코드는 롭 하롭(Rob Harrop)이 영국 런던의 한 은행에서 컨설팅을 할 때 만들었던 작은 프로토타입이었습니다. 이 유용한 부분은 스프링 배치의 일부분에서 분리돼 다른 프로젝트에 공유된 이후에 최종적으로 스프링 리트라이(Spring Retry)에 도달했습니다. 스프링 배치의 나머지 부분과 상태 머신 지향 세계관은 액센츄어(Accenture)와의 협력에서 비롯됐습니다.
또한 2010년 스프링 배치 2.0을 출시할 때 “청크(chunk)” 개념 도입, 분산 처리, 병렬 처리, 자바 5의 새로운 언어 기능을 지원하는 기능을 도입하는 데 중요한 역할을 했습니다. 저는 여전히 루카스가 웨인의 세계를 선행 기술로 인용하면서 "우리는 그것을 ‘청크’라고 부를 수 없다"고 말하는 것을 들을 수 있지만, 더 나은 이름을 생각해내지 못해 그 용어가 고착됐습니다. 청크는 함께 처리할 아이템(item)의 그룹으로, 효율성과 확장성을 높일 수 있는 훌륭한 기회를 제공합니다. 스프링 배치 2.0은 꽤 오랫동안 최신 기술이었으며 JSR-352 사양과 관련된 일이 시작되면서 JSR-352 사양에 반영됐습니다. 액센추어의 웨인 룬드(Wayne Lund)는 초기부터 스프링 배치 프로젝트에 참여했고, JSR-352 전문가 그룹에도 참여했으며, 현재 피보탈에서 플랫폼 아키텍트로 일하고 있습니다.
마이클 미넬라(Michael Minella)는 당시 젊은 터키인이었습니다. 그는 전문가 그룹에서는 물론 실생활에서도 스프링 배치를 많이 사용했으며 실제로 관련된 책을 집필했습니다. 그가 2012년 스프링 팀에 합류했을 때는 마침 스프링 배치 3.0 릴리스 작업을 시작할 때였습니다. 그래서 "@EnableBatchProcessing" 애너테이션 및 XML 구성을 자바 구성으로의 전환하는 작업을 함께할 수 있었습니다. 그는 신속하게 프로젝트 리더를 맡아 3.x 버전을 거쳐 자바 8 기반인 4.0 버전까지 프로젝트를 이끌었고, 일부 새로운 플루언트 스타일(fluent-style)의 구성 빌더가 추가됐습니다. 스프링 클라우드 데이터 플로우(Spring Cloud Data Flow)와의 연계와 분산 처리의 산업화도 이 기간에 발생했습니다. 2018년 초, 마무드 벤 하신(Mahmoud Ben Hassine)이 새로운 프로젝트의 공동 리더로 합류했으며, 마이클이 프로젝트를 주도하고 많은 사용자의 피드백을 주의 깊게 경청하도록 돕고 있습니다.
이 글을 쓰는 시점에 스프링 배치는 막 10살이 됐고 자랑스러운 새로운 부모를 뒀습니다. 아니면 부모가 아닌 다른 관계일까요? 잘 모르겠습니다. 어쨌든 노부모이거나 조부모이거나 그들은 스프링 배치의 모습과 새로운 보호자를 동일하게 자랑스러워합니다. 배치 처리가 사라지지는 않을 듯하기에 스프링 배치는 앞으로 몇 년 동안 더 많은 것을 제공할 것입니다. 이 모든 움직임이 앞으로 기대됩니다.
- 데이브 시어(Dave Syer)/ 스프링 배치 창시자

★ 이 책에서 다루는 내용 ★

■ 스프링 배치 4의 새로운 기능
■ 스프링 배치 프로젝트를 사용해 클라우드에서 시작과 종료가 존재하는 배치 처리 수행
■ 실제 예제를 통한 자바 구성과 스프링 부트 기반의 최신 구성 기법 이해
■ 클라우드를 비롯한 복잡한 시나리오에서의 배치 처리
■ 최신 플랫폼에서의 배치 애플리케이션 개발
■ 스프링 부트 이외의 스프링 포트폴리오 분야로 미션 크리티컬한 배치 처리 개발


목차


1장. 배치와 스프링
__배치 처리의 역사
__배치가 직면한 과제
__왜 자바로 배치를 처리하는가?
__스프링 배치의 기타 사용 사례
__스프링 배치 프레임워크
____스프링으로 잡 정의하기
____잡 관리하기
____로컬 및 리모트 병렬화
____I/O 표준화하기
____나머지 스프링 배치 에코 시스템
____그리고 스프링의 모든 기능
__이 책의 진행 방식
__요약

2장. 스프링 배치
__배치 아키텍처
____잡과 스텝
____잡 실행
____병렬화
____문서
__프로젝트 초기 설정
____스프링 배치 내려받기
__Hello, World! 법칙
__잡 실행하기
__요약

3장. 예제 잡 애플리케이션
__애자일 개발 이해하기
____사용자 스토리로 요구 사항 포착하기
____테스트 주도 개발로 설계하기
____버전 관리 시스템 사용하기
____좋은 개발 환경에서 작업하기
__은행 거래명세서 잡의 요구 사항 이해하기
__배치 잡 설계하기
____잡의 처리 흐름
____데이터 모델 이해하기
__요약

4장. 잡과 스텝 이해하기
__잡 소개하기
____잡의 생명주기 따라 가보기
__잡 구성하기
____잡의 기본 구성
____잡 파라미터
____잡 리스너 적용하기
____ExecutionContext
____ExecutionContext 조작하기
__스텝 알아보기
____태스크릿 처리와 청크 처리 비교
____스텝 구성
____그 밖의 여러 다른 유형의 태스크릿 이해하기
____스텝 플로우
__요약

5장. JobRepository와 메타데이터
__JobRepository란?
____관계형 데이터베이스 사용하기
____인메모리 JobRepository
__배치 인프라스트럭처 구성하기
____BatchConfigurer 인터페이스
____JobRepository 커스터마이징하기
____TransactionManager 커스터마이징하기
____JobExplorer 커스터마이징하기
____JobLauncher 커스터마이징하기
____데이터베이스 구성하기
__잡 메타데이터 사용하기
____JobExplorer
__요약

6장. 잡 실행하기
__스프링 부트로 배치 잡 시작시키기
__REST 방식으로 잡 실행하기
____쿼츠를 사용해 스케줄링하기
__잡 중지하기
____자연스러운 완료
____프로그래밍적으로 중지하기
____오류 처리
__재시작 제어하기
____잡의 재시작 방지하기
____재시작 횟수를 제한하도록 구성하기
____완료된 스텝을 재실행하기
__요약

7장. ItemReader
__ItemReader 인터페이스
__파일 입력
____플랫 파일
____XML
__JSON
__데이터베이스 입력
____JDBC
____하이버네이트
____JPA
____저장 프로시저
____스프링 데이터
__기존 서비스
__커스텀 입력
__에러 처리
____레코드 건너뛰기
____잘못된 레코드 로그 남기기
____입력이 없을 때의 처리
__요약

8장. ItemProcessor
__ItemProcessor 소개
__스프링 배치의 ItemProcessor 사용하기
____ValidatingItemProcessor
____ItemProcessorAdapter
____ScriptItemProcessor
____CompositeItemProcessor
__ItemProcessor 직접 만들기
____아이템 필터링하기
__요약

9장. ItemWriter
__ItemWriter 소개
__파일 기반 ItemWriter
____FlatFileItemWriter
____StaxEventItemWriter
__데이터베이스 기반 ItemWriter
____JdbcBatchItemWrite
____HibernateItemWriter
____JpaItemWriter
__스프링 데이터의 ItemWriter
____몽고DB
____네오4j
____피보탈 젬파이어와 아파치 지오드
____리포지터리
__그밖의 출력 방식을 위한 ItemWriter
____ItemWriterAdapter
____PropertyExtractingDelegatingItemWriter
____JmsItemWriter
____SimpleMailMessageItemWriter
__여러 자원을 사용하는 ItemWriter
____MultiResourceItemWriter
____CompositeItemWriter
____ClassifierCompositeItemWriter
__요약

10장. 예제 애플리케이션
__거래명세서 잡 검토하기
__새 프로젝트 초기 구성하기
__갱신할 고객 정보 가져오기
_____고객 ID 유효성 검사하기
____고객 정보 갱신
__거래 정보 가져오기
____거래 정보 읽어오기
____거래 정보 기록하기
__잔액에 거래 내역 적용하기
____거래 데이터 읽어오기
____계좌 잔액 갱신하기
__월별 거래명세서 생성하기
____거래명세서 데이터 가져오기
____Statement 객체에 계좌 정보 추가하기
____거래명세서 생성하기
__요약

11장. 확장과 튜닝
__배치 처리 프로파일링하기
____VisualVM 알아보기
____스프링 배치 애플리케이션 프로파일링하기
__잡 확장하기
____다중 스레드 스텝
____병렬 스텝
____병렬 스텝 구성하기
____AsyncItemProcessor와 AsyncItemWriter
____파티셔닝
____원격 청킹
__요약

12장. 클라우드 네이티브 배치
__12요소 애플리케이션
____코드베이스
____의존성
____구성
____백엔드 서비스
____빌드, 릴리스, 실행
____프로세스
____포트 바인딩
____동시성
____폐기 가능
____개발/운영 환경 일치
____로그
____관리자 프로세스
__간단한 배치 잡
__서킷 브레이커
__구성 외부화
____스프링 클라우드 컨피그
____유레카를 사용한 서비스 바인딩
__배치 처리 오케스트레이션
____유레카를 사용한 서비스 바인딩
__요약

13장. 배치 처리 테스트하기
__JUnit과 Mockito를 사용한 단위 테스트
____JUnit
____목(Mock) 객체
____Mockito
__스프링 클래스를 사용해 통합 테스트하기
____스프링을 사용해 통합 테스트하기
____스프링 배치 테스트하기
__요약

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 : 070-4821-5101
교환/반품주소
  • 부산광역시 부산진구 중앙대로 856 303호 / (주)스터디채널 / 전화 : 070-4821-5101
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.