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 |