본문 바로가기
Spring

Layered Architecture

by 고선제 2023. 10. 5.

아키텍처(Architecture)란?

  • 소프트웨어 시스템의 전체적인 구조와 구성요소들 간의 상호작용을 설계하는 것을 말한다.
  • 시스템의 전체적인 동작을 결정하고, 시스템의 품질 성능(성능, 확장성, 유지보수성, 보안 등)에 직접적으로 영향을 미친다.

Layered Architecture

  • 소프트웨어 개발에서 가장 일반적으로 널리 사용되는 아키텍처이다.
  • 소프트웨어 시스템을 관심사 별로 여러 개의 계층으로 분리한 아키텍처를 뜻한다.
  • 각 계층은 어플리케이션 내에서 특정 역할과 책임이 있는데, 그들은 자신의 역할에만 집중한다. 중요한 것은 구성 요소간에 관심사가 분리(separation of concerns)되었다는 점이다.
  • 추상화된 인터페이스로만 소통한다. 소통은 자신에게 인접한 하위 계층에 요청을 보내는 방식으로 진행된다.
  • 단방향 의존성이다. 하위 계층은 상위 계층을 몰라야한다. 하위 계층은 인터페이스만 제공하고 요청만 받을 뿐이다.
  • 일반적으로 4-tier 아키텍처(Presentation Layer, Business Layer, Persistence Layer, Database Layer)이다.

Presentation Layer

  • 클라이언트의 요청을 받고 응답하는 계층
  • 어떻게 클라이언트의 요청을 처리할 것인지는 관심이 없고, 요청을 어떻게 받고 응답을 어떻게 할지에 대해 관심이 있는 계층
  • 요청에 대한 처리는 Business Layer로 전달한다.

Business Layer

  • 비즈니스 로직을 담당하는 계층
  • 클라이언트의 실제 요청에 대한 처리를 하는 부분이다.
  • 클라이언트가 웹이던 앱이던 혹은 database를 어떤 것을 사용하는 지는 관심이 없고 그저 비즈니스 로직을 처리한다.

Persistence Layer

  • 데이터베이스에 접근하는 계층이다.
  • Business의 요청 처리에 따라 데이터베이스에서 데이터를 저장, 조회, 삭제 등의 로직을 수행한다.

Database Layer

  • 데이터베이스 그 자체

 

Flow

  1. 사용자가 보고있는 화면(View)에서 사용자는 고객 정보를 요청한다.
  2. 요청은 그 요청을 처리할 수 있는 모듈이 무엇인지 알고있는 Controller로 전달된다. Controller는 해당 요청을 처리하기 위해 Business Layer의 Customer Object로 요청을 보낸다.
  3. Customer Object는 요청을 받고 비즈니스 로직을 수행하기 위한 데이터를 얻기 위해, Persistence Layer의 Customer DAO 와 Order DAO 에 요청을 보낸다.
  4. Persistence Layer 의 DAO들은 요청을 수행하기 위해 Database Layer 에 접근하여 데이터를 가져온다.
  5. 이 요청은 다시 반대로 Persistence Layer → Business Layer → Presentation Layer 로 전달되고 최종적으로 사용자에게 전달된다.

'Spring' 카테고리의 다른 글

DTO의 생성 위치(with 장점)  (2) 2025.01.19
Spring Security의 흐름과 개념 설명  (0) 2024.08.11
HTTP요청부터 응답까지의 과정  (0) 2023.09.25
IoC 컨테이너  (0) 2023.09.20