Skip to content

Latest commit

 

History

History
53 lines (34 loc) · 2.88 KB

layered-architecture.md

File metadata and controls

53 lines (34 loc) · 2.88 KB

Layered Architecture (계층형 아키텍처)

  • 소프트웨어 개발에 있어서 가장 일반적으로 널리 사용되는 아키텍처
  • 구성되는 계층의 숫자에 따라 N 계층 아키텍처라고 한다.

4-Tier Layered Architecture

layered-architecture

Presentation Layer

  • 사용자에게 데이터를 전달하는 정보를 표시하는 것에 관심사를 둔다.
  • 비즈니스 로직이 어떻게 수행되는지 알 필요가 없다.
  • 대표적인 구성요소는 View, Controller가 있다.

Business Layer

  • 비즈니스 로직을 수행하는 것에 관심사를 둔다.
  • 데이터를 어떻게 출력하는지, 어디서 데이터를 가져오는지에 대해서 알 필요가 없다.
  • 대표적인 구성요소는 Service, Domain Model이 있고 때에 따라서 별도의 계층으로 분리한다.

Persistence Layer

  • 애플리케이션의 영속성을 구현하기 위해 데이터를 가져오거나 다루는 데에 있어 관심사를 둔다.
  • 대표적인 구성요소는 Repository, DAO가 있다.

Database Layer

  • 데이터베이스가 위치한 계층을 말한다.

닫힌 계층

layered-architecture2

  • 각 계층은 닫혀있고 이것은 계층형 아키텍처 패턴의 중요한 개념이다.
  • 사진에서 보면 각 계층을 통과하기 위해서는 이전 계층을 먼저 거쳐서 통과해야 한다.
  • 그 결과 Presentation 계층이 Persistence 계층을 바로 통과하지 못하는 것에 대해 매우 비효율적으로 보인다.
  • 해답은 격리 라는 핵심 개념에 있다.
  • 각 계층은 다른 계층의 변화에 대해서 영향을 최소화해야 한다. 즉, 격리되어 있으면 변화에 있어서 주변에 영향을 적게 주게 된다.
  • 만약 Presentation 계층과 Business 계층이 Persistence 계층에 접근하게 되면 Persistence의 변경에 해당 두 계층이 모두 영향을 받게 되므로 상호 밀접한 애플리케이션을 만들게 된다.
  • 결과적으로 유지보수 비용이 커진다.

열린 계층

layered-architecture3

  • Service 계층이 추가되었고 열려있다.
  • 열려있다는 소리는 Service 계층을 우회해서 바로 Persistence 계층에 접근할 수 있는 것을 의미한다.
  • 필요에 따라 우회할 수 있도록 설계할 수 있고 변경 가능성을 잘 고려한다면 좋은 생산성도 가질 수 있다.

Reference