레이어드 아키텍쳐 패턴에서의 구성 요소(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: 이는 요청이 몇가지의 레이어를 거쳐서 통과되어야하는 상황에서 각 레이어에 거의 로직이 존재하지 않는 경우를 말한다. 한마디로 이유없이 존재하는 레이어가 있는 경우를 말한다. 이는 성능에 불이익을 줄 수 있다.