Spring/Spring 문법

Spring MVC 와 3 Layer Architecture

열심히 해 2024. 10. 20. 21:22
 

Spring MVC와 3-Layer Architecture는 서로 다른 개념이지만, 둘 다 애플리케이션의 구조와 설계를 다루고 있어서 혼동이 될 수 있습니다. 이 둘의 관계와 차이점을 명확히 이해하면, 더 효과적으로 애플리케이션을 설계할 수 있습니다. 먼저 각 개념에 대해 설명한 후, 그 관계를 짚어볼게요.

1. Spring MVC (Model-View-Controller)

Spring MVC는 웹 애플리케이션에서 요청과 응답을 처리하기 위한 프레임워크로, 웹 애플리케이션의 구조를 Model, View, Controller로 나누는 디자인 패턴을 따릅니다. 이는 프론트엔드와 백엔드의 역할을 명확히 구분하여 코드의 모듈성과 유지보수성을 높이는 역할을 합니다.

  • Model: 데이터와 비즈니스 로직을 담당합니다. 데이터베이스와의 상호작용이나 데이터 처리 등의 기능을 여기서 수행합니다.
  • View: 사용자가 볼 수 있는 화면, 즉 HTML, JSP, Thymeleaf와 같은 템플릿을 이용해 사용자에게 전달되는 UI를 생성합니다.
  • Controller: 사용자의 요청을 받아 해당 요청을 처리하고, 결과를 모델에 전달한 후 적절한 뷰를 반환하는 역할을 합니다.

Spring MVC의 Controller는 주로 사용자의 HTTP 요청을 매핑하고, 서비스 로직을 호출하여 그 결과를 View로 전달하는 일을 합니다. Controller는 웹 요청과 관련된 로직만 처리하고, 실제 데이터 처리나 비즈니스 로직은 서비스 계층에 위임하는 것이 원칙입니다.

Spring MVC의 Controller 역할:

  • URL 요청을 매핑 (@Controller, @RequestMapping)
  • 사용자 요청을 처리한 후 적절한 비즈니스 로직을 호출
  • 처리 결과를 Model에 담아 View로 전달

2. 3 Layer Architecture (3계층 아키텍처)

3 Layer Architecture는 애플리케이션을 비즈니스 로직, 데이터 접근, 그리고 사용자 인터페이스의 세 가지 계층으로 나누는 설계 방식입니다. 각 계층은 서로 독립적으로 관리되며, 유지보수와 확장성을 높입니다.

  1. Presentation Layer (표현 계층):
    • 사용자 인터페이스와 상호작용하는 계층입니다. 웹에서는 HTML, JSP, Angular, React 등의 기술을 사용하고, Spring MVC의 Controller가 이 계층에 해당합니다.
  2. Service Layer (비즈니스 로직 계층):
    • 비즈니스 로직을 처리하는 계층입니다. 애플리케이션의 핵심 기능과 규칙을 처리하고, 데이터베이스에서 데이터를 가져와 처리한 뒤 Presentation Layer에 전달하는 역할을 합니다. 주로 @Service 어노테이션이 사용됩니다.
  3. Data Access Layer (데이터 접근 계층):
    • 데이터베이스와의 상호작용을 담당하는 계층입니다. SQL 쿼리를 통해 데이터베이스에서 데이터를 가져오고, 이를 저장하거나 수정하는 작업을 수행합니다. Spring에서는 주로 Repository 또는 DAO로 구현됩니다.

3 Layer Architecture의 Controller 역할:

  • 이 Controller는 주로 Presentation Layer에 위치하여 사용자의 입력을 받고, Service Layer에 요청을 전달합니다.
  • 여기서의 Controller는 Spring MVC의 Controller와 동일하게 동작하는 경우가 많습니다. 그러나 3 Layer Architecture의 문맥에서 Controller는 웹 애플리케이션뿐 아니라 데스크톱 애플리케이션이나 다른 형태의 인터페이스에서도 사용될 수 있는 더 넓은 개념입니다.

3. Spring MVC와 3-Layer Architecture의 관계

  • Spring MVC의 Controller3 Layer Architecture에서 Presentation Layer에 해당합니다.
    • 즉, Spring MVC의 Controller는 3 Layer Architecture의 첫 번째 계층인 표현 계층에서 동작합니다.
    • 이 표현 계층의 Controller는 주로 HTTP 요청을 처리하고, 사용자의 입력을 받아서 비즈니스 로직 계층(Service Layer)로 전달하는 역할을 합니다.
  • 3 Layer Architecture의 Controller는 전체 애플리케이션의 아키텍처 안에서 특정한 역할을 담당하는 계층으로, Spring MVC에서 이 계층을 담당하는 것이 바로 Spring의 Controller입니다.

4. 혼동되는 이유와 차이점 요약

  • 혼동이 되는 이유는 Spring MVC의 Controller3 Layer Architecture의 Controller가 모두 애플리케이션의 첫 번째 계층인 Presentation Layer에 속하고, 둘 다 사용자 요청을 처리하는 역할을 하기 때문입니다.
  • Spring MVC의 Controller는 웹 애플리케이션에 국한된 개념이고, 주로 HTTP 요청을 처리합니다.
  • 3 Layer Architecture의 Controller는 더 일반적인 개념으로, 웹뿐만 아니라 데스크톱, 모바일 등 다양한 UI 인터페이스에서의 입력을 처리하는 역할을 할 수 있습니다.

요약

  • Spring MVC는 웹 애플리케이션을 위한 프레임워크로 Controller는 사용자 요청을 처리하고 View와 연동됩니다.
  • 3 Layer Architecture는 애플리케이션을 세 계층으로 나누는 설계 방식으로, Presentation Layer에서 Controller가 사용자 입력을 받아 비즈니스 로직을 처리합니다.
  • Spring MVC의 Controller는 3 Layer Architecture의 Presentation Layer에 속하는 역할을 수행합니다.