[스프링] 스프링 배치 - 클라우드 환경에서의 스프링 배치
배치 처리의 요구 사항
- 장애 허용성
- 견고성
- 비용 효율성
- 관찰 가능성
- 확장성
클라우드 환경에서 스프링 배치가 제공하는 특징
- 장애 허용성
- 견고성
- 비용 효율성
- 관찰 가능성
- 확장성
쿠버네티스 플랫폼에서 스프링 배치 애플리케이션의 빌드 및 배포
쿠버네티스 플랫폼에서 스프링 배치 애플리케이션을 빌드 및 배포하는 과정은 다음과 같다.
- 클러스터 내부 또는 외부에 잡 실행 메타데이터를 저장할 데이터베이스를 구성한다.
- 스프링 배치 애플리케이션을 컨테이너화(도커 이미지화)한다. 로컬에사 빌드 도구인 메이븐이나 그래들의 플러그인과 빌드팩(buildpack)을 사용하면 도커 파일(Dockerfile) 없이 애플리케이션을 도커 이미지로 빌드할 수 있다. 또는 카니코(Kaniko)를 통해 쿠버네티스 내에서 컨테이너 이미지를 빌드하거나
- 도커 이미지로 빌드된 애플리케이션을 배포 및 실행한다. 배포 구성(DeploymentConfig), 잡(Job), 크론잡(CronJob) 등의 컨트롤러를 사용하여 애플리케이션을 배포 및 실행할 수 있다.
스프링 클라우드 태스크와 스프링 배치 통합
동일한 잡 실행
스프링 배치는 잡 실행에 대한 메타데이터를 저장하며 이 정보를 사용하여 다음과 같이 중복 및 동시 잡 실행에 대한 제어를 한다.
- 동일한 잡 인스턴스의 중복 실행(duplicate job execution)을 할 수 없게 한다. 잡이 성공적으로 완료된 후에는 동일한 잡 인스턴스를 다시 실행할 수 없다. 휴먼 에러나 플랫폼의 실행 제한으로 인해 잡이 중복 실행되는 것을 방지한다.
- 동일한 잡 인스턴스의 동시 실행(concurrent job execution)을 할 수 없게 한다. 데이터베이스에 저장된 잡 실행 상태를 기반으로 현재 실행 중인 잡을 감지하고, 동일한 노드 또는 클러스터의 다른 노드에서 동시 실행을 방지하기 위해
JobExecutionAlreadyRunningException
예외를 발생시킨다.
##
Comments