전체 글7 Annotation based Interceptor Interceptor를 사용하는 방법은 이전 포스팅인 filter, interceptor에서 정리를 해봤는데요. 그중 Interceptor를 Annotation을 활용해 사용하는 방법이 있습니다. Custom Annotation을 등록하고 HandlerMethod를 통해 Annotation을 찾아 Interceptor를 실행하도록 구현하는 방법인데요. 이 방법이 Annotation을 추가하고 등록할 때마다 Handler에서 Annotation을 찾는 로직이 반복되는 걸 확인할 수 있었습니다. 그래서 이번엔 공통적인 로직을 한번 분리해보려고 합니다. Custom Annotation 생성 @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) pub.. 2021. 9. 10. 시스템 확장에 대해 생각해보기 지금까지 회사 업무를 하면서 대규모 트래픽에 대한 확장성에 대해 경험할 일이 없다 보니 부족함을 많이 느끼고 있었는데요. 그래서 이번 기회에 우아한 테크 캠프, 강의, 책 등 다양한 루트로 얻게 된 정보들을 바탕으로 시스템의 확장에 대해 생각해보고 알아야 할 것들에 대해 큰 틀에서 정리해보려 합니다 🤔 단일 서버 구조를 개선하는 과정 단일 서버 구조로 사용자 요청에 대해 하나의 서버로 처리되고 있는 상태가 가장 기초적인 구성 방식인데요. 서비스가 성장해 Client에서 요청하는 수가 증가한다고 생각해봅시다. 하나의 서버가 더 많은 일을 처리해야 하는 상황이 생기겠죠. 그러면 서버의 몸집을 키우던 수를 늘리던 선택하게 됩니다. Scale-up vs Scale-out 수직적으로 규모를 확장할지 수평적으로 규.. 2021. 9. 3. Spring MVC - Filter, Interceptor 스프링에서 공통 관심사를 처리하는데 AOP를 사용하는데요. 웹과 관련된 공통 관심사를 처리하는 방법으로 Filter와 Interceptor를 사용하게 됩니다. Filter와 Interceptor는 HttpServletRequest를 제공하기 때문에 웹 관련 공통 관심사를 처리하기에 유용합니다. 이번 포스팅에서는 Servlet Filter와 Spring Interceptor의 차이점에 대해서 정리하도록 해볼게요. Filter 웹 요청이 들어오면 먼저 필터가 먼저 호출되고 서블릿이 호출됩니다. 필터는 체인으로 구성되어 여러 개의 필터를 추가하고 호출되도록 구성할 수 있습니다. filter는 servlet에서 제공하고, 필터 인터페이스를 통해 구현하고 빈으로 등록하면 서블릿 컨테이너가 필터를 싱글톤으로 생성하.. 2021. 8. 11. Spring Transaction Spring의 Transaction 처리 방법 Spring에서 Transaction을 처리하는 방식에는 세 가지 방법이 있는데요. 첫 번째는 TransactionSynchronizationManager를 통한 동기화 방식, 두 번째로 PlatformTransactionManager를 통한 추상화 방식, 마지막으로 AOP를 통한 @Transactional 애노테이션을 활용한 선언적 트랜잭션 방식이 있습니다. 각 방식에 대해 간단하게 정리해보면, 동기화 방식은 Connection 객체를 보관해두고 필요할 때마다 호출하는 방식인데 이 방식의 경우 DB를 여러 개를 사용하게 되는 경우 로컬 트랜잭션이 아닌 글로벌 트랜잭션을 사용한다는 점에서 문제가 발생하게 됩니다. 이런 문제를 해결하기 위해 PlatformTr.. 2021. 8. 9. 이전 1 2 다음