본문 바로가기

분류 전체보기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.