[TIL] 계층형 아키텍쳐 (Layered Architecture)

Jene Hojin Choi·2021년 4월 4일
2
post-thumbnail

레이어드 아키텍쳐( Layered Architecture)

보편적인 구조

레이어드 아키텍쳐 패턴에서의 구성 요소(component)들은 각 레이어에 수평적으로 구조화되어있다. 레이어드 아키텍처 패턴은 정확히 한 패턴에 몇개의 어떤 레이어가 있어야 하는지를 명시하지 않지만, 가장 보편적인 레이어드 아키텍처 패턴은 4개의 레이어로 구성되어있다; presentation, business, persistence, database이다.

  • Presentation layer: UI, 브라우저에서의 유저와의 통신 로직을 다룸.
  • Business layer: 요청에 따른 비즈니스 로직을 다룸.
  • Persistence layer: DAO(Data Access Object) , ORM과 관련된 데이터베이스에 접근해서 데이터를 저장, 수정하는 함수 로직을 다룸.
  • Database layer: 데이터가 다 저장되어있는 곳. 데이터베이스.

예를 들어, 아래와 같은 레이어드 아키텍처가 존재할 수 있다.

특징

출처: https://12bme.tistory.com/505

계층화의 핵심 원칙은 한 계층의 모든 요소는 오직 같은 계층에 존재하는 다른 요소나 계층상 "아래"에 위치한 요소에만 의존한다는 것이다. 위로 거슬러 올라가는 의사소통은 반드시 간접적인 메커니즘을 거쳐야 한다.


기준

위에서 말했듯, layered architecture에는 몇 가지의 레이어가 존재해야하는지에 대한 기준이 없다. 따라서 범위가 더 넓은 비즈니스를 위해서는 아래 사진에서 볼 수 있듯 Business layer 와 Persistence layer 사이에 추가적으로 Service layer(혹은 Application layer)가 존재할 수 있다.


장점

  • 시스템 분석이 용이함
  • 변화에 대한 영향력을 한정할 수 있어 코딩이나 테스트를 계층별로 진행할 수 있음
  • 계층간 구조를 나누어 재사용성이 높음

단점

  • 계층을 구분하기 어렵고 잘못 구분할 경우 수정이 빈번할 수 있음
  • 또한 설계시 계층의 개수 및 규모를 정하기 어려움

설계시 주의할 점

어떤 아키텍처 패턴을 골라야할지 모를때에는 레이어드 아키텍처가 대체적으로는 좋은 선택이 될 수 있다. 하지만 주의해야하는 점들이 몇가지 있다.

architecture sinkhole anti-pattern: 이는 요청이 몇가지의 레이어를 거쳐서 통과되어야하는 상황에서 각 레이어에 거의 로직이 존재하지 않는 경우를 말한다. 한마디로 이유없이 존재하는 레이어가 있는 경우를 말한다. 이는 성능에 불이익을 줄 수 있다.


References

0개의 댓글