Layered Architecture

김현정·2025년 3월 20일
0

Layered Architecture

  • 애플리케이션을 세 가지 주요 계층으로 나누어 구조화하는 방법으로 각 계층은 특정한 책임을 갖고 있으며, 계층 간에는 명확한 역할 분담이 이루어져 코드의 재사용성, 유지보수성, 확장성을 높이는데 도움을 준다.

- Layered Architecture 구조

  • Presentation Layer

    • 사용자의 요청을 받고 응답하는 역할을 수행한다.
    • 화면을 응답하거나 데이터를 응답하는 API를 정의한다.
    • Spring MVC 객체를 말하며, 프론트 컨트롤러(DispatcherServlet), 컨트롤러(Controller), 뷰(View), 모델(Model)이 포함된다.
    • HTTP request와 authentication을 수행한다.
    • JSON field의 parameter을 JAVA Object로 변환한다.
  • Business Layer(Service Layer)

    • 비즈니스 로직(트랜잭션 및 기능)을 수행한다.
    • 컨트롤러(Pressentation Layer)에서 요청을 보내면 DAO(data Access Layer; 데이터접근계층)를 이용해 실제로 비즈니스 로직을 수행한다.
    • 요청을 해석하여 Repository Layer에 전달한다.
    • 일반적으로 하나의 비지니스 로직은 하나의 트랜잭션으로 동작한다.
  • Data Access Layer(Repository Layer)

    • 데이터베이스와 연동되어 실제 데이터를 관리한다.
  • DTO (Data Transfer Object)

    • 계층간 데이터 전달을 위해 사용되는 객체
  • Model

    • Entity
      • JPA와 관련있고, JPA에서는 Entity라는 형태로 데이터를 반환
  • DAO (Data Access Object)

- Layered Architecture 적용

  1. Controller
  • 클라이언트의 요청을 받는 역할을 수행한다.
  • 요청에 대한 처리를 Service Layer에 전달한다.
  • Servic에서 처리 완료 된 결과를 클라이언트에 응답한다.
  • 사용하는 Annotation : @Controller, @RestController

  1. Service
  • 사용자의 요청 사항을 처리한다
  • DB와 상호작용이 필요한 경우 Repository Layer에게 요청한다.
  • 사용하는 Annotation : @Service

  1. Repository
  • DB와 상호작용을 수행한다.
    • Connection 연결, 해제
    • CRUD 작업 처리
  • 사용하는 Annotation : @Repository

  1. DTO(Data Transfer Object)
  • 계층 간 데이터 전달을 위해 사용된다.
  • 요청 데이터를 처리하는 객체는 일반적으로 RequsetDto로 명명한다.
  • 응답 데이터를 처리하는 객체는 일반적으로 ResponseDto로 명명한다.

Layered Architecture 동작 과정

  1. Client에서 요청(request)이 들어오면 먼저 Presentation Layer에서 DispatcherServlet이 HandelerMapping(적합한 Controller을 선택함)을 통해 Controller에게 Client요청을 해석하여 무엇인지 알리고, Controller은 Client 요청 처리를 Business Layer 에게 요구한다.

  2. Business Layer은 Presentation Layer와 Interface를 통해서 통신하며, Client 요청을 적절하게 처리한 후 데이터베이스에 데이터를 저장(save)하거나 데이터를 꺼내(select)기 위해 Data Access Layer을 요청한다. 이때 비지니스 로직을 수행하기 위해 데이터가 필요하면 Domain Object에서 가져오고 Data Access Layer로 넘겨줄 데이터가 있으면 Domain Object에 담아 전달한다.

  3. Data Access Layer은 Business Layer와 Interface를 통해서 통신하며 Business Layer의 요청(request)를 처리한다. 이때, 데이터베이스에 저장하기 위해 필요한 데이터를 Domain Object에서 가져오고, 데이터베이스에서 데이터를 가져와 반환할 데이터가 있다면 Domain Objecct에 저장하여 반환한다.

  4. 모든 처리가 끝나면 Controller는 Client 요청(request)이 처리된 데이터와 사용할 View정보를 Domain Object에서 가져와서 ModelAndView에 담는다. 그리고 나서 ModelAndView객체를 DispatcherServlet에 넘긴다.

  5. ModelAndView 객체가 DispatcherServlet에 전달되면, DispatcherServlet은 ViewResolver를 통해서 View를 선택하고 Client에게 요청(request)이 처리된 데이터를 화면에 출력한다.

⁕Domain Object

  • DTO(Data Transfer Object ; 이름 그대로 데이터 전달, 데이터를 담고, 다른 계층(Layer) 또는 다른 컴포넌트들로 데이터를 넘겨주기 위핸 자료 구조)
  • Entity(핵심 비즈니스 로직을 담는 비즈니스 도메인 영역의 일부)

각 레이어들의 주요 메소드/역할/어노테이션

참고 사이트 : https://rypro.tistory.com/216, https://velog.io/@gayeong39/SPRING-레이어드-아키텍처

0개의 댓글