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 를 사용하면 구현 가능하다.  


오히려 일반적인 경우 단점이 너무 크다.


Posted by 빨강토끼