나만의 개발 로그 | 고민 로그
AOP 활용하여 컨트롤러 메소드 실행시간 측정 본문
1. 서론
개발을 하다 보면 특정 API가 느려졌을 때, 어디서 병목이 발생했는지 파악하는 일이 매우 중요해진다.
처음에는 메소드마다 로그로 System.currentTimeMillis()를 찍어서 실행 시간을 확인하려 했지만, 이 방식은 너무 번거롭고 비효율적이었다.
그래서 관심사를 분리해주는 AOP(Aspect-Oriented Programming)를 도입하여, 컨트롤러 메소드의 실행 시간을 자동으로 측정하고 로그로 남기는 구조를 만들었다.
2. 왜 AOP인가?
AOP는 공통적으로 사용되는 기능(로깅, 보안, 트랜잭션 등)을 비즈니스 로직과 분리하여 중복을 줄이고 유지보수를 쉽게 만드는 패러다임이다.
실행 시간 측정은 모든 메소드에서 반복되는 코드이기 때문에, AOP로 분리하는 것이 이상적이라고 판단했다.
간단하게 전체 컨트롤러의 실행 시간을 확인할 수 있어, 성능 분석과 디버깅이 한결 쉬워졌다.
이제 일일히 실행시간을 보지 않아도 콘솔로그에 바로 찍히니까 보기 편해졌다.

- @Around: 메서드 실행 전후를 감싸 실행 시간을 측정한다.
- joinPoint.getSignature(): 어떤 메서드인지 로그에 출력한다.
3. 정리
- 실행 시간을 보면서 추후 문제 발생시에 쿼리랑 같이 간편하게 볼 수 있을 것 같다
- 그리고 특정 어노테이션이 붙은 메소드에만 적용하게 한다든가, 실행 시간이 일정 시간인 애들은 경고 로그를 출력한다든가, 슬랙같은 곳에 연동하는 등 여러 방면으로도 쓰임새가 많을 것 같다.

'웹 개발' 카테고리의 다른 글
| 체크 예외, 언체크 예외 (0) | 2023.05.27 |
|---|---|
| Redis를 활용한 Cache 기능으로 조회 성능 개선 (1) | 2023.04.21 |
| Redis를 활용한 AccessToken BlackList 저장(로그아웃 기능) (1) | 2023.04.13 |
| JPA 기본 (0) | 2023.04.06 |
| Postman 테스트? NO! 테스트 코드를 활용하자! (0) | 2023.02.17 |
Comments