Jenkins 을 스케줄링용도로 사용시 장점
- Job 추가/삭제/목록 등의 UI를 통해서 쉽게 관리 가능
- Job 순서에 대한 개런티를 보장함
(즉 선행된 동일 Job이 끝날때 까지 대기) - 다양한 플러기인 제공
- 클러스터링을 통한 중앙 집중 관리
- 심플한 Job Flow를 제공
- 실행 Job 앞뒤로 before, after 처리 가능
- Java 외에 모든 언어 및 shell를 지원
- Job 실패 와 성공 유뮤를 UI를 통해서 확인 가능
- 실행 중인 Job을 취소 할 수 있음.
- Job 시작/종료 시간을 알 수 있음.
Jenkins 을 스케줄링용도로 사용시 단점
- 매번 Job를 hard하게 run (java -jar ….)하기 때문에세밀한 스케줄러 타이밍 어려움 (스프링으로 된 Job일 경우 10 ~ 15초 정도 delay)
- 초 단위 Batch를 정확하게 스케줄링 하기 어려움
- 비즈니스 로직에 의한 스케줄러 실행 유무가 어려움
하지만 개인적인 생각으로는 특별한 경우를 제외하고는 Quartz 기반으로 다른 기능들을 조합해서
구현 및 운영하는 것이 좋다고 생각한다.
Jenkins 는 지속적인 통합빌트(C.I) 를 위한 툴의 성격이 강한 이유이다.
Jenkins의 장점으로 거론되는 기능들은 Spring Batch 나 DB 를 이용하여 Job을 관리하는 JDBCJobStore 를 사용하면 구현 가능하다.
오히려 일반적인 경우 단점이 너무 크다.