본문 바로가기

STUDY/스프링 배치

1. 스프링 배치: Hello World Spring Batch

일괄 처리(Batch Process)

 

일괄처리(Batch Process)는 사용자의 개입 없이 또는 정해진 로직대로 스케줄링/실행되는 작업을 의미한다.  즉각적으로 처리될 필요가 없는 작업의 경우, 자원의 효율적 사용을 위해 이와 같은 방식을 사용한다. 예를 들어 쇼핑몰에서 매일의 판매 집계 데이터를 만드려고 한다면, 각각의 판매가 이루어 졌을때마다 데이터를 만들고 수정할 수도 있지만, 매일 자정에 일괄 처리를 한다면 더욱 효율적으로 같은 결과를 얻을 수 있다.

 

 


스프링 배치(Spring Batch)

 

스프링 배치는 일괄 처리를 위해 만들어진 프레임 워크이다. 스프링 배치는 개발자가 일괄 처리를 위한 부가적인 기능에 대한 고민 없이, 서비스를 위한 일괄처리 작업 구현에만 집중할 수 있도록 해준다. 일괄 처리를 위해서는 여러 기능이 필요할 수 있다.

  • 데이터를 읽어오거나 처리하고, 이를 다시 저장하는 기능
  • 작업들의 실행 내역을 기록하는 기능
  • 작업이 실패했을시 동일 조건으로 수동/자동 재실행하는 기능
  • 작업을 병렬로 처리하는 기능
  • 조건에따라 순서를 조정하며 작업들을 실행하는 기능
  • 등등...

스프링 배치는 개발자가 서비스 로직에만 집중 할 수 있도록, 위와 같이 일괄 처리를 위한 기능을 제공해준다.

 

 


스프링 배치의 요소들 - 차차 공부해 나갈것

 

*위 사진은 실제와 다를 수 있습니다.

 

 


스프링 배치 Hello World

 

간단한 스프링 배치 실습을 위해 https://start.spring.io/ 에서 아래와 같이 프로젝트를 만들었다.

Spring Initiallizr

 

@SpringBootApplication
@EnableBatchProcessing
public class SpringbatchHelloworldApplication {
	public static void main(String[] args) {
		SpringApplication.run(SpringbatchHelloworldApplication.class, args);
	}
}

 

@AllArgsConstructor
@Configuration
public class HelloWorldBatchConfig {
	private final JobBuilderFactory jobBuilderFactory;
	private final StepBuilderFactory stepBuilderFactory;
	
	@Bean
	public Job helloWorldJob() {
		return jobBuilderFactory.get("helloWorldJob")
				.start(helloWorldStep())
				.build();				
	}
	
	@Bean
	public Step helloWorldStep() {
		return stepBuilderFactory.get("helloWorldStep")
				.tasklet((contribution, chunkContext) -> {
					System.out.println("Hello World Batch");
					return RepeatStatus.FINISHED;
				})
				.build();				
	}
}

 

먼저 EnableBatchProcessing 어노테이션을 정의하여, 스프링 배치에 필요한 컴포넌트들을 사용할 수 있도록 만들었다. 그리고 하나의 Job과 Step을 만들었고, 이를 실행하면 아래와 같이 나오게 된다.

 

Hello World Batch

 

 

관련 소스: https://github.com/NanKisu/nankisu-study/tree/master/STUDY-SpringBatch

728x90