피드로 돌아가기
Dev.toBackend
원문 읽기
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
AI 요약
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 적용 - 분석 대상에서 프레임워크 내부 클래스를 제외하여 측정 오버헤드와 노이즈 제거