문제의 시작리워드 배치가 파트너사 실적을 가져오다가 13개월 중 8개월꼴로 통째로 skip되는 사고가 있었다. 처음엔 타임아웃과 서킷브레이커 임계값을 손보면 될 줄 알았는데, 결국 손댄 곳은 "임계값"이 아니라 "이 자리에 서킷브레이커를 쓴다는 설계" 그 자체였다.문제: 13개월 중 8개월이 조용히 비어버렸다배치는 매 실행마다 미처리 월을 찾아 최대 13개월치를 순회하며, 월별로 파트너사 실적 조회 API를 호출해 회원 포인트를 적립한다. 재시도가 붙어 있는데도 결과적으로 서킷브레이커(모든 월이 공유하는 하나의 인스턴스)가 열려서 그 달 데이터가 통째로 skip되는 일이 반복됐다.이번이 처음이 아니었다는 게 이 사고를 다르게 보게 만들었다. 한 달 전에도 같은 유형의 사고("slow-call 임계값이 너..
— 동적 Deadline 계산, 파티션 구조 적용, REST API 강제 중지1편에서 ChunkListener + setTerminateOnly()로 배치 중지 문제를 해결했다.2편에서는 고정 시간이 아닌 데이터 건수 기반 동적 Deadline 계산과파티션 멀티스레드 구조에서의 적용, REST API를 통한 강제 중지까지 다룬다.목차고정 Deadline의 한계동적 Deadline 계산 설계배치 처리 방식별 Deadline 계산파티션 구조에서의 Deadline 계산secondsPerItem 설정 주의사항REST API를 통한 배치 강제 중지Processor 단계에서의 중지 처리멀티스레드 환경에서 스텝 정보 확인전체 흐름 요약1. 고정 Deadline의 한계1편에서 JobDeadlineConfig에 고정 시..
- Total
- Today
- Yesterday
- Cache
- 도커
- Spring JPA
- hazelcast
- 알고리즘
- Quartz
- JPA
- 이슈
- 프로젝트
- SQL
- 데이터적합성
- spring
- OpenFeign
- 이슈해결
- MySQL
- ncp
- 에러
- Linux
- spring batch
- 스케줄러
- dockerfile
- mybatis
- 트랜잭션
- LocalDate
- docker
- 실무경험
- Lock
- 컨테이너
- Java
- SpringBatch
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
