#Spring Batch
7개의 글
-
스프링 배치 6 가이드 종합편: 마켓플레이스 분석 파이프라인 — ETL · KPI 집계 · K8s CronJob
Spring Boot 4 + Kotlin 2.3 + PostgreSQL 16 환경에서 Spring Batch 6 시리즈 1~6편을 한 파이프라인에 모으는 종합편. 운영 marketplace schema에서 분석 analytics schema로 어제 주문을 옮기는 daily-etl, 그 위에서 일별·월별 KPI를 집계하는 daily-kpi·monthly-kpi를 PostgreSQL 16 한 인스턴스에 두 datasource로 분리해 올린다. 5편 파티셔닝으로 ETL을 병렬화하고, 3편 멱등 upsert로 재실행을 안전하게, 6편 관측성과 K8s CronJob으로 운영하는 — Lombok 없이 Kotlin으로 풀이한 시리즈 종합편.
-
스프링 배치 6 가이드 6편: 관측성 · 테스트 · 배포 — Micrometer · @SpringBatchTest · Testcontainers · K8s CronJob
Spring Boot 4 + Kotlin 2.3 + PostgreSQL 16 환경에서 Spring Batch 6 잡을 관측하고 테스트하고 배포하는 법. 자동 등록되는 Micrometer 메트릭 6종과 Prometheus 노출, MDC로 모든 로그에 jobName·stepName·chunkIndex를 박는 구조화 로깅, 테스트 피라미드·어노테이션 4종·테스트 대역 5종을 배치 컨텍스트로 자체완결 정리, @SpringBatchTest와 JobLauncherTestUtils로 슬라이스·통합·재시작을 검증하는 법, H2가 못 잡는 쿼리를 Testcontainers PostgreSQL 16으로 거르는 이유, 그리고 Java 21 멀티 스테이지 Dockerfile과 K8s CronJob까지 — Lombok 없이 Kotlin으로 풀이한 시리즈 6편.
-
스프링 배치 6 가이드 5편: 성능 · 병렬화 — 멀티 스레드 · 파티셔닝 · 원격 워커 · 가상 스레드
Spring Boot 4 + Kotlin 2.3 + PostgreSQL 16 환경에서 Spring Batch 6 잡을 더 빨리 돌리는 법. 단일 스레드에서 멀티 스레드 Step으로 넘어갈 때의 Reader 동시성·재시작 함정, key range로 데이터를 쪼개 파티션마다 독립 StepExecution을 두는 파티셔닝, 워커 프로세스를 분리하는 원격 파티셔닝과 원격 청킹의 차이, JDK 21 가상 스레드가 IO-bound 잡에서 빛나는 지점과 커넥션 풀 한계, 그리고 100만 건 기준 네 방식의 벤치마크 비교까지 — Lombok 없이 Kotlin으로 풀이한 시리즈 5편.
-
스프링 배치 6 가이드 4편: 잡 실행 · 스케줄링 · 운영 — 트리거 · 멱등 파라미터 · 데이터 소스 5 패턴
Spring Boot 4 + Kotlin 2.3 + PostgreSQL 16 환경에서 Spring Batch 6 잡을 어떻게 돌리고 운영하는가. JobLauncher와 JobOperator의 역할 분담, @Scheduled·Quartz·K8s CronJob·Argo 중 무엇으로 트리거할지 결정 트리, JobParameters 멱등 키 설계와 incrementer 트레이드오프, 실패 잡 재시작 제어, Actuator·Micrometer 기반 운영 모니터링, 여러 인스턴스에서 같은 잡이 중복 실행되는 걸 막는 법, 그리고 배치가 데이터를 읽어 오는 5가지 패턴(같은 DB·API·Read Replica·분석 Warehouse·CDC)까지 — Lombok 없이 Kotlin으로 풀이한 시리즈 4편.
-
스프링 배치 6 가이드 3편: 트랜잭션 · 실패 처리 — Skip · Retry · 재시작
Spring Boot 4 + Kotlin 2.3 + PostgreSQL 16 환경에서 Spring Batch 6 트랜잭션과 실패 처리. 청크 한 사이클에서 한 건이 깨지면 무엇이 rollback되고 무엇이 살아남는지, faultTolerant Step의 Skip·Retry·NoRollback 정책을 예외 의미에 맞춰 설계하는 법, Skip 시 item별 재처리(scan)라는 함정, Listener 6종 카탈로그, ExecutionContext가 재시작 위치를 보존하는 원리, 그리고 JobParameters 멱등 키와 PostgreSQL upsert까지 — Lombok 없이 Kotlin DSL로 풀이한 시리즈 3편.
-
스프링 배치 6 가이드 2편: 청크 지향 처리 — Reader · Processor · Writer
Spring Boot 4 + Kotlin 2.3 + PostgreSQL 16 환경에서 Spring Batch 6 청크 지향 처리. read N → process N → write N → commit 한 사이클이 트랜잭션 경계라는 메커니즘부터 ItemReader 6종 선택 트리, ItemProcessor 변환·필터·합성 패턴, JpaItemWriter vs JdbcBatchItemWriter 트레이드오프, PostgreSQL ON CONFLICT 멱등 패턴, 그리고 가장 자주 헷갈리는 청크 크기 vs 페이지 크기까지 — Lombok 없이 Kotlin DSL로 풀이한 시리즈 2편.
-
스프링 배치 6 가이드 1편: Job · Step · 메타데이터의 정체 — Spring Boot 4 · Kotlin 2.3
Spring Boot 4 + Kotlin 2.3 + PostgreSQL 16 환경에서 Spring Batch 6 입문. Job·Step·JobInstance·JobExecution 어휘 정의, JobRepository 6 메타데이터 테이블 구조, 첫 Hello Tasklet 구현, 5.x → 6.x 마이그레이션 핵심 변경(Jakarta EE 10·Java 17 baseline·@EnableBatchProcessing 자동화)까지 — Lombok 없이 Kotlin DSL로 풀이한 시리즈 1편.