반디앤루니스 인터넷서점

네비게이션 실시간 인기 책

    AI 에이전트와 스프링 배치를 활용한 배치 엔지니어링

    예약판매

    [예약판매] AI 에이전트와 스프링 배치를 활용한 배치 엔지니어링 클로드와 코덱스를 감독하는 대용량 배치 처리 지침

    • 정상혁 저
    • 위키북스
    • 2026년 11월 12일
    • 정가
      42,000원
    • 판매가
      37,800원 [10% 할인]
    • 결제 혜택
      무이자
    • 적립금
      2,100원 적립 [5%P]

      NAVER Pay 결제 시 네이버페이 포인트 5% 적립 ?

    • 배송구분
      업체배송(반디북)
    • 배송료
      무료배송
    • 출고예상일
      2026년 11월 13일 이후

      ※ 출고예정일은 도서 재고상황에 따라 변동될 수 있습니다.

    수량
    회원리뷰
    - [0]
    ISBN: 9791158397111 748쪽 188 x 240 (㎜)

    지금 이책은

    • 판매지수 : 0

    이 책이 속한 분야

    이 책은

    개발자는 대용량 배치 처리 모듈의 코드를 이해해야 한다!


    AI 에이전트는 개발자의 PC에서 ‘코드를 생성하고, 실행하고, 오류를 관찰하고, 고치는’ 피드백 루프를 통해 코드의 오류를 줄여 간다. 그런데 개발 환경에서는 운영 환경만큼의 데이터 크기와 분포를 제공하기가 어렵기에 대용량 데이터를 다루는 배치 모듈에서는 이 루프가 충분하지 않을 가능성이 높다. 개발 환경의 적은 데이터로는 잘 실행되던 코드가 실제 데이터를 만나면 멈추거나 코너 케이스로 인한 오류를 내기도 한다. 그래서 정밀한 지시와 검증 없이 AI 에이전트가 만든 코드가 운영 환경에서도 안정적으로 실행되리라고 보장하기는 어렵다.


    이 책은 JVM 환경의 대표적인 배치 프레임워크인 스프링 배치의 핵심 원리와 구조를 예제 코드로 설명한다. 각 장마다 AI 에이전트를 감독하는 방법을 예제와 함께 제시하고, 클로드 코드와 코덱스로 예를 들되 다른 코딩 에이전트에도 응용할 수 있는 원칙을 다룬다. 예제는 집필 시점의 최신 버전인 스프링 배치 6.0과 스프링 부트 4.1을 기준으로 정리했다. 이 책을 통해 AI 시대에 맞는 배치 개발의 길을 이 책에서 찾기를 기대한다.


    ★ 이 책에서 다루는 내용 ★


    ◎ 배치 개발이 어려운 이유와 스프링 배치 도입 여부를 판단하는 기준

    ◎ 클로드 코드와 코덱스의 지침 파일·스킬·서브 에이전트·훅 설정

    ◎ 배치 처리에 대한 테스트 기법, 개발 지침(AGENTS.md)과 프롬프트

    ◎ 스프링 부트 CLI 애플리케이션으로 익히는 대용량 파일·DB 처리 패턴과 테스트 기법

    ◎ 스프링 배치의 잡·스텝·태스클릿, 잡 저장소와 잡 파라미터, ExecutionContext

    ◎ ItemReader, ItemProcessor, ItemWriter로 구성하는 청크 지향 처리

    ◎ CSV·JSON·XML 파일과 DB의 읽기와 쓰기

    ◎ 잡 재시작과 실패한 아이템의 스킵·재시도, 이벤트 리스너

    ◎ 스텝의 병렬 실행과 파티셔닝, 조건 분기

    ◎ 멀티 모듈 구성과 잡 실행·배포·스케줄링, 모니터링과 실패 경보

    ◎ 스프링 프레임워크의 재시도 기능, 스프링 배치 4·5에서 6으로 업그레이드


    출판사 리뷰

    상세 이미지


    저자 소개

    정상혁

    20여 년째 대용량 데이터를 다루는 시스템을 만들고 있다. 민감한 데이터를 처리하는 시스템에 스프링 배치를 2008년에 나온 1.0 버전부터 적용해 왔다. 그 예로, 개인 정보 관리 시스템에서 수십억 건의 데이터를 옮기는 마이그레이션, 한 번에 천억 원대 거래 데이터를 처리하는 배치 잡을 만들었다. 문서 개선과 버그 수정, API 개선 등 10여 건을 스프링 배치 프로젝트에 기여했다. 최근에는 AI 에이전트 모니터링, DevOps 프로세스 가시화, 검색 증강 생성(RAG) 시스템을 담당하며 AI가 가져온 변화를 최전선에서 경험하고 있다.

    목차

    ▣ 01장: 배치 개발의 난관과 적절한 기술의 선택

    1.1 _ 배치 개발이 어려운 이유와 극복 방안

    __1.1.1 _ 배치 작업의 특성

    __1.1.2 _ AI 에이전트와 배치 개발

    __1.1.3 _ 테스트 코드의 가치

    __1.1.4 _ 대용량 배치의 필수 기술 요건

    1.2 _ 기술 스택의 선택

    __1.2.1 _ 배치 처리 외의 대안

    __1.2.2 _ JVM의 선택

    __1.2.3 _ 스프링의 선택

    __1.2.4 _ 스프링 배치의 선택

    __1.2.5 _ 퍼시스턴스 레이어 프레임워크의 선택

    1.3 _ 모듈 구조와 실행, 모니터링 방식의 선택

    __1.3.1 _ 배치 모듈의 분리

    __1.3.2 _ 배치 잡의 실행과 스케줄링

    __1.3.3 _ 배치 잡의 모니터링

    1.4 _ 이 책의 구성

    1.5 _ 정리


    ▣ 02장: AI 에이전트와 함께하는 개발 환경 준비

    2.1 _ 대표적인 코딩 에이전트

    2.2 _ 클로드 코드와 코덱스

    2.3 _ 예제 프로젝트 초기 설정

    __2.3.1 _ JDK 설치

    __2.3.2 _ 통합 개발 환경 준비

    __2.3.3 _ 그레이들 프로젝트 만들기

    __2.3.4 _ 디스크 용량 검사 기능

    __2.3.5 _ 테스트 작성

    2.4 _ 모든 세션에 적용할 공통 지침: AGENTS.md

    __2.4.1 _ 지침 파일이 길어지지 않게 관리하기

    __2.4.2 _ 클로드 코드와 코덱스를 동시에 지원하는 파일 구조

    2.5 _ 반복 작업을 맡기는 기능: 스킬, 서브 에이전트, 훅

    __2.5.1 _ 필요할 때 불러오는 작업 절차: 스킬

    __2.5.2 _ 서브 에이전트와 훅으로 검증 자동화하기

    2.6 _ 사람 없이 실행하는 에이전트: 비대화형 모드와 CI

    2.7 _ 비용 절감 기법

    __2.7.1 _ 작업에 맞는 모델 선택

    __2.7.2 _ 프롬프트 캐시 의식하기

    __2.7.3 _ 계획을 먼저 검토하는 플랜 모드

    __2.7.4 _ 세션과 컨텍스트 관리

    2.8 _ 정리


    ▣ 03장: 스프링 부트를 이용한 CLI 애플리케이션

    3.1 _ 개발할 CLI 애플리케이션의 기능

    3.2 _ 빌드 설정

    __3.2.1 _ 에이전트에게 프로젝트 생성 맡기기

    __3.2.2 _ start.spring.io에서 프로젝트 생성하기

    __3.2.3 _ 그레이들의 버전

    __3.2.4 _ 자동 생성된 파일 확인

    3.3 _ CommandLineRunner

    3.4 _ 디스크 용량 검사 태스크

    3.5 _ @Bean의 사용과 생성자 주입

    3.6 _ 설정 외부화와 환경별 프로파일

    __3.6.1 _ @Value로 속성 주입받기

    __3.6.2 _ 프로파일별 설정 파일

    __3.6.3 _ 프로파일별로 빈 교체하기

    3.7 _ AI 에이전트와 함께 CLI 애플리케이션 만들기

    __3.7.1 _ 코딩 관례를 AGENTS.md에 적어 두기

    __3.7.2 _ 새 태스크를 추가하는 프롬프트

    __3.7.3 _ 같은 프롬프트라도 명시하지 않은 부분은 에이전트마다 달라진다

    __3.7.4 _ 검증 훅에 스프링 규약 추가하기

    3.8 _ 정리


    ▣ 04장: 대용량을 의식한 파일과 DB 처리

    4.1 _ 프로그램 명세

    4.2 _ CSV 한 줄을 해석하기

    4.3 _ CSV 파일 전체 읽기

    4.4 _ DB 스키마 생성과 확인

    __4.4.1 _ H2 DB 의존성과 데이터베이스 접속 정보

    __4.4.2 _ 스키마 선언 추가

    __4.4.3 _ DB 접속 도구

    4.5 _ SQL 실행 태스크

    4.6 _ DB 연동 테스트 코드

    4.7 _ DB에 쓰기

    4.8 _ 애플리케이션 컨텍스트를 올리는 테스트

    __4.8.1 _ 애플리케이션 컨텍스트 캐싱과 빈 등록 대상

    __4.8.2 _ 트랜잭션 롤백

    __4.8.3 _ 테스트에서 객체를 주입받는 여러 가지 방법

    4.9 _ CSV 파일을 읽어서 DB에 쓰기

    4.10 _ DB에서 읽기

    4.11 _ CSV 파일로 쓰기

    4.12 _ DB를 읽어서 CSV 파일로 쓰기

    4.13 _ 통합 구성

    4.14 _ AI 에이전트와 함께 대용량 처리 태스크 만들기

    __4.14.1 _ 대용량 처리 규칙을 AGENTS.md에 적어 두기

    __4.14.2 _ 새 태스크를 추가하는 프롬프트

    4.15 _ 정리


    ▣ 05장: 잡, 스텝, 태스클릿

    5.1 _ 스프링 부트를 활용한 스프링 배치 잡 구성과 실행

    __5.1.1 _ 스프링 배치 모듈 추가하기

    __5.1.2 _ 잡과 스텝 구성하기

    __5.1.3 _ 잡 실행하기

    __5.1.4 _ 스프링 부트의 배치 관련 클래스

    5.2 _ 잡의 종단간 테스트

    __5.2.1 _ JobOperatorTestUtils

    __5.2.2 _ @SpringBatchTest

    __5.2.3 _ @ConditionalOnProperty를 활용한 잡 선언

    5.3 _ Tasklet 인터페이스와 구현체

    __5.3.1 _ Tasklet.execute() 메서드의 파라미터와 반환값

    __5.3.2 _ SystemCommandTasklet

    __5.3.3 _ CallableTaskletAdapter

    5.4 _ AI 에이전트와 함께 배치 잡 만들기

    __5.4.1 _ LLM 학습 데이터 속 과거 버전에 맞춘 코드에 주의하기

    __5.4.2 _ 잡 구성 관례를 AGENTS.md에 적어 두기

    __5.4.3 _ 새 잡을 추가하는 프롬프트

    5.5 _ 정리


    ▣ 06장: 잡 저장소와 잡 파라미터

    6.1 _ 잡 실행 이력을 RDB에 저장하기

    __6.1.1 _ ResourcelessJobRepository의 한계

    __6.1.2 _ 메타데이터 테이블 구조

    6.2 _ 잡 파라미터의 영향을 받는 구성 요소

    __6.2.1 _ 잡 파라미터와 JobInstance의 관계

    __6.2.2 _ JobInstance, JobExecution, StepExecution

    __6.2.3 _ JobInstance의 유일성 식별에 참여하지 않는 잡 파라미터

    6.3 _ 잡 저장소와 트랜잭션

    __6.3.1 _ 테스트 트랜잭션과 스프링 배치 트랜잭션의 충돌 문제

    __6.3.2 _ 스텝의 트랜잭션 주기

    6.4 _ 스프링 부트의 JDBC 잡 저장소 관련 속성

    __6.4.1 _ 속성의 이름과 역할

    __6.4.2 _ 스프링 부트의 관련 클래스

    6.5 _ 더 다양한 JobRepository 활용 방식

    __6.5.1 _ MongoDB를 활용하는 JobRepository

    __6.5.2 _ 테스트에서의 ResourcelessJobRepository 활용

    6.6 _ AI 에이전트와 함께 잡 저장소와 잡 파라미터 다루기

    __6.6.1 _ 재실행 제약을 임시방편으로 우회하지 않게 하기

    __6.6.2 _ 잡 파라미터와 메타데이터 규칙을 AGENTS.md에 적어 두기

    __6.6.3 _ 메타데이터 정리 잡을 추가하는 프롬프트

    6.7 _ 정리


    ▣ 07장: 잡 파라미터 심화 활용과 ExecutionContext

    7.1 _ 잡 파라미터의 심화 활용

    __7.1.1 _ 잡 파라미터를 참조하는 두 가지 방법

    __7.1.2 _ 테스트 코드에서 잡 파라미터 지정

    __7.1.3 _ 잡 파라미터로 다양한 타입을 쓰고 싶을 경우

    __7.1.4 _ JobParametersValidator

    __7.1.5 _ JobParametersIncrementer

    7.2 _ ExecutionContext를 통한 데이터 저장과 참조

    __7.2.1 _ StepExecution별로 저장되는 ExecutionContext 활용

    __7.2.2 _ JobExecution별로 저장되는 ExecutionContext 활용

    7.3 _ AI 에이전트와 함께 잡에 값 전달하기

    __7.3.1 _ 컴파일 에러로 드러나지 않는 바인딩 실수

    __7.3.2 _ 값 전달 규칙을 AGENTS.md에 적어 두기

    __7.3.3 _ 잡 파라미터를 추가하는 프롬프트

    7.4 _ 정리


    ▣ 08장: ItemReader, ItemProcessor, ItemWriter

    8.1 _ ChunkOrientedStep과 Item, Chunk를 다루는 인터페이스

    __8.1.1 _ ItemReader, ItemWriter

    __8.1.2 _ ItemProcessor

    __8.1.3 _ ItemStream

    8.2 _ 청크 크기와 트랜잭션

    __8.2.1 _ 청크 크기를 정하는 기준

    8.3 _ 액세스 로그 처리 예제의 재구현

    __8.3.1 _ AccessLogCsvToDbTask(CSV → DB) 구현

    __8.3.2 _ @JobScope와 @StepScope를 통해 등록되는 객체의 타입

    __8.3.3 _ UserAccessSummaryDbToCsvTask(DB → CSV) 구현

    8.4 _ 기본 구현체 파악하기

    __8.4.1 _ Iterator와 Collection을 참조하는 구현체

    __8.4.2 _ 동일한 인터페이스로 조합/위임하는 구현체

    __8.4.3 _ 다른 클래스/메서드와 연결하는 구현체

    __8.4.4 _ 다양한 입출력 자원을 다루는 ItemReader, ItemWriter

    8.5 _ AI 에이전트와 함께 청크 지향 스텝 만들기

    __8.5.1 _ 청크 스텝 구성 규칙을 AGENTS.md에 적어 두기

    __8.5.2 _ 아이템 필터링을 추가하는 프롬프트

    8.6 _ 정리


    ▣ 09장: 파일 읽기와 쓰기

    9.1 _ 공통 속성

    9.2 _ 플랫파일 다루기

    __9.2.1 _ FlatFileItemReader

    __9.2.2 _ FlatFileItemWriter

    9.3 _ JSON 파일 다루기

    __9.3.1 _ JsonItemReader

    __9.3.2 _ JsonFileItemWriter

    9.4 _ XML 파일 다루기

    __9.4.1 _ StaxEventItemReader

    __9.4.2 _ StaxEventItemWriter

    __9.4.3 _ ItemProcessor를 추가한 잡 구성

    9.5 _ 여러 파일 다루기

    __9.5.1 _ ResourcesItemReader

    __9.5.2 _ MultiResourceItemReader

    __9.5.3 _ MultiResourceItemWriter

    9.6 _ 파일 쓰기와 트랜잭션

    9.7 _ AI 에이전트와 함께 파일 입출력 구성하기

    __9.7.1 _ 파일 형식의 세부 사항을 프롬프트에 명시하기

    __9.7.2 _ 파일 입출력 규칙을 AGENTS.md에 적어 두기

    __9.7.3 _ 고정 길이 파일 리더를 추가하는 프롬프트

    9.8 _ 정리


    ▣ 10장: 스프링 JDBC로 DB 읽기와 쓰기

    10.1 _ 대용량 데이터 조회하기

    __10.1.1 _ JdbcCursorItemReader

    __10.1.2 _ JdbcPagingItemReader

    __10.1.3 _ 키만 먼저 읽는 드라이빙 쿼리 패턴

    10.2 _ 대용량 데이터 쓰기

    __10.2.1 _ JdbcBatchItemWriter

    __10.2.2 _ 태스클릿에서 트랜잭션을 끊어서 처리하기

    __10.2.3 _ 갱신·삭제 구문의 WHERE 절과 인덱스

    10.3 _ 여러 개의 데이터 소스를 사용하는 애플리케이션 구성

    __10.3.1 _ 스프링 부트의 @BatchDataSource 활용하기

    __10.3.2 _ @EnableBatchProcessing과 @EnableJdbcJobRepository 활용하기

    __10.3.3 _ JdbcDefaultBatchConfiguration 클래스를 상속해서 직접 배치 기반 구성 요소 지정하기

    10.4 _ MySQL 연결 설정 최적화

    __10.4.1 _ 서버 측 PreparedStatement 활용

    __10.4.2 _ 배치 업데이트 성능 높이기

    __10.4.3 _ 대용량 데이터 조회를 위한 옵션

    10.5 _ AI 에이전트와 함께 DB 읽기와 쓰기 구성하기

    __10.5.1 _ 커서와 페이징 선택하기

    __10.5.2 _ DB 읽기와 쓰기 규칙을 AGENTS.md에 적어 두기

    __10.5.3 _ 집계 결과를 DB에 저장하는 스텝을 추가하는 프롬프트

    10.6 _ 정리


    ▣ 11장: 잡 재시작과 실패한 아이템 처리

    11.1 _ 예제 준비: URL 검사 잡

    __11.1.1 _ 잡 명세

    __11.1.2 _ 프로젝트 초기 구성

    __11.1.3 _ 파일의 수정 시간을 로깅하기

    __11.1.4 _ URL을 호출하는 ItemProcessor 작성

    __11.1.5 _ 전체 Job 구성

    11.2 _ 잡과 스텝의 재시작

    __11.2.1 _ 잡을 재시작할 때 스텝, 청크의 흐름

    __11.2.2 _ 완료된 스텝 다시 실행

    __11.2.3 _ 메타데이터 테이블에 기록되는 정보

    __11.2.4 _ 재시작의 적합성

    11.3 _ 실패한 아이템 스킵

    __11.3.1 _ 건너뛸 예외와 최대 허용 횟수 지정

    __11.3.2 _ 스킵과 트랜잭션 롤백

    __11.3.3 _ 트랜잭션 큐에서 읽을 때

    __11.3.4 _ SkipPolicy

    11.4 _ 실패한 아이템 재시도

    __11.4.1 _ RetryPolicy

    11.5 _ AI 에이전트와 함께 실패 처리 정책 정하기

    __11.5.1 _ 스킵할 예외와 한도를 사람이 정하기

    __11.5.2 _ 실패 처리 규칙을 AGENTS.md에 적어 두기

    __11.5.3 _ 재시작 검증 테스트를 추가하는 프롬프트

    11.6 _ 정리


    ▣ 12장: 이벤트 리스너

    12.1 _ 리스너 인터페이스와 애너테이션

    12.2 _ 잡의 리스너

    __12.2.1 _ 잡 실행 결과를 로그로 남기는 리스너

    __12.2.2 _ @BeforeJob 애너테이션으로 첫 번째 스텝 대체하기

    __12.2.3 _ 잡 실행 결과를 이메일로 알리는 리스너

    12.3 _ 스텝의 리스너

    __12.3.1 _ 콜백 메서드의 실행 순서와 트랜잭션

    __12.3.2 _ ItemProcessor와 ItemProcessListener를 함께 구현한 클래스

    __12.3.3 _ @BeforeStep 애너테이션 활용

    __12.3.4 _ @AfterStep으로 빈 입력을 실패로 처리하기

    __12.3.5 _ SkipListener

    __12.3.6 _ RetryListener

    12.4 _ 인터페이스 프락시로 인한 부작용

    12.5 _ AI 에이전트와 함께 리스너 추가하기

    __12.5.1 _ 리스너 호출 누락에 주의하기

    __12.5.2 _ 리스너 규칙을 AGENTS.md에 적어 두기

    __12.5.3 _ 새 리스너를 추가하는 프롬프트

    12.6 _ 정리


    ▣ 13장: 스텝의 흐름 제어하기

    13.1 _ 예제 준비: 로그 출력 태스클릿

    13.2 _ 스텝을 병렬로 실행

    __13.2.1 _ 여러 스텝을 동시에 실행

    __13.2.2 _ 하나의 스텝을 파티션으로 나누어 실행

    __13.2.3 _ 하나의 스텝 안에서 아이템 가공을 병렬로 처리

    __13.2.4 _ 큐를 사이에 둔 두 스텝의 병렬 파이프라인

    13.3 _ 스텝의 조건 분기

    __13.3.1 _ 스텝의 실행 결과에 따라 다음 스텝 분기

    __13.3.2 _ 리스너를 활용한 분기

    __13.3.3 _ JobExecutionDecider를 활용한 분기

    13.4 _ 잡 멈추기

    __13.4.1 _ stopAndRestart()로 멈출 스텝 지정하기

    __13.4.2 _ StepExecution.setTerminateOnly()를 호출하여 멈추기

    13.5 _ 다른 잡을 스텝으로 실행

    13.6 _ 디렉터리 백업 예제

    __13.6.1 _ backupDailyJob 설계

    __13.6.2 _ 디스크 용량 기록

    __13.6.3 _ 남은 용량과 시도 횟수에 따라서 분기

    __13.6.4 _ 백업 실행

    __13.6.5 _ 오래된 백업 디렉터리 삭제

    __13.6.6 _ backupDailyJob 조립하기

    13.7 _ AI 에이전트와 함께 스텝 흐름 구성하기

    __13.7.1 _ 비슷한 상태 클래스와 스텝 인스턴스에 주의하기

    __13.7.2 _ 스텝 흐름 구성 규칙을 AGENTS.md에 적어 두기

    __13.7.3 _ 보고서 형식을 추가하는 프롬프트

    13.8 _ 정리


    ▣ 14장: 배치 모듈의 의존 관계와 실행 방식

    14.1 _ 모듈의 구성과 의존 관계

    __14.1.1 _ 멀티 모듈 배치 애플리케이션 예제

    __14.1.2 _ 모듈의 공통 요소 선언

    __14.1.3 _ 잡 그룹별로 애플리케이션 컨텍스트를 구성하기

    14.2 _ 잡 실행 방식과 패키징

    __14.2.1 _ 잡 실행과 제어의 진입점: JobOperator

    __14.2.2 _ 메인 메서드에서 잡 실행하기

    __14.2.3 _ 명령행 도구로 잡 실행하기: CommandLineJobOperator

    __14.2.4 _ 스프링 부트의 ApplicationRunner 구현체로 잡 실행하기

    __14.2.5 _ HTTP 호출을 통해 잡 실행하기

    __14.2.6 _ 도커 이미지 빌드와 실행

    14.3 _ 실행 중인 잡에 중단 신호 보내기

    __14.3.1 _ JobOperator.stop(JobExecution)을 호출하는 외부 통신용 클래스 만들기

    __14.3.2 _ BATCH_JOB_EXECUTION 테이블을 직접 업데이트하여 종료

    14.4 _ 잡 실행 스케줄링

    __14.4.1 _ 스프링의 @Scheduled

    __14.4.2 _ 쿼츠

    __14.4.3 _ 쿠버네티스 크론잡

    14.5 _ AI 에이전트와 함께 멀티 모듈 프로젝트 확장하기

    __14.5.1 _ 에러 없이 일어나는 구조 훼손

    __14.5.2 _ 모듈 사이의 의존 규칙을 AGENTS.md에 적어 두기

    __14.5.3 _ 새 잡 그룹 모듈을 추가하는 프롬프트

    14.6 _ 정리


    ▣ 15장: 잡 실행 모니터링

    15.1 _ 메타데이터 테이블로 확인하는 잡의 실행 상태

    15.2 _ 액추에이터를 통한 메트릭 수집

    __15.2.1 _ 스프링 배치가 제공하는 기본 메트릭

    __15.2.2 _ 메트릭을 HTTP로 노출하기

    __15.2.3 _ 업무 지표를 위한 커스텀 메트릭

    15.3 _ 프로메테우스와 그라파나로 수집·시각화

    __15.3.1 _ 웹 모듈의 메트릭 수집

    __15.3.2 _ CLI 모듈의 메트릭 수집

    __15.3.3 _ 그라파나로 시각화

    15.4 _ 잡 실패 경보

    15.5 _ 자바 플라이트 레코더로 잡 실행 기록

    __15.5.1 _ 스프링 배치가 기록하는 JFR 이벤트

    __15.5.2 _ CLI 잡의 실행 기록 남기기

    __15.5.3 _ 떠 있는 프로세스에서 기록 남기기

    __15.5.4 _ 기록 파일 분석

    15.6 _ 그 밖의 모니터링 수단

    __15.6.1 _ 로그 기반 모니터링

    __15.6.2 _ 분산 추적

    15.7 _ AI 에이전트와 함께 모니터링 구성하기

    __15.7.1 _ 모니터링을 처음 구성하는 프롬프트

    __15.7.2 _ 경보 규칙을 추가하는 프롬프트

    15.8 _ 정리


    ▣ 16장: 맺음말

    16.1 _ 해결할 과제에서 구체적인 방법으로

    16.2 _ AI 에이전트 감독 총정리

    __16.2.1 _ 에이전트를 감독하는 수단

    __16.2.2 _ 예제 프로젝트의 AGENTS.md 통합판

    __16.2.3 _ 개발을 완료했다고 선언하기 전에 확인할 것들

    16.3 _ 다루지 않은 주제와 더 파악해볼 주제

    16.4 _ 오늘 밤도 안녕하기를


    ▣ 부록A

    A.1 _ 예제 프로젝트 초기 설정

    A.2 _ RetryTemplate과 RetryPolicy

    A.3 _ 애너테이션과 AOP를 이용한 재시도

    A.4 _ RetryListener

    A.5 _ AI 에이전트와 함께 재시도 적용하기

    __A.5.1 _ 재시도 방식 선택을 지시에 담기

    __A.5.2 _ 재시도 간격과 횟수를 사람이 검토하기

    __A.5.3 _ 재시도 규칙을 AGENTS.md에 적어 두기

    __A.5.4 _ 개별 기능에 재시도를 추가하는 프롬프트

    A.6 _ 정리


    ▣ 부록B

    B.1 _ 이 부록의 대상 독자와 전제

    B.2 _ 예제: 메모 잡(memoJob)의 버전별 진화

    __B.2.1 _ 메모 잡이 하는 일

    __B.2.2 _ 스프링 배치 4 버전

    __B.2.3 _ 스프링 배치 5 버전

    __B.2.4 _ 스프링 배치 6 버전

    B.3 _ 스프링 배치 6으로 가는 주요 변경점

    __B.3.1 _ [4→5 변경] Java·Boot 기준선 상승과 javax → jakarta

    __B.3.2 _ [4→5 변경] 메타 DB 스키마 변경과 마이그레이션 전략

    __B.3.3 _ [5→6 변경] 메타 DB 시퀀스 이름 변경

    __B.3.4 _ [4→5 변경] @EnableBatchProcessing의 역할 변화와 BatchConfigurer 제거

    __B.3.5 _ [4→5 변경] JobBuilderFactory / StepBuilderFactory 제거

    __B.3.6 _ [4→6 누적] 스텝 트랜잭션 관리자 지정 방식과 기본값

    __B.3.7 _ [4→5 변경] ItemWriter 시그니처 List → Chunk

    __B.3.8 _ [4→6 누적] JobParameters가 타입 정보를 보존

    __B.3.9 _ [5→6 변경] 패키지 재배치: 모듈 경계에 맞춘 패키지 이름 변경

    __B.3.10 _ [5→6 변경] 청크 지향 스텝 재설계: ChunkOrientedStep

    __B.3.11 _ [5→6 변경] JobLauncher / JobLauncherTestUtils → JobOperator / JobOperatorTestUtils

    __B.3.12 _ [5→6 변경] modular=true / ApplicationContextFactory 패턴 지원 중단

    __B.3.13 _ [5→6 변경] JobRepository가 JobExplorer를 흡수

    __B.3.14 _ [5→6 변경] @EnableJdbcJobRepository / @EnableMongoJobRepository 도입

    __B.3.15 _ [4→6 누적] 배치 관련 스프링 부트 속성명 변화

    __B.3.16 _ [5→6 변경] Jackson 2 → Jackson 3 (tools.jackson)

    __B.3.17 _ [5→6 변경] 스프링 프레임워크 7의 표준 RetryPolicy로 통합

    __B.3.18 _ [4→6 누적] 리스너 인터페이스 시그니처 변화

    __B.3.19 _ [4→6 누적] 도메인 객체의 시간 타입과 생성자 정리

    __B.3.20 _ [5→6 변경] JSpecify 애너테이션과 스프링 부트 4의 배치 스타터 재배치

    __B.3.21 _ [4→5 변경] JSR-352 지원 중단

    __B.3.22 _ [4→5 변경] JAXB 의존성 선언 간소화

    B.4 _ AI 에이전트와 함께 업그레이드하기

    __B.4.1 _ 준비물

    __B.4.2 _ 권장 루프

    __B.4.3 _ 에이전트에게 넘길 작업 지시서

    B.5 _ 정리

    배송 시 유의사항

    - 반디앤루니스에서 구매하신 도서는 물류 대행 위탁업체 웅진 북센을 통해 배송됩니다.
     (배송 포장에 "웅진 북센"으로 표기될 수 있습니다.)

    - 구매한 상품의 품질과 배송 관련 문의는 반디앤루니스로 문의 바랍니다.

    - 천재지변 및 택배사의 사정에 따라 배송이 지연될 수 있습니다.

    - 결제(입금) 완료 후 출판사 및 유통사의 사정으로 품절 또는 절판 되어 상품 구입이 어려울 수 있습니다. (별도 안내 예정)

    - 도서산간지역의 경우 추가 배송비가 발생될 수 있습니다.

    반품/교환

    상품 설명에 반품/ 교환 관련한 안내가 있는 경우 그 내용을 우선으로 합니다. (업체 사정에 따라 달라질 수 있습니다)

    반품/교환

    반품/교환
    반품/교환 방법 홈 > 고객센터 > 자주찾는질문 “반품/교환/환불” 안내 참고 또는 1:1상담게시판
    반품/교환 가능 기간 반품,교환은 배송완료 후 7일 이내, 상품의 결함 및 계약내용과 다를 경우 문제발견 후 30일 이내에 신청가능
    반품/교환 비용 변심 혹은 구매착오의 경우에만 반송료 고객 부담(별도 지정 택배사 없음)
    반품/교환 불가 사유
    • 소비자의 책임 사유로 상품 등이 손실 또는 훼손된 경우
    • 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
    • 복제가 가능한 상품 등의 포장을 훼손한 경우 : 예)만화책, 잡지, 화보집 등
    • 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
    • 전자상거래등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우
    • 해외주문 상품(해외 원서)의 경우(파본/훼손/오발송 상품을 제외)
    소비자 피해보상
    환불지연에 따른 배상
    • 상품의 불량에 의한 반품, 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은
      소비자 분쟁해결 기준(공정거래위원회고시)에 준하여 처리됨
    • 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의
      소비자 보호에 관한 법률에 따라 처리함
    반품/교환 주소 경기도 파주시 문발로 77, 웅진북센(반디앤루니스)
    • 회사명 : (주)서울문고
    • 대표이사 : 김홍구
    • 개인정보 보호책임자 : 김홍구
    • E-mail : bandi_cs@bnl.co.kr
    • 소재지 : (06168) 서울 강남구 삼성로 96길 6
    • 사업자 등록번호 : 120-81-02543
    • 통신판매업 신고번호 : 제2023-서울강남-03728호
    • 물류센터 : (10881) 경기도 파주시 문발로 77 반디앤루니스
    copyright (c) 2016 BANDI&LUNI'S All Rights Reserved