ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1. Spring Batch
    IT/Spring Batch 2021. 4. 27. 15:05

    이번 프로젝트에 Batch 처리 관련 업무가 있고, 마침 부서에 Bacth 처리용 서버가 없어 개발하면서 배치 관련 내용을 정리해 본다.

    기술스택 : spring batch + quartz + JPA

     

    배치 애플리케이션이란?

    특정한 루틴을 가지고 일괄 데이터 처리를 하는 애플리케이션이다. user와의 상호작용이 없고, 보통 특정 루틴이 특정 시간(간격) 으로 처리한다.

     

    Spring Batch?

    Accenture 오 spring 의 공동 작업으로 탄생한 batch 작업용 프레임워크이다.

    Spring의 특성을 그대로 가지고 있어 DI,AOP,추상화 등 spring의 3대 요소를 모두 사용할 수 있다.

    단계를 Job과 Step 으로 구분하여 logic 처리에 집중할 수 있게 해주고, 대용량 데이터를 처리하기 위해 Chunk 지향 처리를 제공한다.

    실행에 관련된 모든 정보를 DB에 저장하고 참조하는 메타데이터 모델을 제공한다.

    Quartz?

    Job Scheduling 라이브러리이다. 자바로 개발되어 자바 프로그램에 쉽게 통합하여 개발할 수 있다. 수십에서 수천개의 작업도 실행 가능하며, 간단한 interval 형식이나 Cron 표현식으로 복잡한 스케줄링도 지원한다. 특정 날짜 시간에 실행하는 작업도 지정할 수 있다.

     

    Spring Batch의 장점

     - 대용량 데이터 처리에 최적화되어 고성능을 발휘한다.

     - 효과적인 로깅, 통계처리, 트랜잭션 관리 등을 재사용 가능한 필수 기능을 지원한다.

     - 예외사항과 비정상 동작에 대한 방어 기능이 있다.

     - 반복적인 작업 프로세스를 이해하면, 비즈니스 로직에 집중할 수 있다.

     

    Spring Batch 사용시 주의사항

     - 가능하면 단순화 해서 복잡한 구조와 로직을 피해야 한다.

     - 데이터를 직접 사용하는 편이 빈번히 일어나므로, 데이터 무결성을 유지하는 유효성 검사 등의 방어책이 필요하다.

     - 배치 처리 시스템 I/O 사용을 최소화 해야한다. 잦은 I/O로 데이터베이스 커넥션과 네트워크 비용이 커지면 성능에 영향을 줄 수 있다.

     - 가능하면 한번에 데이터를 조회하여 메모리에 저장 해 두고 처리한 다음, 한번에 데이터베이스에 결과를 저장하는것이 좋다.

     - 같은 DB를 사용하는 서비스들간의 영향도를 잘 파악해야 한다.

     - 스케줄러를 제공하지 않아 quartz 같은 스케줄러와 함께 써야한다.

    'IT > Spring Batch' 카테고리의 다른 글

    4. Spring Batch Job Repository 설정  (0) 2021.04.30
    3. Spring Batch Project 생성 및 설정  (0) 2021.04.29
    2. Spring Batch Job  (0) 2021.04.29
Designed by Tistory.