📝 [일상]을 쓰기 앞서..
10월 초에 갑작스럽게 휴일이 생겨서 배치 애플리케이션에 대해 공부해보고자 스프링 배치로 간단하게 공부를 하였다.
간단하게 직원 월급 정산 일괄 처리를 예제로 만들어보면 괜찮다고 생각이 들어 간단하게 설계하고 구현을 하였다.
사실 스프링 배치를 언제 사용해야하는 기술인지를 알았을 지 몰라도, 직접 사용해본 적은 거의 없었다.
(있다 하더라도 야매로 대충 만든 게 전부이다.)
데이터베이스 테이블은 대충 다음과 같은 칼럼으로 이루어져있다.
직원 테이블 (아이디, 이름, 직급)
월급 지급 이력 테이블 (직원, 월급, 날짜)
통장 테이블 (아이디, 이름, 잔고)
일단 공부하는 것이 취지인만큼 너무 복잡한 내용보다는 기초적인 내용들을 위주로 공부를 하였다.
그렇기에 Scheduler를 사용하여 특정 시간대마다 작동하는 것까지는 구현하지는 않았지만, 더 공부를 하면서 하지 않을 까 싶다.
📔 [배운 것]
스프링 배치는 한계(limit)이 존재하는 데이터들을 일괄처리를 할 수 있도록 설계된 스프링의 프로젝트이며, 다음 3가지의 중요한 내용들을 가지고 있다.
- Reader - 특정 데이터들을 CHUNK만큼 읽는다.
- Processor - 읽어들인 데이터들에게 특정 처리를 한다. (필터링 혹은 변환)
- Writer - 읽어들인 데이터들을 쓴다. (DB, log, file.. etc)
여기서 Processor는 필수가 아닌 선택이라는 점이다. 아직 자세히는 모르지만, Processor는 변환을 하는 역할을 수행하는 것 같다.
사실 이번에 배운 내용들은 이게 전부인 것 같다. 더 있다면 스프링 배치 Scope, jobParameters 정도가 있다.
하지만 스프링 배치에서 지원하는 Scope는 아직 더 공부해야할 것 같다. 정확히 어떤 게 어떤 역할을 수행하는 지는 잘 모르기 때문이다. 한 가지 확실히 아는 것이 있다면, @StepScope는 @JobScope이 필요하다는 것이고, @JobScope가 존재해야 jobParameters 를 사용하여 Program Parameters 를 사용하여 인자값을 넘겨받을 수 있다는 것 정도가 있다.
🎊 [느낀 것]
프로젝트를 진행할 때 뭐 하나라도 더 신중하게 적용시키거나 말을 할 수 있는 지식이 조금이라도 늘었다는 것에 약간의 뿌듯함을 느꼈다. 스프링은 바다와 같이 드넓다는 것을 다시 한 번 더 상기되는 휴일이었던 것 같다.