동시성 문제
740
65 asked
좋은 강의 완강하였습니다!
질문이 있어서 남깁니다.
(모두 강의처럼 설정하고 jobscheduler 사용시 가정입니다)
배치 작업이 진행될 때 동시에 다른 배치 작업이 진행된다면 동시성문제가 일어날 수 있나요??
한마디로 주기설정시에 모두 겹치지 않게 주기를 설정해야하나요??
예를 들어 데이터를 읽어오는 job이 실행이 될 때 그 데이터에 관해서 update나 create delete쿼리가 날라온다면 에러가 터지나요??
아니면 배치작업이 먼저 일어났으니까 배치 작업이 끝나고 날라온 쿼리가 작용되나요??
만약 이런 문제가 있다면 배치작업은 항상 서비스 점검시간을 두어 진행되야 하나요??
Answer 2
0
강의가 도움이 되신 것 같아 기쁜 마음이에요 :)
질문 내용에 대해서 답변을 드리겠습니다.
배치 작업을 수행할 때 일반적으로는 동일한 테이블 작업은 시간 차를 두고 작업을 진행해요.
예시를 보자면 a 배치 작업에서 abc 테이블을 작업하고 있을 때, b배치 작업이 수행되고 a배치에서 작업 중인 데이터를 작업(e.x, update)하는 경우가 있을 수 있습니다.
이때는 a배치 작업으로 abc 테이블의 작업 중인 행은 잠금상태가 되기 때문에 lock이 걸리게 됩니다.
a 배치 작업은 문제 없이 끝나겠지만 b 배치 작업은 작업 중 멈추거나 정상적으로 종료가 안 되겠습니다.
(b 배치에서 단순 조회 작업이라면 작업이 완료가 되나 a배치 종료 후 lock이 풀리고 작업을 하기 때문에 수행 속도가 많이 늦어질 수 있어요.)
위의 문제는 경험상 말씀을 드렸는데요. 데이터베이스의 종류마다 테이블 락이나 행에 락이 걸리는 경우가 다르기 때문에 예시와 다른 경우가 발생할 수 있습니다.
그렇기 때문에 되도록 조회가 아닌 똑같은 데이터를 작업한다면 같은 시간대를 피해 주셔야겠습니다.
배치 작업은 실시간 처리를 하는 경우가 아니기 때문에 문제가 생기면, 고객이 직접 몸에 와닿기 전까지 해결을 하겠습니다 😢
그래도 해결을 못했다면 내용에 대해서 공지를 올리고 수습을 해요. (배치 작업 때문에 전체 서비스가 멈추는 경우는 흔치 않아요. 그래서 배치 작업의 대한 내용만을 빠르게 수습한답니다.)
질문 주신 내용은 실무에서도 고민을 많이 필요로 하는 내용이에요. 이런 내용 때문에 실시간 처리보다 배치 처리가 더 어렵다고 하시는 분들도 있습니다.
배치 개발 시 질문해주신 내용들을 고민하신다면 더 나은 배치 개발과 실력도 금방 향상될 수 있으시겠습니다.
감사합니다 ^^
배치 실행시 파라미터 (파일 이름)받기 및 (csv) 검증 5.0버전 공유
1
48
1
질문x 1강 일단 실행 코드부분 5.0에 맞춰 수정
1
38
1
spring batch 5.x 버전 설정
1
141
2
Spring Batch 5버전의 경우 실행법 공유
0
165
1
질문입니다.
0
108
1
소스 다운 받을 수 없는건가요?
0
120
1
학습에 사용하는 문서 자료 같은 건 없나요?
0
122
1
spring batch 5버전 소스는 없나요
0
437
1
질문드립니다.
0
340
1
@Configuration 어노테이션 관련 질문있습니다.
0
277
1
다중 Job 구동시 질문 있습니다!!
0
317
1
설정 관련 문의
1
303
1
다중DB 접속 설정 에러
0
958
1
조건별 분기 처리시 질문있습니다
0
352
1
Spring Batch 테이블이 생성되질 않습니다!!!!!
0
1708
2
db이관시 sql 스크립트 데이터 복붙하라고 하시는데 파일은 어디에 있나요 ?
0
492
1
Spring Batch5로 강의내용 최신화 업데이트될 가능성이 있을까요?
0
873
1
reader, writer, processor에서 적용
0
490
1
똑같이 실행하는데 출력이 안돼요
0
1023
2
스케줄러에서 Job을 구분하지 못합니다.
0
609
1
빌드가 실패해요 ㅠㅠ
1
3207
1
Chunk size에 대해
0
3176
1
Run / Debug 관련 질문드립니다..!
1
914
2
완강했습니다! 마지막 질문 드리고 싶습니다.
0
421
1

