PR CENTER

뉴스룸     |     료실

mobile background

PR CENTER

Spring Batch와 Spring Scheduler 차이

관리자
2024-12-23
조회수 420

□ Spring Batch(스프링 배치)

    복잡한 배치 프로세스를 개발할 수 있도록 설계 되었으며, 대량 데이터 처리를 위한 배치 처리 프레임워크 입니다.


   1. Spring Batch 레이어
1193c6b664741.png


  • Spring Batch의 계층 구조:

         - Application Layer: 배치 작업의 구성과 실행을 담당하는 최상위 계층입니다.

         - Batch Core Layer: Job의 실행과 제어를 담당하는 핵심 실행 계층입니다.

         - Batch Infrastructure Layer: 실제 배치 처리를 위한 Reader, Writer, 서비스 기능을 제공하는 계층입니다.


   2. Spring Batch 컴포넌트

645bf1b127bd1.png


  • Spring Batch의 주요 컴포넌트

         - JobLauncher: Job을 실행하는 인터페이스입니다.

         - Job: 배치 처리의 전체 프로세스를 정의합니다.

         - Step: Job 내부의 실제 처리 단계입니다. 하나의 Job은 여러 Step으로 구성될 수 있습니다.

         - ItemReader, ItemProcessor, ItemWriter: 데이터를 읽고, 처리하고, 쓰는 역할을 담당합니다.

         - JobRepository: 모든 배치 처리 정보를 저장하고 관리합니다.


3. Spring Batch 특징

  • 목적: 대량 데이터를 처리하기 위한 배치 처리
  • 작업단위: Job, Step 구조 (Read → Process → Write)
  • 트랜잭션 관리: 트랜잭션 지원 및 롤백 기능 제공
  • 대량 데이터 처리: 수백만 건 이상의 데이터도 효율적으로 처리
  • 스레드 관리: 멀티스레드 및 병렬 처리 지원
  • 재시작/재처리: Job 재시작 및 실패한 단계의 재처리 지원


□ Spring Scheduler(스프링 스케줄러)

    Spring 프레임워크가 제공하는 스케줄링 기능으로, 지정된 시간이나 주기적인 간격으로 작업을 실행하는 도구입니다.


 1. Spring Scheduler 종류

  • 기본 스케줄링 도구

          - @Scheduled (Simple Scheduled Tasks): Spring 프레임워크가 기본적으로 제공하는 어노테이션

          - TaskScheduler: Spring의 인터페이스, 동적 주기변경 및 멀티스레드 환경에서 사용


  • Quartz Scheduler

          - 라이브러리를 주입받아서 사용하고, 복잡하고 정교한 스케줄링 요구사항 처리가능.

          - Job 과 Trigger 정의 및 실행시간 제어

          - 분산 환경 지원 및 Job 상태관리를 위한 데이터베이스 연동 가능


2. @Scheduled 어노테이션 옵션

  • cron: “초, 분, 시, 일, 월, 요일” 로 이루어져 있습니다.

          - * : 와일드 카드(모든 값에 대해 일치)

          - , : (0,15,30) → 0, 15, 30분 실행(여러 값을 지정)

          -  - : (10-12) → 10시, 11시, 12시에 실행(범위를 지정)

          - / : (0/5) → 0초부터 시작해 5초 간격으로 실행(시작값과 간격을 지정)

          - ? : 특정 필드를 지정하지 않음, 보통 일, 요일에 사용

          예시) @Scheduled(cron= “0/5 * * * * ?”) → 5초 주기


  • fixedDelay: 이전 메소드 실행이 종료 후 지정된 시간(ms)이 지난 후 실행됩니다.

          예시) @Scheduled(fixedDelay = 10 * 1000)


  • fixedRate: 이전 메소드 시작 시간으로부터 지정된 시간(ms) 마다 실행됩니다.

          - 이전 실행이 완료되었는지 여부와 관계없이 일정한 간격으로 실행됨을 의미합니다.

          예시) @Scheduled(fixedRate = 10 * 1000) → 10초 주기


3. Spring Scheduler 특징

  • 목적: 주기적 작업 실행 (간단한 작업)
  • 작업단위: 단일 작업 (메소드)
  • 트랜잭션 관리: 트랜잭션 관리 없음
  • 대량 데이터 처리: 대용량 데이터 처리에 적합하지 않음
  • 스레드 관리: 단일 스레드(TaskExecutor로 확장 가능)
  • 재시작/ 재처리: 지원하지 않음


□ 언제 사용해야 할까?

 1. Spring Batch 사용 예시

  • 대량의 데이터를 데이터베이스에서 읽어 파일에 저장.
  • 파일에서 데이터를 읽어 가공 후 데이터베이스에 저장.


 2. Spring Scheduler 사용 예시

  • 특정 시간에 정확하게 실행해야 하는 작업 (예: 매일 자정 데이터 백업)
  • 복잡한 주기로 실행되어야 하는 작업 (예: 평일 오전 9시부터 오후 6시까지 매시간)
  • 특정 요일이나 날짜에만 실행되어야 하는 작업 (예: 매주 월요일 오전 8시)


□ 성능 차이

구분

작업 복잡도

확장성

Spring Scheduler

간단한 주기적 작업 (이메일 발송, 로그 기록)에서 더 빠르게 수행

확장성이 부족하고 스레드 관리가 제한적

Spring Batch

데이터 읽기, 변환, 쓰기 등 복잡한 작업을 수행하며, 성능 최적화

스케일 아웃 및 병렬 처리를 통해 성능 확장에 용이


□ 결론

    - 간단한 주기 작업 : Spring Scheduler

    - 대량 데이터 배치 처리 : Spring Batch


                                                                                                                                                                                                  ⭐발표자 : 남상엽님 

1 0

페이지 바로가기

@2024 K2SYSTEMS. All rights reserved.

HOME       |       ABOUT US       |       SOLUTION       |       PR CENTER       |       CONTACT       |       인재채용       |       kakao i cloud 고객센터  

@2024 K2SYSTEMS. All rights reserved.