Moait
홈인기 피드모든 블로그모든 태그
홈인기 피드모든 블로그모든 태그
그날, 우리의 배치는 왜 멈추었을까? 섬네일

그날, 우리의 배치는 왜 멈추었을까?

올리브영 favicon올리브영·Backend·
Spring BootJava
2024년 11월 06일4

AI 요약

이 글은 AI가 요약했어요. 정확한 내용은 꼭 원문을 확인해 주세요!

핵심 요약

올리브영의 배치에서 트랜잭션 미분리로 멀티스레드 수행 시 경합이 발생해 지연된 문제를 확인했고, 트랜잭션 분리와 스레드 정책 정비로 해결했다.

구현 방법

  • Tasklet 기반에서 SomeService.processBusinessLogic()에 트랜잭션이 없어 실행되던 문제를 파악했다.
  • ThreadPoolExecutor로 병렬 수행 시 각 스레드가 독립 트랜잭션 경계를 갖도록 해야 한다.
  • 해결책으로 서비스 메소드를 @Transactional(propagation = Propagation.REQUIRES_NEW)로 분리하고, 스레드풀 설정을 조정했다.

주요 결과

  • 트랜잭션 경계 분리로 배치가 정상 종료되고 시스템 부하가 안정화되었다.
  • 정책 영향 등 추가 검토가 필요하다고 확인했다.

연관 피드

%가 높을수록 이 글과 비슷할 가능성이 높아요!
올리브영 결제 이야기 Part - 3 섬네일
75%

올리브영 결제 이야기 Part - 3

올리브영 favicon올리브영·2022년 12월 13일
7,000줄 PL/SQL 프로시저와의 결별: 클레임 로직 Java 모듈 이관기 섬네일
72%

7,000줄 PL/SQL 프로시저와의 결별: 클레임 로직 Java 모듈 이관기

올리브영 favicon올리브영·2025년 11월 06일
배달대행사 API 연동과 장애 대응 - 오늘드림 서비스 개발기 섬네일
72%

배달대행사 API 연동과 장애 대응 - 오늘드림 서비스 개발기

올리브영 favicon올리브영·2025년 12월 01일