[스프링] 스프링 배치 - 클라우드 환경에서의 스프링 배치

배치 처리의 요구 사항

  1. 장애 허용성
  2. 견고성
  3. 비용 효율성
  4. 관찰 가능성
  5. 확장성


클라우드 환경에서 스프링 배치가 제공하는 특징

  1. 장애 허용성
  2. 견고성
  3. 비용 효율성
  4. 관찰 가능성
  5. 확장성


쿠버네티스 플랫폼에서 스프링 배치 애플리케이션의 빌드 및 배포

쿠버네티스 플랫폼에서 스프링 배치 애플리케이션을 빌드 및 배포하는 과정은 다음과 같다.

  1. 클러스터 내부 또는 외부에 잡 실행 메타데이터를 저장할 데이터베이스를 구성한다.
  2. 스프링 배치 애플리케이션을 컨테이너화(도커 이미지화)한다. 로컬에사 빌드 도구인 메이븐이나 그래들의 플러그인과 빌드팩(buildpack)을 사용하면 도커 파일(Dockerfile) 없이 애플리케이션을 도커 이미지로 빌드할 수 있다. 또는 카니코(Kaniko)를 통해 쿠버네티스 내에서 컨테이너 이미지를 빌드하거나
  3. 도커 이미지로 빌드된 애플리케이션을 배포 및 실행한다. 배포 구성(DeploymentConfig), 잡(Job), 크론잡(CronJob) 등의 컨트롤러를 사용하여 애플리케이션을 배포 및 실행할 수 있다.


스프링 클라우드 태스크와 스프링 배치 통합


동일한 잡 실행

스프링 배치는 잡 실행에 대한 메타데이터를 저장하며 이 정보를 사용하여 다음과 같이 중복 및 동시 잡 실행에 대한 제어를 한다.

  • 동일한 잡 인스턴스의 중복 실행(duplicate job execution)을 할 수 없게 한다. 잡이 성공적으로 완료된 후에는 동일한 잡 인스턴스를 다시 실행할 수 없다. 휴먼 에러나 플랫폼의 실행 제한으로 인해 잡이 중복 실행되는 것을 방지한다.
  • 동일한 잡 인스턴스의 동시 실행(concurrent job execution)을 할 수 없게 한다. 데이터베이스에 저장된 잡 실행 상태를 기반으로 현재 실행 중인 잡을 감지하고, 동일한 노드 또는 클러스터의 다른 노드에서 동시 실행을 방지하기 위해 JobExecutionAlreadyRunningException 예외를 발생시킨다.


##


참고

Comments