Framework/Spring-boot

[Spring-boot] JOOQ 도입 후 구동 속도가 느려지는 현상

dev_ss 2024. 11. 9. 21:08

 

 

 

 


발단

 

 

사이드 프로젝트로 스프링 부트에 JOOQ를 도입하면서 발생한 일이었다.

 

애플리케이션 구동 시간이 원래 10초 내외로 나왔으나, JOOQ를 도입하면서 구동 시간이 1분이 넘어가게 되었다.

 

자료를 조사해 보니 이는 JOOQ를 사용할 때 AOP에서 발생하는 문제였고, 해당 부분을 수정하여 해결하였다.

 

 

 

 


해결

 

기존 코드는 execution을 사용했었는데, 구동 시 적용되는 범위가 너무 넓어서 구동이 느려진다는 것이었다.

 

// 기존 코드

private static final String CONTROLLER = "execution(* com.myproject.app.controller..*.*(..))";
private static final String SERVICE = "execution(* com.myproject.app.service..*.*(..))";
private static final String CONTROLLER_OR_SERVICE = "execution(* com.myproject.app.controller..*.*(..)) || execution(* com.myproject.app.service..*.*(..))";

 

 

 

 

 

이를 아래와 같이 within을 활용해서 변경해 주었다.

 

execution과 within은 범위 설정에 대한 기입 방식도 차이가 있어서, 이도 수정해 주었다.

 

// 변경된 코드

private static final String CONTROLLER = "within(com.myproject.app.controller..*)";
private static final String SERVICE = "within(com.myproject.app.service..*)";
private static final String CONTROLLER_OR_SERVICE = "within(com.myproject.app.controller..*) || within(com.myproject.app.service..*)";

 

 

 

 

execution메서드 단위의 매칭을 하는 반면, within타입(클래스/인터페이스) 단위의 매칭을 한다는 차이점이 있다.

 

 

 

 

변경 사항을 적용하고 나니 80초가량 되던 구동 시간이 10초 미만으로 다시 줄어든 것을 확인할 수 있었다.

 

 

 


 

 

 

 

반응형