[배치 만들어보기 샘플]
- 스프링 배치 아키텍처
- SpringBoot Batch를 사용할 때 설정해야하는 부분과 코드작성해야 하는 부분을 구별하기
- 배치 Job 개요 및 시나리오
- 일일 배치로 실행
- 공통된 포맷의 CSV 파일로 도서관 관련 데이터가 유입
(공공데이터포털 - 전국도서관표준데이터) - 해당 데이터를 시군구, 읍면동으로 정규화하여 도서관 정보를 저장
(추가적으로 필요하다고 생각하는 의미있는 데이터 구분 기준이 있으면 추가 가능) - 정규화 및 분석된 도서관 데이터를 레포트화하여 확인
- ERD 설계
- CSV 파일의 데이터를 가공되지 않은 채로 DB에 저장하여 1차적으로는 컬럼의 기준을 정함
- 가공되지 않은 데이터를 시군구, 읍면동으로 분류화 작업
- 시군구, 읍면동을 키 값으로 갖는 도서관 데이터를 저장
- 도서관 데이터의 기본 값과 상세값을 구분하여 데이터 저장
- 최종 목표 배치 Job 실행 프로세스 설계
- 하나의 Job으로 설계
- 해당 Job에는 3단계의 Step 으로 구분하여 실행 (임의)
- 데이터를 읽고 쓰는 클래스는 개발환경에 따라 유연하게 적용한다.
- 개선
- 정규화 작업에 대한 Step을 추가
- 각 작업에 대한 로그를 확인하여 배치 작업으로 인하여 수행된 수치를 상세하게 파악 가능
- Report 작업 수행 시 Excel File로 생성 추가
- 개선해야하는 사항
- JpaItemWriter를 사용하는 것처럼 JpaReader를 생성하고 있지 않다는 점
- 복잡한 쿼리를 사용하는 경우에 대해서 대비되어 있지 않다는 점
- 현재 배치의 속도 개선을 위한 선택지가 없음 > 학습이 더 필요
- Git