Layered Architecture

알파로그·2023년 10월 13일
0

✏️ 레이어드 아키택처 특징

  • 가장 흔한 아키텍처 스타일로, 모놀리식 아키텍처 중 하나이다.
    • 작고 단순한 앱, 웹에 알맞는 아키텍처이다.
  • 단순하고 대중적이면서 비용도 적게 들어 사실상 표준 아키텍처라고 할 수 있다.
    • 하지만 규모가 커질수록 유지 보수, 민첩성, 시험성, 배포성 같은 특징이 점점 나빠진다.

✏️ 레이어드 아키택처의 구조

📍 레이어 분리

  • 내부 컴포넌트는 논리적으로 수평한 레이어들로 구성된다.
  • 각 레이어는 어플리케이션에서 프레젠테이션 로직, 비즈니스 로직 등의 주어진 역할을 수행한다.
  • 일반적으로 프레젠테이션, 비즈니스, 퍼시스턴스, 데이터베이스의 4개 표준 레이어로 구성한다.
  • 물론 규모에 따라 병합하기도 하며, 그 이상의 레이어로 구성하기도 한다.
 	                         Request  Response
		 	                        ↓         ↑
1. Persentation Layer         Controller
		 	                        ↓         ↑
2. Business Layer               Service
		 	                        ↓         ↑
3. Persistence Layer          Persistance
		 	                        ↓         ↑
4. Database Layer                 DB

📍 관심사 분리

  • 중요한 특징은 관심사의 분리이다.
    • 예를 들어 비즈니스 레이어는 Data 를 어떻게 받아야 하는지,
      화면에 어떻게 보여줄지 전혀 관여하지 않는다.
    • 즉, 기술적인 부분에 집중할 수 있지만,
      변화에 반응하는 민첩성은 떨어진다는 단점이 있다.

📍 도메인 변경의 어려움

  • 도메인 분할 아키텍처와 반대로 기술 역할에 따라 묶는다.
  • 반대로 이야기 하면 어떤 도메인은 모든 레이어에 분산되게 된다.
    • 따라서 이 도메인을 변경하는것은 쉽지 않다.
    • 예를들어 Member 도메인을 변경하려면 Member 의 모든 레이어 계층을 변경해야한다.
  • 도메인 변경의 어려움 때문에 도메인 주도 설계방식 (DDD) 와 잘 맞지 않는다는 특징이 있다.

📍 레이어 격리

  • 각 레이어는 폐쇄 또는 개방 상태이다.
  • 폐쇄 레이어란 요청이 상위 레이어에서 하위 레이어로 이동하므로, 중간에 어떤 레이어도 너뛸 수 없다.
    • 결국 컴포넌트간의 상호 의존도가 높아진다.

📍 싱크홀 안티 패턴

  • 아키텍처 싱크홀 안티 패턴을 조심해야 한다.
    • 오쳥이 한 레이어에서 다른 레이어로 이동할 때 각 레이어가 아무 비즈니스 로직도 처리하지 않고 그냥 통과하는 것을 뜻함
  • 이런 흐름은 불필요한 객체 초기화 및 처리를 빈번하게 유발하고,
    쓸데없이 메모리를 소모해 성능에도 부정적인 영향을 준다.
    - 하지만 싱크홀 안티 패턴이 없을 순 없기 때문에 전체 요청의 20% 이하로 유지한다면 양호한 수준으로 평가한다.
profile
잘못된 내용 PR 환영

0개의 댓글