실전 운영 중 발생 가능한 핵심 질문들
핵심 개념 요약 개념 요약 preferredDuringSchedulingIgnoredDuringExecution soft 조건이므로 만족하지 않으면 무시하고 실행 podAntiAffinity 기준 라벨 Pod 템플릿 내 template.metadata.labels 기준 Completed, Terminating 상태 anti-affinity 대상에 포함됨 (Pod 리소스 살아 있으면 영향 줌) TTLSecondsAfterFinished Pod을 자동 GC 처리해 anti-affinity 영향 최소화 동일 더 읽기
EKS CronJob에서 BackoffLimitExceeded 오류가 발생하는 원인과 해결 방법
EKS에서 CronJob 실행 시 다음과 같은 오류 메시지를 본 적 있으신가요? [BackoffLimitExceeded] Job has reached the specified backoff limit 이 오류는 Kubernetes Batch Job이 실패했고, 설정된 최대 재시도 횟수를 초과했을 때 발생합니다. 이 글에서는 해당 에러가 발생하는 이유와, 실전에서 이를 어떻게 해결할 수 있는지 자세히 살펴봅니다. 오류 원인: backoffLimit 더 읽기
Aurora MySQL에서 복잡한 JSON 서브쿼리로 인한 Signal 11 Crash 원인 분석 및 대응법
문제 요약 AWS RDS에서 운영 중인 Aurora MySQL 8.0.28 기반의 인스턴스에서 특정 복잡 쿼리 실행 중 signal 11 (Segmentation Fault) 이 발생하여 인스턴스가 재시작되었습니다.
문제 쿼리 구조 (샘플 변환) SELECT m.user_id, IFNULL(SUM(IF(( SELECT IFNULL((LENGTH(log.json_column) – LENGTH(REPLACE(log.json_column, ‘sampleKey’, ”)) / 15), 0) FROM user_log log WHERE log.user_id = m.user_id 더 읽기
Kubernetes에서 CronJob 병렬 실행 없이 노드 그룹(batch-alpha 등) 내 분산 처리하기: rotate-group 기반 전략
문제 개요 대규모 Kubernetes 클러스터에서 수백 개의 CronJob이 실행되며, 각 Job은 반드시 특정 태그(group=batch-alpha, group=batch-beta, group=batch-gamma)를 갖는 노드 풀에서만 실행되어야 합니다. 가장 중요한 요구사항은 동시에 병렬 실행이 절대로 발생해서는 안 된다는 점입니다.
일반적인 접근 방식의 한계
최종 채택한 전략 요약
실제 구성 요소 1. CronJob YAML 더 읽기
Aurora MySQL Signal 11 Crash 분석과 Spring Boot 커넥션 오류 대응 전략
개요 2025년 3월 26일, AWS Aurora MySQL 환경에서 Signal 11로 인해 데이터베이스가 비정상 종료되는 장애가 발생했습니다. 이와 동시에 Spring Boot 기반의 배치 애플리케이션에서는 커넥션 풀 오류로 애플리케이션 구동 실패가 발생했으며, 이 글에서는 그 원인과 해결 방안을 상세히 정리합니다.
장애 타임라인 요약 항목 시각 DB 다운 발생 2025-03-26 10:54:19 더 읽기
Spring Batch Kubernetes 종료 처리: graceful shutdown, shutdown hook, 컨테이너 runtime hang 완전 정복
Kubernetes 환경에서 sample-batch 시스템은 Java 기반의 Spring Batch Job을 실행하고 있으며, 안정적인 종료 처리가 매우 중요합니다. 특히 다음과 같은 요구사항을 만족해야 합니다: 이를 위해 다음 설정 및 코드 전략을 활용했습니다: 핵심 설정 yaml복사편집activeDeadlineSeconds: 180 terminationGracePeriodSeconds: 10
코드 전략 요약 1. Shutdown Hook에서 Whatap 처리 및 Thread 정리 Runtime.getRuntime().addShutdownHook(new 더 읽기
Kubernetes CronJob 강제 종료 및 graceful shutdown 처리 방법 (Spring Batch + 모니터링 연동)
Kubernetes CronJob을 활용해 Java 기반 Spring Batch 작업을 수행하는 환경에서, 작업 시간이 초과되었을 때의 강제 종료 처리가 필요할 수 있습니다. 이를 위해 activeDeadlineSeconds를 활용하면 설정된 시간 초과 시 작업을 종료할 수 있습니다. 그러나 기본적으로 Kubernetes는 종료 시 SIGTERM을 먼저 보내고, 이후 terminationGracePeriodSeconds 동안 graceful shutdown을 기다립니다. 이 시간이 지나야 SIGKILL을 더 읽기
Spring BeanCreationNotAllowedException: Singleton Bean 생성 오류와 종료 시점 문제 해결법
1. 오류 메시지 Spring 종료 시 다음과 같은 예외가 발생할 수 있습니다: 2. 발생 시점 Spring 애플리케이션 종료 중, 별도 쓰레드 또는 병렬 처리 중에 ApplicationContext.getBean() 을 호출하는 경우에 발생합니다. 예를 들어 다음은 비동기 처리 로직 내에서 Bean을 호출한 경우입니다: 3. 주요 원인 4. 해결 방법 4.1 Bean 사전 주입 더 읽기
Spring Batch 병렬 처리 시 “Scope ‘job’ is not active” 오류 해결 방법 (Spring Boot 3 + Batch 5)
Spring Batch 병렬 처리 시 발생하는 Scope ‘job’ is not active 오류와 해결 방법 Spring Boot 3 + Spring Batch 5 환경에서 병렬 Step 처리(TaskExecutorPartitionHandler)를 구현하던 중 다음과 같은 오류가 발생할 수 있습니다: Scope ‘job’ is not active for the current threadNo context holder available for job scope 해당 오류는 더 읽기
Spring Batch Stack Trace 분석: 예외 발생 위치와 전달 순서 이해하기
Spring Batch 기반의 배치 작업을 수행하던 중 다음과 같은 예외가 발생했습니다. com.sample.common.exception.CustomException: 테스트용 오류 발생 예시입니다. at com.sample.batch.job.ExampleJob.lambda$1(ExampleJob.java:174) … at com.sample.SampleBatchApplication.main(SampleBatchApplication.java:118) 해당 Stack Trace를 보면 ExampleJob.lambda$1 메서드에서 CustomException이 발생했으며, 이 예외는 Spring Batch 내부 프로세스를 거쳐 main() 메서드까지 전파되었습니다. 이를 이해하기 위해 다음과 같은 예외 전달 순서를 주목할 수 있습니다: 더 읽기