포스트

Day75 실습프로젝트(Service/FrontCotrol Pattern)

Service

1. 현황분석

  • 기존 Servlet의 역할은 DAO제어와 JSP제어를 담당한다.
  • 만약 Servlet이 바뀌면 전체를 바꿔야한다.

    image

2. 개선방안

  • Servlet의 주요 기능은 JSP제어 이므로, 로직과 트랜젝션 제어를 따로 분리한다. image

3. 분리 전후 비교

image

4. 실습코드

Front controller

1. Front Controller의 개념

  • Front Controller는 웹 애플리케이션에서 일종의 중앙 제어 지점 역할을 하는 디자인 패턴이다.
  • 모든 요청을 하나의 중앙 컨트롤러(보통 서블릿이나 컨트롤러 클래스)가 처리하게 되어, 애플리케이션 구조를 단순화하고 유지보수를 용이하게 할 수 있다.
  • 이 패턴은 주로 MVC(Model-View-Controller) 아키텍처에서 사용된다.

1) Front Controller의 특징:

  1. 단일 진입점:
    • 클라이언트의 모든 요청은 하나의 진입점(Front Controller)을 통해 처리된다.
    • 이를 통해 각 요청에 대한 공통 로직(인증, 로깅 등)을 한 곳에서 관리할 수 있다.
  2. 공통 처리 로직:
    • Front Controller는 모든 요청에 대해 공통적으로 수행해야 하는 작업(예: 인증, 권한 검증, 로깅)을 미리 처리하고, 이후에 요청을 적절한 처리기로 분배한다.
  3. 처리기 분배:
    • Front Controller는 요청에 따라 알맞은 컨트롤러나 액션으로 요청을 전달한다.
    • 이 역할을 Request Dispatcher라고도 한다. Front Controller가 어떤 요청이 들어왔는지 분석하여 해당 요청을 처리할 적절한 곳으로 분기시킨다.
  4. 유지보수성 향상:
    • 모든 요청 처리를 중앙에서 관리하기 때문에 코드 중복이 줄고, 요청 처리 로직을 일관되게 관리할 수 있다.
    • 또한 새로운 요청 유형이 추가되더라도 Front Controller에 작은 수정만 하면 된다.

장점:

  • 일관된 요청 처리: 모든 요청을 한 곳에서 관리하므로, 로직의 일관성을 유지할 수 있다.
  • 유연한 구조: 요청에 대한 사전 처리 작업(인증, 권한 체크 등)을 쉽게 추가할 수 있다.
  • 유지보수 용이: 여러 컨트롤러나 서블릿에 중복되는 코드를 작성할 필요 없이, 공통 작업을 한 곳에서 처리할 수 있어 유지보수에 유리하다.

단점:

  • 초기 복잡성: Front Controller를 구현하려면 초기 설정이 다소 복잡할 수 있다.
  • 병목 가능성: 모든 요청이 하나의 컨트롤러를 거치기 때문에, 부하가 큰 웹 애플리케이션에서는 병목이 발생할 수 있다.

image

대표적인 예로는 Java 웹 애플리케이션에서 사용하는 Servlet이나, 스프링 프레임워크의 DispatcherServlet이 Front Controller의 예이다. image

2. 실습코드

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.