본문 바로가기
백엔드/Spring Batch

Spring Batch 활용

by 임지혁코딩 2024. 1. 14.

1. 개발 환경 :

java, docker, mysql 

 

2. 기술 스택 :

Spring boot, Spring boot batch, spring boot data jpa, junit, lombok, gradle (groovy 기반 build)

 

 

Docker Container를 띄우는 법. 

이후, 터미널에 docker-compose up -d로 , docker를 띄운다

(image를 보고 docker가 해당 내용을 띄운다. 이미 결정되어 있는 mysql 을썻다 )

 

docker가, 컨테이너를 띄웠다!

 

왜 docker를 사용할까? 

 

만약에 spring batch를 그냥 원래 하던대로 하면, local db에 이를 저장하는 것이다.

이를 남이 쓰려면 인텔리제이 설치 -> mysql workbench 세팅 .. 등등이 필요하다. 

 

허나 이를 docker로 적용시키면, 남은 mysql을 설치하지 않도고 내가 설정한 batch와 job등을 할 수 있다. 

 

연장으로, 관리 또한 용이하며. 배포된 이후엔 배포받는 사용자들이 내가 정의한 환경에서 application을 사용할 수 있게 된다.

 

 

1. application properties 설정

 

2. 의존성 추가

 

Spring Batch는, 한번 실행 후 꺼짐에 주의하자. 

 

3. Spring 3.0부터 주의사항 

@EnableBatchProcessing을 추가하지 않아야! meta table이 자동 생성됨에 주의하자 .

 

생성된, Meta Table. 

 

4. Configuration 파일 

 

 

이하 내용들은 대부분 spring boot 5로 넘어오면서, 많은 decrepted를 겪고 변경된 것이다. 

어노테이션을 조금 중점적으로 보는 것이 좋을 것 같은데, 

@JOBSCOPE, @STEPSCOPE 모두 APPLICATION 의 실행 중 (JOB OR SCPOE) 동안만 실행되게 변경할 수 있다.

 

4. 

 내가 설계하고 선언한 JOB에 따라 진행하라는 의미 .

5. 성공적으로 나왔음이 확인된다! 

 

6. 메타 데이터 스키마 확인

실제 DB의 예시로써, STEP의 생성 시간과 , 종료 시간 , ID 등이 자동으로 등록됨을 확인하자. 

 

 

<JAR로 실행해보자 > 

1.

 

2. 

3. 똑같지만, 명령어로 해당을 실행할 수 도 있다. 

 

 

보통 어떻게 하지 ? 

os scheduler라는, OS내부의 스케줄러를 통해서 BATCH 프로그램을 실행한다.

(어떤 주기로 프로그램을 실행할지를 기록, 해당 결과 또한 LOG 파일 ) 

 

Quartz Scheduler -> Quartz + Spring Batch . 

Batch 실행이 빠르다. 하지만, scheduling data가 db에저장된다. 

 

Jenkins ? 

Master -> slave node로 명령을 전달한다. 

이러한 batch program을 만들고, slave Node로 전송한다. (slave에서 실행한다) 

파이프라인 기능 ) 이 batch 이후 다음 batch 실행 등 !

 

Spring Cloud Data Flow 

k8s 구축이 필수적. Admin이 제공되고, job 실행 등 특화 기능이 존재한다.

'백엔드 > Spring Batch' 카테고리의 다른 글

Multi Thread로 처리하기  (0) 2024.01.15
Spring Batch Exception  (0) 2024.01.15
Spring Batch Test  (0) 2024.01.15
Spring Batch 아키텍처  (1) 2024.01.14
배치 프로그램이란? / Spring Batch를 쓰는 이유  (0) 2024.01.14