inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 배치

어플리케이션 예제 (2)

실무에서 이런 요건의 배치를 구성할 경우

911

개발중

작성한 질문수 32

0

안녕하세요 강사님..

아래의 경우 spring batch 구성의 best practice 가 궁금합니다.

- 배치 로딩 시간 > 스케줄 재실행 시간

- 외부 트리거(DB 데이터 insert 등) 에 의해 바로바로 배치가 실행되어야 하는 경우

 

감사합니다.

 

spring-batch spring-boot

답변 1

1

정수원

스케줄과 관련해서는 스프링 배치가 되었던 다른 배치 어플리케이션이 되었던 배치가 할 수 있는 것은 거의 없습니다.

배치에는 시간을 제어할 수 있는 기능이 없기 때문입니다.

배치는 정해진 시간에 실행하는 것이 전부입니다.

물론 배치를 중단할 수 있고 재 시작할 수 있는 기능은 가능하지만 이것 역시 시간 자체를 컨트롤 할 수는 없습니다.

스케줄링은 스프링 자체에서 내장된 기능을 사용하거나 별도의 모듈인 쿼츠를 사용하거나 아니면 젠킨스 같은 서버를 사용하기도 합니다. 

배치 로딩시간이 스케줄 재실행 시간 보다 클 경우 문제가 될 수 있다면 스케줄 재실행 시간을 배치 로딩이 끝나기 전에 실행하지 않도록 하는 것이 중요합니다

쿼츠 같은 모듈에는 이전의 Job 이 종료될 경우에만 새로운 Job 을 스케줄하는 기능이 포함되어 있기도 합니다.

이런 부분들은 로직으로 풀어야 하고 스프링 배치 구성과는 별개의 문제라 보시면 됩니다.

그리고 외부 트리거가 발생할 경우 바로 배치가 실행되어야 하는 경우도 스프링 배치와는 별개의 문제입니다.

외부에서 어떤 이벤트가 발생할 경우 배치가 실시간으로 실행되도록 구성하는 것은 여러 환경적인 요건들을 고려해야 합니다.

가령 이벤트를 주기적으로 계속 감시하는 별도의 데몬을 띄워서 이벤트 발생을 캐치하면 배치를 실행하게끔 할 수 있는데 이벤트 발생이 어떤 시간 간격으로 발생하는지에 따라서 배치가 중복으로 실행될 수 있기 때문에 이에 대한 장치가 필요하는 등.. 정교한 설계가 뒷받침 되어야 합니다.

저는 주로 스케줄링 관련해서는 쿼츠를 사용하고 있으며 젠킨스도 괜찮다고 생각합니다.

배치는 실행환경이나 인프라 환경, 규모 등의 조건들이 다양하기 때문에 상황에 따른 적절한 설계와 구현이 되어야 합니다.

 

0

개발중

네 자세한 설명 감사합니다.

0

mj Song

정말 좋은 내용입니다.

스프링 배치 버전 질문

0

122

1

소스코드가 어디에 있나요?

0

96

2

트랜잭션 예외

0

92

1

질문이 있습니다.

0

130

2

ChunkListener 에서 beforeChunk 의 실행 시점 관련 질문

0

125

2

여러 JOB 설정하는법

0

150

2

강의 자료 다른 방법 있을까요?

0

154

1

JobExecution과 JobExecutionContext와의 관계

0

186

2

특정 job만 실행

1

252

1

Batch 성능 질문

0

153

1

ItemReaderAdapter 종료

0

80

1

[ 강좌 Git 브랜치 문의 ] 섹션 9 > JdbcCursorItemReader, JpaCursorItemReader

0

179

2

Spring Batch 배포 질문

0

246

2

spring batch 버전

0

236

2

retry count 관련 질문

0

172

2

StepExecutionListener 의 afterStep 에서 return ExitStatus.FAILED 에 의한 동작에 의문이 갑니다.

0

330

2

jdbc, jpa 커서방식 조회 방식 차이 질문 (강사님께 답변 받고 싶습니다)

0

235

2

Multithread step과 AsyncItemProcessor

0

203

2

job 재실행

0

251

2

bean 생명주기 문제 도와주세요(@Scope("step"), @Autowired)

0

183

1

Multi-threaded-step과 Partitioning 차이 확인

0

175

2

jdbcCursorReader, jdbcPagingReader 질문

0

146

1

step muti-thread 질문

0

111

1

itemSteam open update close 질문

0

112

1