본문 바로가기

Spring Batch25

Spring Batch에서 MultiThread로 Step 실행하기 일반적으로 Spring Batch는 단일 쓰레드에서 실행됩니다. 즉, 모든 것이 순차적으로 실행되는 것을 의미하는데요. Spring Batch에서는 이를 병렬로 실행할 수 있는 방법을 여러가지 지원합니다. 이번 시간에는 그 중 하나인 멀티스레드로 Step을 실행하는 방법에 대해서 알아보겠습니다. 1. 소개 Spring Batch의 멀티쓰레드 Step은 Spring의 TaskExecutor를 이용하여 각 쓰레드가 Chunk 단위로 실행되게 하는 방식입니다. Spring Batch Chunk에 대한 내용은 이전 포스팅에 소개되어있습니다. 여기서 어떤 TaskExecutor 를 선택하냐에 따라 모든 Chunk 단위별로 쓰레드가 계속 새로 생성될 수도 있으며 (SimpleAsyncTaskExecutor) 혹은 .. 2020. 4. 18.
JobParameter 활용 방법 (feat. LocalDate 파라미터 사용하기) Spring Batch에서는 Spring Environment Variables (환경 변수) 외에 Batch에서만 사용할 수 있는 JobParameter를 지원합니다. Spring Batch Scope와 Job Parameter 기존에 사용하던 방식으로는 불편한 점이나 단점이 많아 이를 어떻게 해결하면 좋을지에 대해 정리하게 되었습니다. 기존에 사용하던 방식은 무엇인지, 해당 방식에 어떤 단점이 있는지, 개선할 수 있는 방법은 무엇인지 등등을 정리해보았으니 Job Parameter를 사용하면서 불편하셨던 분들은 참고하시면 좋을것 같습니다. 기본적인 내용은 아래 호돌맨님의 블로그 글을 참고하시면 더욱 좋습니다. 호돌맨 - SpringBoot Batch에서 JobParameter로 받을 수 있는 Type .. 2020. 3. 30.
Spring Batch 관리 도구로서의 Jenkins Spring Batch는 아직까지 확실한 표준 관리 도구가 없습니다. 각 팀/회사마다 상이한 방법들을 사용하는데요. 대표적인 방법들은 아래와 같습니다. Cron 클라우드 서버리스 이를테면 AWS의 Lambda 에 배치 코드를 등록하고, AWS CloudWatch에서 스케줄링 실행을 하도록 구성하는 방식입니다. API 기반의 직접 만든 관리자 페이지 Spring Batch Admin Deprecated 되었습니다. 더이상 개선하지 않겠다고 합니다. Spring Cloud Data Flow 로 전환하라고 합니다. 참고 Quartz를 이용한 관리자 페이지 Scheduler 역할로 Quartz를 사용하고 그에 대한 UI 대시보드를 직접 만드는 경우입니다. 참고 CI 서비스 (Jenkins / Teamcity 등.. 2020. 3. 22.
Spring Batch의 유니크 Job Parameter 활용하기 Spring Batch의 경우 일반적으로 동일 Job Parameter로 실행시 어떻게 처리할 것인지에 대해 여러가지 옵션을 제공합니다. 해당 파라미터로 최근 실패한 이력이 있다면 이어서 실행할 것인지 해당 파라미터로 최근 실패 혹은 성공한 이력이 있다면 실행하지 않을 것인지 해당 파라미터로 최근 실행한 이력이 있어도 무시하고 다시 실행할 것인지 등등이 있습니다. 대부분의 경우 동일 Job Parameter 실행을 막곤 하는데요. (중복 데이터가 쌓일 수가 있기 때문에) 일부 배치에서는 동일 Job Parameter로 계속 실행이 될 수 있길 원하기도 합니다. 예를 들어 특정 데이터에 대한 검증 로직 혹은 데이터 갱신 배치 등이 이에 해당 됩니다. 이번 글에서는 바로 이렇게 동일 Job Parameter.. 2020. 3. 15.
Spring Batch와 QuerydslItemReader 아래 글은 사내 기술 블로그에 동일하게 공유된 글입니다. 안녕하세요 우아한형제들 정산시스템팀 이동욱입니다. 올해는 무슨 글을 기술 블로그에 쓸까 고민하다가, 1월초까지 생각했던 것은 팀에 관련된 주제였습니다. 결팀소: 결제시스템팀을 소개합니다와 같은 "정팀소: 정산시스템팀을 소개합니다" 혹은 "정개추: 정산에서개발을추구하면안되는걸까" (던만추 컨셉) 등이였죠. (던만추) 팀에 관련된 이야기라면 뭐니뭐니해도 팀장님 얘기가 빠질수가 없는데, 주제를 정하자마자 조직개편으로 팀장님이 다른 팀으로 발령났습니다. 정권이 교체되었으니 라인 환승도 해야하고, 우아한테크코스 졸업생 분이 신입 개발자로 합류도 하셔서 팀 이야기는 좀 더 뒤로 미룰수 밖에 없었습니다.(레진코믹스의 레바툰-191화) 그래서 비 기술적인 주제 .. 2020. 2. 5.
10.1. Spring Batch 단위 테스트 코드 - Reader 편 웹 애플리케이션을 개발하다보면 통합 테스트 보다, 단위 테스트가 훨씬 더 많이 작성됩니다. 단위 테스트로 많은 코드를 검증 후, 통합 테스트 코드를 통해 각 단위가 합쳐졌을때 잘 작동 되는지 검증하곤 하는데요. 스프링 배치를 이용한 배치 애플리케이션에서는 많은 분들이 통합 테스트만 작성할때가 많습니다. 전편에서 말씀드린것처럼 스프링 배치의 단위 테스트 작성이 통합 테스트 보다 복잡하기 때문입니다. 그래서 이번 챕터에서는 다음의 질문들에 대해 이야기해볼까 합니다. Reader의 쿼리가 잘 작동되었는지는 어떻게 확인하지? StepScope를 통한 JobParameter가 잘 할당 된다는 것은 어떻게 확인하지? 부분 부분을 잘개 쪼개서 테스트할 수 있는 방법들을 소개드리겠습니다Reader의 단위 테스트는 다음.. 2019. 10. 20.