반응형
이전글에서는 Spring Batch를 만들었습니다.
이번 글에서는 생성된 Spring Batch를 Jenkins로 스케줄 설정하여 실행시켜 보겠습니다.
이 글은 작성하기에 앞서 우아한 형제들 이동욱님의 티스토리를 참조하여 작성하였습니다.
다양한 방법
스케줄에도 다양한 방법이 있습니다.
- Linux Cron
- Quartz
- Cloud Serverless
- Spring Batch Admin
- CI Tool
Choice
위처럼 다양한 방법이 있지만 CI Tool Jenkins를 사용하였습니다.
- Linux Cron : 정상적으로 배포했는지 어떻게 알지?? 로그 다 열어봐야하나..
- Quartz : 스케쥴링 시간 변경할때마다 소스 수정하고 재배포하고 또 테스트 하고 싶으면 다시 수정하고 배포하고 또 수정하려면 배포하고 수정하고….
- Cloud Serverless : Amazon Lambda를 사용해야한다. 비용….
- Spring Batch Admin : 더 이상 개선하지 않겠다고 한다. 그럼 나도 안쓴다.
- CI Tool : Jenkins 스케줄을 이용하여 용이하게 관리해보자!
장점
- Jenkins로 스케쥴 Item을 만들고 스케쥴을 돌리면 자연스럽게 배치 시작 이력이 남는다.
- 배치 시작되면서 로그도 당연히 남는다.
- 스케쥴 시간 변경 등 테스트를 할 때에도 소스 수정없이 사용가능
- Pipeline을 사용하여 Step을 관리할 수 있음.
- Job에 Step을 여러개 넣는 것 보다 Pipeline을 이용하여 Step을 관리하는게 용이하다. 여러개의 Step중 원하는 Step만 실행시키고 싶다면 소스 수정을 해야한다. 하지만 Pipeline을 이용한다면 소스는 수정하지 않고 Jenkins의 설정만 바꿔주면 된다.
사용방법
Jenkins에 Itemdmf 2가지 타입으로 생성한다.
- Deploy
- Scheduler
Deploy
일반적인 배포와 동일하게 생성한다.
Scheduler
java -jar \
-XX:+UseG1GC \
-Dspring.profiles.active=dev \
배치jar \
--job.name=스프링배치Job이름 \
파라미터1=파라미터값1 \
파라미터2=파라미터값2
로 작성한 후 Jenkins Schedule 을 적용하여 생성한다.
version 에 ${BUILD_NUMBER}을 넣는 이유는 배치 기동 시 동일한 파라미터가 입력 시 실행되지 않기 때문에 파라미터값에 유니크한 값을 설정한다.
아키텍쳐
반응형
'Develop > spring-batch' 카테고리의 다른 글
[kotlin] Spring-Batch Alert 처리 ( Logback을 이용한 Slack 연동 ) (0) | 2021.08.02 |
---|---|
[Kotlin] Spring-Batch (JPA 적용) Junit5를 이용한 Test Code 작성 (0) | 2021.07.29 |
[Kotlin] Spring-Batch 적용 (0) | 2021.03.25 |
Spring batch에 Spring Data JPA 기반 Querydsl을 적용해보자! (QuerydlsPagingItemReader) (0) | 2020.11.09 |
Spring Batch 란? (예제 소스 포함) (2) | 2020.11.03 |