[배치 만들어보기 샘플]

  • 스프링 배치 아키텍처
    • SpringBoot Batch를 사용할 때 설정해야하는 부분과 코드작성해야 하는 부분을 구별하기

  • 배치 Job 개요 및 시나리오
    • 일일 배치로 실행
    • 공통된 포맷의 CSV 파일로 도서관 관련 데이터가 유입
      (공공데이터포털 - 전국도서관표준데이터
    • 해당 데이터를 시군구, 읍면동으로 정규화하여 도서관 정보를 저장
      (추가적으로 필요하다고 생각하는 의미있는 데이터 구분 기준이 있으면 추가 가능)
    • 정규화 및 분석된 도서관 데이터를 레포트화하여 확인

  • ERD 설계
    1. CSV 파일의 데이터를 가공되지 않은 채로 DB에 저장하여 1차적으로는 컬럼의 기준을 정함
    2. 가공되지 않은 데이터를 시군구, 읍면동으로 분류화 작업
    3. 시군구, 읍면동을 키 값으로 갖는 도서관 데이터를 저장
    4. 도서관 데이터의 기본 값과 상세값을 구분하여 데이터 저장

  • 최종 목표 배치 Job 실행 프로세스 설계
    • 하나의 Job으로 설계
    • 해당 Job에는 3단계의 Step 으로 구분하여 실행 (임의)
    • 데이터를 읽고 쓰는 클래스는 개발환경에 따라 유연하게 적용한다.

  • 개선
    • 정규화 작업에 대한 Step을 추가
    • 각 작업에 대한 로그를 확인하여 배치 작업으로 인하여 수행된 수치를 상세하게 파악 가능
    • Report 작업 수행 시 Excel File로 생성 추가

  • 개선해야하는 사항
    • JpaItemWriter를 사용하는 것처럼 JpaReader를 생성하고 있지 않다는 점
    • 복잡한 쿼리를 사용하는 경우에 대해서 대비되어 있지 않다는 점
      • 현재 배치의 속도 개선을 위한 선택지가 없음 > 학습이 더 필요
  • Git

+ Recent posts