✏️ 레이어드 아키택처 특징
- 가장 흔한 아키텍처 스타일로, 모놀리식 아키텍처 중 하나이다.
- 단순하고 대중적이면서 비용도 적게 들어 사실상 표준 아키텍처라고 할 수 있다.
- 하지만 규모가 커질수록 유지 보수, 민첩성, 시험성, 배포성 같은 특징이 점점 나빠진다.
✏️ 레이어드 아키택처의 구조
📍 레이어 분리
- 내부 컴포넌트는 논리적으로 수평한 레이어들로 구성된다.
- 각 레이어는 어플리케이션에서 프레젠테이션 로직, 비즈니스 로직 등의 주어진 역할을 수행한다.
- 일반적으로 프레젠테이션, 비즈니스, 퍼시스턴스, 데이터베이스의 4개 표준 레이어로 구성한다.
- 물론 규모에 따라 병합하기도 하며, 그 이상의 레이어로 구성하기도 한다.
Request Response
↓ ↑
1. Persentation Layer Controller
↓ ↑
2. Business Layer Service
↓ ↑
3. Persistence Layer Persistance
↓ ↑
4. Database Layer DB
📍 관심사 분리
- 중요한 특징은 관심사의 분리이다.
- 예를 들어 비즈니스 레이어는 Data 를 어떻게 받아야 하는지,
화면에 어떻게 보여줄지 전혀 관여하지 않는다.
- 즉, 기술적인 부분에 집중할 수 있지만,
변화에 반응하는 민첩성은 떨어진다는 단점이 있다.
📍 도메인 변경의 어려움
- 도메인 분할 아키텍처와 반대로 기술 역할에 따라 묶는다.
- 반대로 이야기 하면 어떤 도메인은 모든 레이어에 분산되게 된다.
- 따라서 이 도메인을 변경하는것은 쉽지 않다.
- 예를들어 Member 도메인을 변경하려면 Member 의 모든 레이어 계층을 변경해야한다.
- 도메인 변경의 어려움 때문에 도메인 주도 설계방식 (DDD) 와 잘 맞지 않는다는 특징이 있다.
📍 레이어 격리
- 각 레이어는 폐쇄 또는 개방 상태이다.
- 폐쇄 레이어란 요청이 상위 레이어에서 하위 레이어로 이동하므로, 중간에 어떤 레이어도 너뛸 수 없다.
📍 싱크홀 안티 패턴
- 아키텍처 싱크홀 안티 패턴을 조심해야 한다.
- 오쳥이 한 레이어에서 다른 레이어로 이동할 때 각 레이어가 아무 비즈니스 로직도 처리하지 않고 그냥 통과하는 것을 뜻함
- 이런 흐름은 불필요한 객체 초기화 및 처리를 빈번하게 유발하고,
쓸데없이 메모리를 소모해 성능에도 부정적인 영향을 준다.
- 하지만 싱크홀 안티 패턴이 없을 순 없기 때문에 전체 요청의 20% 이하로 유지한다면 양호한 수준으로 평가한다.