강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

ehddbs452100님의 프로필 이미지
ehddbs452100

작성한 질문수

죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.

1장. 작전1: 바이너리 초이스 - 스프링 배치의 두 가지 스텝 유형 (양자택일... 죽음의 선택이다 ☠️)

스프링 컨테이너 재시작 반복 현상

작성

·

13

0

Jenkins를 바탕으로 Job들을 PipeLine으로 연결해서 사용중이다. Job들이 순차적으로 실행해야해서 아래처럼 파이프라인을 구성했다.

pipeline {
    agent any
    
    stages {
        stage('Print Parameters') {
            steps {
                echo "========================================="
                echo "🔧 Job Configuration"
                echo "========================================="
                echo "startDate: ${params.startDate}"
                echo "endDate: ${params.endDate}"
                echo "pageNo: ${params.pageNo}"
                echo "numOfRows: ${params.numOfRows}"
                echo "========================================="
            }
        }
        
        stage('Run abandonedAnimalDataLoadJob') {
            steps {
                script {
                    echo "🐾 Starting abandonedAnimalDataLoadJob..."
                    sh """
                        java -Duser.timezone=Asia/Seoul \\
                        -Dspring.profiles.active=local \\
                        -jar /var/jenkins_home/SeeYouAgain-Batch-0.0.1-SNAPSHOT.jar \\
                        --spring.batch.job.name=abandonedAnimalDataLoadJob \\
                        startDate=${params.startDate} \\
                        endDate=${params.endDate} \\
                        pageNo=${params.pageNo},java.lang.Long \\
                        numOfRows=${params.numOfRows},java.lang.Long
                    """
                    echo "✅ abandonedAnimalDataLoadJob Completed!"
                }
            }
        }
        
        stage('Run s3ProfileUploadJob') {
            steps {
                script {
                    echo "📤 Starting s3ProfileUploadJob..."
                    sh """
                        java -Duser.timezone=Asia/Seoul \\
                        -Dspring.profiles.active=local \\
                        -jar /var/jenkins_home/SeeYouAgain-Batch-0.0.1-SNAPSHOT.jar \\
                        --spring.batch.job.name=s3ProfileUploadJob \\
                        startDate=${params.startDate} \\
                        endDate=${params.endDate}
                    """
                    echo "✅ s3ProfileUploadJob Completed!"
                }
            }
        }
    }
    
    post {
        success {
            echo '========================================='
            echo '✅ All Batch Jobs Completed Successfully!'
            echo '========================================='
        }
        failure {
            echo '========================================='
            echo '❌ Batch Job Failed. Please check the logs.'
            echo '========================================='
        }
        always {
            echo "Pipeline execution finished at ${new Date()}"
        }
    }
}

로그를 찍어보니 스프링 컨테이너가 켜지고 첫번째 job이 끝난 후 컨테이너가 종료, 2번째 job을 실행하기 위해 스프링 컨테이너 켜지고 job이 끝난 후 컨테이너가 종료되는 비효율적인 현상을 발견했다.

 

Claude한테 물어보니 job 실행시간이 짧아서 크게 문제없다고는 하지만, 개인적으로 Job이 많거나 추후에 오래 걸리는 Job이 추가될 경우엔 시간도 오래걸리고 리소스 낭비라고 생각한다.

이런 상황에선 어떻게 하는게 좋은가??

답변

답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!
ehddbs452100님의 프로필 이미지
ehddbs452100

작성한 질문수

질문하기