
1. 웹 애플리케이션과 배치 애플리케이션의 차이 웹 애플리케이션과 배치 애플리케이션은 실행 방식과 처리 목적이 근본적으로 다르다. 웹 애플리케이션은 사용자의 요청을 트리거로 하여 즉시 실행되며, 응답 속도가 가장 중요한 가치이다. 요청 단위로 데이터를 처리하고, 오

Job은 하나의 완결된 배치 처리를 의미한다. 운영 환경에서 “배치를 실행한다”라고 말할 때의 기준 단위가 Job이다. 일일 매출 집계, 휴면 회원 정리, 정기 결제 처리, 대용량 데이터 이관과 같은 작업은 각각 하나의 Job으로 정의된다. Job은 단순한 메서드 호출

간단한 배치 시나리오를 구성한다.Job 이름: simpleHelloJobStep 구성:시작 메시지를 출력하는 Step종료 메시지를 출력하는 Step데이터 처리는 포함하지 않고, Tasklet 기반 Step만 사용한다. 이를 통해 Job과 Step 구성, 배치 실행 인프

순수 Spring Batch 예제와 동일한 시나리오를 사용한다.Job 이름: simpleHelloJobStep 구성:시작 메시지를 출력하는 Step종료 메시지를 출력하는 StepTasklet 기반 Step 사용데이터 처리 로직은 포함하지 않음Spring Initiali

태스크릿 지향 처리의 중심은 Tasklet 인터페이스의 execute() 메서드이다. 이 메서드 안에 해당 Step이 수행해야 할 작업을 정의한다. 청크 방식처럼 Reader/Processor/Writer로 책임을 분해하지 않고, “이 Step에서 해야 할 일”을 하나

청크 지향 처리 Step의 시작점은 StepBuilder.chunk()이다. tasklet()이 태스크릿 지향 처리 Step을 만드는 진입점이라면, chunk()는 청크 지향 처리 Step을 만드는 진입점이다. 이 메서드를 호출하면 Step은 “읽기–처리–쓰기” 파이프

Spring Batch에서 프로퍼티와 JobParameters는 역할이 다르다.프로퍼티는 애플리케이션 환경 설정 값이다. 애플리케이션 구동 시점에 한 번 로딩되며, Spring Batch 메타데이터에 저장되지 않는다. 따라서 프로퍼티 값은 JobInstance 식별,

커맨드라인을 통해 전달되는 JobParameters는 모두 문자열 형태로 입력된다. Spring Batch는 전달된 문자열과 함께 명시된 타입 정보를 기반으로 JobParameters 객체를 생성한다. 이 과정은 DefaultJobParametersConverter가

Spring Batch의 실행 구조는 JobExecution과 StepExecution의 계층으로 구성된다.JobExecution은 Job 한 번의 실행을 의미한다. StepExecution은 JobExecution 내부에서 각 Step의 실행을 의미한다. 하나의 Jo

Spring Batch에서 Listener는 배치 처리 흐름의 특정 시점을 감지하고, 그 시점에 필요한 로직을 실행할 수 있도록 제공되는 확장 지점이다. 배치의 핵심 처리 로직을 변경하지 않으면서도, 실행 전후의 상태를 관찰하거나 부가 작업을 자연스럽게 끼워 넣을 수

1. 시작하면서 Spring Batch에서 파일 기반 데이터를 처리할 때 가장 많이 사용하는 Reader가 FlatFileItemReader이다. 이름만 보면 단순히 파일을 읽는 도구처럼 보이지만 실제 역할은 그보다 훨씬 중요하다. FlatFileItemReader

CSV 파일은 가장 일반적인 파일 형식이며, 구분자를 기준으로 데이터를 분리하는 구조를 가진다. Spring Batch에서는 DelimitedLineTokenizer를 사용하여 CSV 데이터를 처리한다.예를 들어 다음과 같은 CSV 파일이 있다고 가정한다.Spring

Spring Batch에서 파일로 데이터를 저장할 때 사용하는 Writer가 FlatFileItemWriter이다. 이 Writer의 역할은 단순하다. 객체를 문자열로 변환한 뒤 파일에 기록하는 것이다.배치 처리의 기본 흐름은 다음과 같다.Reader는 데이터를 읽어

이전 글에서는 FlatFileItemWriter의 내부 구조를 살펴보았다. 핵심은 단순하다. FlatFileItemWriter는 객체를 직접 파일에 기록하지 않고 먼저 객체를 문자열 한 줄로 변환한 뒤 그 문자열을 파일에 기록한다. 즉 Writer의 역할은 객체 → 문

FlatFileItemWriter는 기본적으로 실행 시 동일한 이름의 파일이 존재하면 해당 파일을 삭제하고 새 파일을 생성한다. 이 동작은 shouldDeleteIfExists 옵션으로 제어할 수 있다.이 옵션의 기본값은 true이다. 따라서 동일한 파일이 존재하더

웹 서비스에서는 특정 사용자나 주문과 같은 소량 데이터를 조회하는 경우가 많지만, 배치 작업은 수십만 건에서 수백만 건에 이르는 데이터를 한 번에 처리하는 상황이 빈번하다. 이러한 데이터를 List로 한 번에 조회하면 애플리케이션 메모리에 모든 객체가 적재되면서 메모리

Spring Batch에서 대량 데이터를 처리할 때 중요한 것은 데이터를 어떻게 읽느냐뿐 아니라 어떻게 저장하느냐이다. 배치 작업은 수십만 건 이상의 데이터를 처리하는 경우가 많기 때문에 단순히 INSERT나 UPDATE를 반복 실행하는 방식으로는 성능을 확보하기 어렵

Spring Batch에서 데이터를 조회하는 방법은 크게 JDBC 기반 Reader와 JPA 기반 Reader로 나눌 수 있다. JDBC Reader는 ResultSet을 기반으로 데이터를 읽으며 데이터베이스 row를 순차적으로 가져오는 구조를 가진다. ResultSe

Spring Batch에서 데이터를 데이터베이스에 저장하는 방법은 크게 JDBC 기반 Writer와 JPA 기반 Writer로 나눌 수 있다. JDBC Writer는 SQL을 직접 실행하여 데이터를 저장한다. 동작 방식이 단순하고 데이터베이스와 직접 통신하기 때문에 대