우아한 테크 세미나 : 우아한스프링배치 2019

우아한 테크 세미나 : 우아한스프링배치 2019

@ConditionalOnProperty 사용 여부 #

개요 : Job(Bean) 수가 많아짐에 따라, 초기 로딩 속도가 느려질 수 있음

현재 실행할 Job 만 Bean 으로 띄우기 위해 @ConditionalOnProperty 사용

= 필요한 Bean 만 등록 -> 초기 로딩 속도 빨라짐
= 단, @ConditionalOnProperty 사용 시 테스트 코드 실행 시 속도가 느려짐

  • @ConditionalOnProperty 사용 시 마다 (테스트)컨텍스트를 다시 띄움

결론

목적사용 여부
실제 동작에 우선순위가 있을 때
빠르게 Job 을 띄우고 실행할 때
@ConditionalOnProperty 사용 O
테스트 코드에 우선순위가 있을 때
(테스트 코드를 퉁해)코드의 정확성, 빠른 확인이 필요할 때
@ConditionalOnProperty 사용 X

@ConditionalOnProperty 사용하지 않을 경우,
모든 것을 Bean 으로 등록하는 것임.
(테스트 코드 작성 시) ApplicationContext 에서 Bean 찾아와서 코드 작성하는 방식



Step N개 vs 파이프라인 #

하나의 Job 에서 여러 Step 을 정의하여 사용함

  • 순차적으로 실행이 필요할 때
  • 몇몇 작업이 연관이 있을 때

문제점

  1. 유연성이 떨어짐
  • Step1, 2, 3 이 있을 때, Step 2 혹은 3 만 실행하고 싶을 경우
  • Step2 는 실행하고 싶지 않을 경우 등등

따라서, 파이프라인으로 구성하는 것도 좋은 방법 (권장)

파이프라인으로 구성 시 위의 경우 유연하게 대처 가능

우형에서는 보통 Job1 - Step1 개로 구성하고 파이프라인 방식으로 한다고 함


* 단, 파이프라인 활용 => 배포 툴에 조금 종속적인 것 같음



이 외 #

  • JpaItemWriter : merge / persist
  • Jenkins
    • 배포 툴
    • 무중단 배포 (readlink)

* 무중단 배포 관련해서 더 알아볼 것