피드로 돌아가기
I built a tool that shows you exactly which method slowed down after your last deploy published: false
Dev.toDev.to
Backend

Spring AOP와 SQLite 기반 Deploy 간 Method Latency Diff 분석 도구 구현

I built a tool that shows you exactly which method slowed down after your last deploy published: false

closeup12022026년 4월 14일4intermediate

Context

배포 후 p99 Latency 급증 시 Grafana, Jaeger, Log 분석을 통한 병목 지점 탐색의 높은 비용 발생. 배포 버전 간 Method 레벨의 성능 변화를 즉각적으로 비교할 수 있는 가시성 확보 필요.

Technical Solution

  • Spring AOP를 통한 @Service, @Component 등 핵심 Bean의 자동 Instrument 설계로 비즈니스 코드 침투 최소화
  • GIT_COMMIT_HASH 환경 변수를 식별자로 활용하여 배포 버전별 메트릭을 분리 저장하는 구조 채택
  • 성능 저하 방지를 위해 메트릭 데이터를 Local SQLite에 Asynchronous 방식으로 Flush 하는 파이프라인 구축
  • Proxy-on-Proxy로 인한 무한 루프 및 오버헤드 방지를 위해 Spring 내부 클래스와 AspectJ 클래스 등을 Instrumentation 대상에서 제외
  • Spring Boot Actuator Endpoint를 통해 두 Commit Hash 간의 Latency Delta를 계산하는 비교 로직 구현
  • Docker/K8s 환경 내 데이터 지속성을 위한 Volume Mount 기반의 로컬 스토리지 전략 적용

- 서비스 레이어의 성능 회귀 테스트를 위해 AOP 기반의 자동 측정 도구 도입 검토 - 운영 환경의 부하를 줄이기 위해 메트릭 수집 시 Async Flush 및 로컬 저장소 활용 고려 - 보안 강화를 위해 Actuator Endpoint를 내부망 전용 포트로 분리하는 Management Port Isolation 적용 - 분석 대상에서 프레임워크 내부 클래스를 제외하여 측정 오버헤드와 노이즈 제거

원문 읽기