ELK 환경에서 더욱 정교한 이슈 트래킹하기 Part3: Multi Thread Context 적극 활용하기
·2024.10.29 19:00
배치성 API와 비동기 로직의 로그 누적 문제를 Multi Thread Context 도입으로 해결한다.
기존의 Thread Context 기반 이슈 트래킹은 단일 요청을 추적하는 데 유용하지만, 배치성 API나 비동기 로직에서는 한계가 있다. 특히 배치성 API의 경우, 하나의 스레드에서 수많은 작업을 순회하며 처리할 때 **MDC(Thread-Local 로그 메타데이터 저장소)**의 debug 필드에 로그가 계속 누적되어 특정 이슈를 식별하기 어려워진다.
이 문제를 해결하기 위해 각 작업마다 새로운 Thread Context를 부여하는 전략을 사용한다. onNewContext 함수를 통해 새로운 스레드를 생성하고, 해당 스레드 내에서 작업을 수행함으로써 MDC와 Sentry 컨텍스트를 초기화된 상태로 유지하여 로그를 분리한다.
이 방식은 병렬 처리가 목적이 아니라, 각 작업의 로그를 독립적으로 분리하는 것이 핵심이다. 따라서 새로운 스레드에서 작업을 수행한 뒤 Future.get()을 호출하여 작업을 동기적으로 완료함으로써, 의도한 대로 각 작업 건별로 깨끗하게 분리된 로그를 확보할 수 있다.
이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.
요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.