여러 파드 환경에서 단일 실행 보장 방식
2
작성한 질문수 1
단일 실행이 보장되는 이유로 Db를 통해서 값을 가져오고 있으며 db에서 동시성을 방어해주고 있기 때문이라고 해주셨는데요.
FindRunningJobExecutions 는 단순 select문이 아니고 내부적으로 비관적 락으로 동시 접근을 막아주는 구조인가요? 저는 여러 파드인 상황에서는 보여주신 코드가 동시성 이슈로 인해 주어진 잡이 한 번만 실행된다는 것을 보장하기 힘들 것 같다고 생각했습니다.
이외에도 여러 파드인 상황이라면 실무에서 어떤 요소를 고려하는지 궁금합니다.
학습 내용에선 currentimestamp를 잡 파라미터에 넣어서 매번 새로운 잡 인스턴스로 취급/실행하는 형태를 보여주셨는데, 이로인해 멀티파드 환경에서 특정 잡의 중복 실행 방지 혹은 특정 잡 파라미터 구성에서의 중복 실행 방지에 대한 요건 구현 시 영향도/고려 사항이 있는지 여부와 아니면 currentimestamp 잡 파라미터를 실무에서 빼기도 하는지 궁금합니다
운영 시 중복 실행 문제 및 잡 재시도에 대해 고민하다 나온 질문입니다. 혹시 애초에 대부분의 배치 잡과 스탭 로직을 멱등하게 동작하도록 설계 및 코드 작성을 해야하는 걸까요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. DongHyun Gu님.
여러 파드 환경에서 단일 실행을 보장하는 방법에 대해 궁금하신 점을 이해하고 있습니다. 큰 트래픽을 처리하거나 높은 신뢰성이 요구되는 환경에서는 여러 파드 환경 내에서 한 번에 하나의 Job만 실행되도록 보장하는 것이 중요합니다.
Spring Batch에서는 비관적 락과 낙관적 락 둘 다 사용할 수 있지만, FindRunningJobExecutions의 경우 주로 비관적 락이 아닌 터미널의 동시성을 피하기 위한 방법으로 동작합니다. 여러 파드에서의 동시 실행 문제를 해결하기 위해서 다음과 같은 방법들을 고려할 수 있습니다:
DB 락 사용: 데이터베이스에서 비관적 락을 사용하여 한 번에 하나의 트랜잭션이 Job을 업데이트할 수 있도록 합니다. 이는 주로 설정을 통해 반복적 접근 시 동시성 문제를 피하기 위해 사용됩니다.
잡 인스턴스 파라미터 관리:
currentimestamp등의 파라미터를 이용해 매번 새로운 잡 인스턴스를 생성할 수 있습니다. 이 방법은 멀티파드 환경에서 중복 실행을 방지할 수 있습니다. 단, 이런 파라미터는 주의해서 사용해야 하며, 실무에서는 반복적으로 동일한 작업이 실행되어야 하는 경우 오히려 문제가 될 수 있으니 상황에 맞게 조정합니다.스케줄링 컨트롤러 사용: Kubernetes 등에서 스케줄링 컨트롤러를 이용하여 동작 시점을 컨트롤 할 수 있습니다. 이는 특정 파드에서만 Job이 구동되도록 제한하는 방식입니다.
External Locking: Redis 등 외부 시스템을 이용한 락을 구현하여, 클러스터 환경에서도 단일 실행 환경을 조성할 수 있습니다.
좀 더 깊이 있는 논의와 예시는 아래 유사한 질문 내용을 참고하시기를 추천합니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
XAMPP에서 Apache, DB 재기동 시 접속안되는 문제
0
7
1
실습 권한이 없네요··· 이건 ··· 좀··· 401 에러떠요
0
16
1
훅 내용 안뜸 오류
0
22
2
inheritance startegy 선택시 고려사항
0
13
1
[할인쿠폰] 코테의 바이블[JAVA] 50% 할인 쿠폰 관련
0
17
1
챗봇 기능 구체화 (RAG)
0
26
2
Entity 동등성 비교
0
16
1
패키지 구분에 대해 궁금한게 있습니다
0
20
2
안녕하세요. 바뀐 채점사이트 관련해서 문의드립니다.
0
21
1
스프링부트 서버 에러나요
0
23
1
갑자기 채점 사이트가 바뀌었어요
0
29
1
코드 자료
0
40
2
2026.04에 추가된 강의 시청 불가
0
33
1
Service Create/Update Record 운용과 Delete Record 미운용의 차이 질문
0
25
1
문제 리스트 페이지
0
25
1
인가 코드 발급(프론트 vs 백)
0
30
2
part8 Notion 링크
0
28
1
채점 사이트 관련 질문드립니다
0
23
1
인텔리제이 MCP 서버 설정 관련
0
34
2
조회속도 개선에서 더 개선하는 방법이 궁금합니다.
0
34
2
필기자료 사라졌나요?(실기 일주일만에 안돼서 재도전-_-)
0
42
2
Sequence 관련 질문
1
32
2
Image Only Query
1
30
2
job, step execution 관련 질문 드립니다.
0
36
2





