목록 보기
AOP와 MDC로 구현하는 보급형 APM - 인터페이스 이력 관리부터 호출 추적까지
백엔드

AOP와 MDC로 구현하는 보급형 APM - 인터페이스 이력 관리부터 호출 추적까지

롯데ON
롯데ON
2025년 3월 5일

두줄요약

인터페이스 이력 관리 시스템을 AOP와 MDC, Kafka Interceptor로 구현한 과정을 정리했습니다. 멀티스레드 전파와 호출 스택 누락 문제를 여러 차례 개선한 시행착오를 공유했습니다.

핵심 내용

  • 인터페이스 이력 관리 필요성과 도입 배경 정리
  • AOP 기반 호출 흐름에 호출 스택, 결과, 응답시간을 적재하는 구조 설명
  • MDC, TaskDecorator, Kafka Interceptor, ConcurrentHashMap 조합으로 추적 ID 전파와 멀티스레드 이력 관리 구현
  • 스레드 전파와 메모리 누수, 중복 저장 문제를 겪으며 개선한 시행착오 공유

구조와 흐름

  • 템플릿 메서드 패턴으로 트래픽 유형과 호출 스택 유형 판별
  • 데코레이터 패턴과 책임 연쇄 패턴으로 시간, 호출 스택, 결과 저장 단계 분리
  • BeanPostProcessor와 TaskDecorator로 비동기 스레드에 MDC 전파

주의할 점

  • InheritableThreadLocal의 깊은 복사와 얕은 복사 모두 호출 스택 누락 문제 유발
  • 자식 스레드에서의 remove가 부모 스레드 데이터까지 영향을 줄 수 있는 점
  • HTTP와 Kafka에서 추적 ID 전파 방식이 달라 별도 처리 필요

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...