Day75 실습프로젝트(Service/FrontCotrol Pattern)
Service
1. 현황분석
2. 개선방안
3. 분리 전후 비교
4. 실습코드
Front controller
1. Front Controller의 개념
- Front Controller는 웹 애플리케이션에서 일종의 중앙 제어 지점 역할을 하는 디자인 패턴이다.
- 모든 요청을 하나의 중앙 컨트롤러(보통 서블릿이나 컨트롤러 클래스)가 처리하게 되어, 애플리케이션 구조를 단순화하고 유지보수를 용이하게 할 수 있다.
- 이 패턴은 주로 MVC(Model-View-Controller) 아키텍처에서 사용된다.
1) Front Controller의 특징:
- 단일 진입점:
- 클라이언트의 모든 요청은 하나의 진입점(Front Controller)을 통해 처리된다.
- 이를 통해 각 요청에 대한 공통 로직(인증, 로깅 등)을 한 곳에서 관리할 수 있다.
- 공통 처리 로직:
- Front Controller는 모든 요청에 대해 공통적으로 수행해야 하는 작업(예: 인증, 권한 검증, 로깅)을 미리 처리하고, 이후에 요청을 적절한 처리기로 분배한다.
- 처리기 분배:
- Front Controller는 요청에 따라 알맞은 컨트롤러나 액션으로 요청을 전달한다.
- 이 역할을
Request Dispatcher
라고도 한다. Front Controller가 어떤 요청이 들어왔는지 분석하여 해당 요청을 처리할 적절한 곳으로 분기시킨다.
- 유지보수성 향상:
- 모든 요청 처리를 중앙에서 관리하기 때문에 코드 중복이 줄고, 요청 처리 로직을 일관되게 관리할 수 있다.
- 또한 새로운 요청 유형이 추가되더라도 Front Controller에 작은 수정만 하면 된다.
장점:
- 일관된 요청 처리: 모든 요청을 한 곳에서 관리하므로, 로직의 일관성을 유지할 수 있다.
- 유연한 구조: 요청에 대한 사전 처리 작업(인증, 권한 체크 등)을 쉽게 추가할 수 있다.
- 유지보수 용이: 여러 컨트롤러나 서블릿에 중복되는 코드를 작성할 필요 없이, 공통 작업을 한 곳에서 처리할 수 있어 유지보수에 유리하다.
단점:
- 초기 복잡성: Front Controller를 구현하려면 초기 설정이 다소 복잡할 수 있다.
- 병목 가능성: 모든 요청이 하나의 컨트롤러를 거치기 때문에, 부하가 큰 웹 애플리케이션에서는 병목이 발생할 수 있다.
대표적인 예로는 Java 웹 애플리케이션에서 사용하는 Servlet
이나, 스프링 프레임워크의 DispatcherServlet
이 Front Controller의 예이다.
2. 실습코드
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.