
뉴젯 프로젝트에 함께하게 되었다.
뉴젯 프로젝트란 현재 상용화되어 앱시장에 나와있는 뉴젯 서비스의 백엔드 프레임워크를 스프링으로 이전하고 성능 개선 및 유저 피드백 개선에 초점을 둔 프로젝트이다.
첫 번째 과정으로, 인증파트를 도맡아 구현하였고 그 과정을 담았다.
기존 인증 시스템은 슈퍼베이스에 의존하고 있어 다음과 같은 문제점이 있었다
이러한 문제를 해결하기 위해 서버 내부에서 JWT를 직접 발급하고 관리하는 시스템으로 전환하여, 더 안정적이고 확장 가능한 인증 시스템을 구축하였다.
핵심 도메인 객체 구현
기존에는 인터셉터 단에서 발생하는 예외를 잡기 위해 커스텀 필터를 추가했으나, 실제 테스트 결과 해당 예외는 글로벌 예외 처리기(@RestControllerAdvice)에서 정상적으로 캐치됨을 확인했다.
원인 분석
Spring MVC는 요청 처리 시 아래와 같은 순서로 DispatcherServlet을 통해 요청을 위임한다.
Client → Filter → DispatcherServlet → Interceptor → Controller → ExceptionResolver (ex. @ControllerAdvice)초기에는 인터셉터 내부에서 예외 발생 시 필터에서 이를 잡아야 한다고 판단했지만, DispatcherServlet 이후에 발생한 예외는 Spring 자체의 ExceptionResolver에서 처리되므로, 커스텀 필터를 통한 예외 캐치가 필요하지 않음을 확인했다.
결과
불필요한 필터 제거를 통해 요청 흐름을 단순화하고 유지보수를 용이하게 했다.
Spring의 예외 처리 흐름(DispatcherServlet → ExceptionResolver)을 신뢰하고 이를 활용한 처리 방식으로 정리했다.
JWT 공식 문서: https://jwt.io/introduction
도메인 주도 설계 DDD: https://incheol-jung.gitbook.io/docs/q-and-a/architecture/ddd
서블릿으로 예외처리 하기 : https://develop-writing.tistory.com/97
해당 PR 에서도 확인하실 수 있습니다 ☺️