개요

  • 레이어 (Layer) = 계층
  • 가장 흔히 사용되는 패턴으로, Multi-Tier 아키텍처 패턴이라고도 한다.
  • 시스템을 계층화하고 하위 레이어가 제공하는 기능을 상위 레이어가 이용함으로써 각 레이어의 구조를 단순화한다는 발상에서 시작
  • 코드를 논리적인 부분 혹은 역할에 따라 독립된 모듈로 나누어 구성
  • 각 모듈이 서로의 의존도에 따라 층층히 쌓듯이 연결되어 전체의 시스템을 구현하는 구조 (레이어 형태)
  • 각 레이어는 해당 레이어가 의존하는 직접적인 하위 레이어만 알면 됨

장점

  • 하나의 모듈을 업데이트 할 때 다른 모듈이 받는 영향을 최소화할 수 있다.
  • 각 레이어의 책임을 명확히 할 수 있다.
  • 관심사의 분리
    • 각 개별 구성 요소의 단일 책임을 보장 (종속성 저하)
  • 개발의 용이성
    • 잘 알려져 있고, 구현하기 어려운 패턴이 아님
  • 테스트가 쉬움
    • 모든 Layer가 개별적으로 단위 테스트로 커버될 수 있고 특정 Layer에 속한 구성요소도 분리되어 있어 개별적 테스트가 가능
  • 격리
    • 각 Layer가 다른 Layer와 독립적이어서 변경 사항이 다른 Layer로 영향을 끼치지 않는다.

단점

  • 확장성
    • 애플리케이션 복잡도가 증가하고, 프로젝트에 더 많은 기능을 추가해야 하는 경우 확장 비용이 크다 (모놀리식 구현 경향)
  • 상호 의존성
    • 하나의 계층이 데이터 수신을 위해 상위 Layer에 의존하기에 상호 의존성 존재
  • 배포
    • 특정 Layer에 대한 변경은 전체 시스템을 재배포해야 함을 의미
    • 큰 애플리케이션의 경우 더 문제
  • 성능
    • 비즈니스 요청을 이행하기 위해 아키텍처의 여러 레이어를 거쳐야 하는 비효율성
    • 고성능 애플리케이션에 적합하지 않음
    • 병렬처리가 불가능

레이어 구조

  • 3계층 Layered Pattern
    • Presentation Layer
      • 해당 시스템을 사용하는 사용자 혹은 클라이언트 시스템과 직접적으로 연결
      • 백엔드 API에서 엔드포인트에 해당
      • API의 엔드포인트들을 정의하고, 전송된 HTTP Repuese를 읽어 들이는 로직 구현
      • 실제 시스템이 구현하는 비즈니스 로직은 다음 레이어로 넘김 (본인의 역할만 수행)
      • 응용프로그램에서 사용자와 상호작용하는 인터페이스(UI)로 데이터를 표시
      • 서버와의 통신을 처리
    • Application Layer
      • 사용자와 상호작용하면서 수집된 데이터를 처리
      • API를 통해 Data Layer와 통신
    • Data Layer
      • Application Layer에서 처리된 데이터를 저장하고 관리

  • 4계층 Layered Pattern
    • Application Layer를 Business/Persistence Layer로 세분화
    • Presentation Layer
    • Business Layer (= Service Layer)
      • 실제 시스템이 구현해야 하는 비즈니스 로직 구현
      • 회사의 비즈니스 운영하기 위해 필요한 로직
      • 핵심 로직 구현, 데이터 적합성 검증 (비밀번호 Validation 등)
    • Persistence Layer
      • 데이터베이스와 관련된 로직을 구현
      • Business Layer에서 필요한 데이터 생성, 수정, 읽기 등을 처리
      • 실제로 DB에서 데이터를 저장, 수정, 읽기를 하는 역할
    • Database Layer

레이어 사용 규칙

  • 모듈은 반드시 하나의 레이어에만 존재해야 한다.
  • 상위 레이어는 하위 레이어를 이용 가능해야 한다.
  • 의존 방향은 한 방향으로 흘러야 한다. (상→하)

MVC 패턴과의 차이점

  • Layered 패턴은 관심사를 분리해서 Layer들로 나누고, Layer 내부에 관련되거나 유사한 구성 요소들ㅇ르 배치함으로써 Layer간의 종속성을 저하시켜 격리를 통한 이점을 만들어내는 아키텍처이다.
  • Layer의 내부 구성 요소가 되는 것이 MVC 패턴이다.

 

출처 :  https://velog.io/@jhp1115/3-tier-Layered-Architecture와-MVC

 

  • Model
    • 데이터와 관련된 부분
    • 데이터와 비즈니스 로직을 관리
    • = 데이터를 처리하는 Business Layer
  • View
    • 사용자에게 보여지는 부분
    • = 사용자와의 상호작용을 통해 정보를 표시하고 가져오는 Presentation Layer
  • Controller
    • 사용자의 입력된 Domain을 DTO로 변환, 처리
    • Model과 View를 이어주는 역할
    • = Presentation Layer

References

[패턴] 자주 사용되는 아키텍처패턴 4가지

 

[패턴] 자주 사용되는 아키텍처패턴 4가지

1. 레이어 패턴(Layer Pattern) 가장 흔히 사용되는 패턴으로 시스템을 계층화하고 하위 레이어가 제공하는 기능을 상위 레이어가 이용함으로써 각 레이어의 구조를 단순화한다는 발상에서 시작된

blog.tetedo.com

[Architecture] Layered Architecture(feat. MVC 패턴)

 

[Architecture] Layered Architecture(feat. MVC 패턴)

❓Software Architecture소프트웨어 아키텍처는 모든 소프트웨어 시스템의 기본 구조를 말하며 시스템이 제대로 기능하고 작동하도록 하는 모든 측면을 말한다.소프트웨어 시스템에서의 아키텍처는

gnuoyus.tistory.com

[Architecture] Layered Architecture(feat. MVC 패턴)

 

[Architecture] Layered Architecture(feat. MVC 패턴)

❓Software Architecture소프트웨어 아키텍처는 모든 소프트웨어 시스템의 기본 구조를 말하며 시스템이 제대로 기능하고 작동하도록 하는 모든 측면을 말한다.소프트웨어 시스템에서의 아키텍처는

gnuoyus.tistory.com

Layered Pattern

 

Layered Pattern

코드의 구조를 구상할 때 고려해야할 점은 여러가지다. 또, 코드 구조의 하나하나가 모두 중요하기 때문에, 매번 좋은 코드의 구조를 생각해 내기란 쉽지 않습니다. 다행히도 “코드의 구조를

velog.io

 

+ Recent posts