Study/CS

[CS] 계층화 아키텍쳐(Layered Architecture)

Anna-Jin 2021. 12. 7. 01:18
반응형

Layered Architecture란?

중복으로 개발되는 요소를 별도의 Service 객체로 만들어 여러 컨트롤러에서 사용할 수 있게끔 하는 것이다.

 

 

 

Layer를 분리하는 이유?

https://umbum.dev/1066

 

[Spring] MVC : Controller와 Service의 책임 나누기

martinfowler.com/bliki/PresentationDomainDataLayering.html 우선, 가장 크고 중요한 개념은 layer다. 일반적으로 많이 사용하는 layer 구분 Presentation layer Service layer Business layer Persistence laye..

umbum.dev

 

  • Layer를 나눈다는 것은, 무언가를 추상화 하는 것이 그 목적이다.
  • 추상화를 잘 했다면 각기 다른 계층끼리 부품을 갈아끼우듯 변경할 수 있다.
  • 컴포넌트들의 의존 계층 관계를 깔끔하게 유지할 수 있다.

 

3Tier Architecture

프로그램 코드를 3개의 레이어로 구분하는 경우(3Tier Architecture)에는 각 레이어는 다음과 같은 기능으로 구분된다

 

 

  • Presentation Layer: Controller, pages, display beans

DispatcherServlet이 담당하는 부분 / UI

이용자가 볼 수 있도록 화면을 구성하는 로직의 집합

 

  • Application Layer = Service Layer

도메인 모델을 묶어서 소프트웨어에서 사용 가능한 핵심 작업 집합을 설정하는 계층으로 소프트웨어가 수행해야하는 작업과 소프트웨어에게 내릴 수 있는 명령을 명시한다.

 

보통 도메인 모델의 비즈니스 로직 하나를 호출하는 것만으로는 복잡한 작업을 처리할 수 없기 때문에 이러한 작업을 해주는 layer가 있어야한다. 그 작업을 해주는 것이 바로 Service layer이다.

 

단, 핵심 로직은 Business layer에 두고, Service layer는 얇게 유지하는 것이 맞다고 한다.

 

  • Data Access Layer =  Persistence Layer

데이터 저장소에 직접 접근하여 데이터를 가져오거나 저장하는 로직

++ Database에 데이터를 CRUD하는 계층

 

 

 

++ 이해 가는 대로 더 추가할 것

반응형