스프링으로 개발하다 보면, "요청이 들어왔을 때 공통적으로 처리해야 하는 로직"을 어디에 둘지 고민하게 됩니다. 예를 들어 인증, 로깅, MDC 세팅, 트래픽 제어, 요청 검증 같은 것들입니다. 스프링에는 이런 공통 처리를 위한 장치로 Filter, Interceptor, AOP라는 세 가지 선택지가 존재합니다.문제는, 이 셋이 할 수 있는 일의 범위가 상당히 겹친다는 점입니다. 실제로 많은 경우, 필터로 구현한 로직을 인터셉터로 옮겨도 되고, 심지어 AOP로 구현해도 기능적으로는 큰 문제가 없어 보이기도 합니다. 그래서 "아무거나 써도 되는 거 아닌가?"라는 생각이 들기 쉽습니다.하지만 이 세 가지는 동작 시점과 책임 레벨이 완전히 다릅니다. 이 차이를 무시한 채 사용하면, 당장은 동작하더라도 시스템이..