레이어드 아키텍처

Siwoo Pak·2021년 12월 29일
0

디자인패턴

목록 보기
1/1

1.레이어드 아키텍처란?

  • 특정 추상 레벨에 있는 서브태스크들끼리 서로 묶어서 하나의 그룹으로 분류하는 소프트웨어 아키텍쳐 스타일
    • 하위 수준의 이슈를 상위 수준에 이슈와 분리시켜 소프트웨어의 재사용성을 높여주는 패턴

2. 계층형 아키텍쳐 스타일 예시

  • 레이어드 아키텍처는 하위 모듈들의 그룹으로 나눌 수 있는 구조화된 프로그램에서 사용할 수 잇음.

  • 각 모듈은 특정한 수준의 추상화를 제공함. 이 때 상위 계층의 추상화 수준은 일반적으로 다음과 같음

    • Presentation Layer
    • Application Layer
    • Business logic Layer
    • Data Access Layer
  • Presentation Layer

    • 표현계층. UI계층으로도 불림
    • 클라이언트에게 표현해주는 단계
    • request를 직접 받는다.
  • Application Layer

    • 서비스 계층으로도 불림
    • 상호작용하는 서비스에 필요한 정보를 전달하는 레이어
  • Business Layer

    • 도메인 계층으로도 불림
    • 실제 시스템의 로직이 구현되어 있는 레이어라고 볼 수 있음.
  • Data Access Layer

    • 영속 계층이라고도 불림.
    • 데이터베이스 관련 로직들을 처리하는 레이어
  • Nestjs의 경우 3티어 아키텍쳐.

    • 프리젠테이션, 애플리케이션 레이어를 처리하는 부분이 controller.ts.
    • 비즈니스 레이어를 해당하는 부분이 service.ts
    • 데이터 엑세스 레이어를 처리하는 부분이 repository.ts

3. 장/단점

  • 장점
    • 계층별 연동을 한정할 수 있어 느슨한 결합 원칙을 지킬 수 있음.
    • 변화에 대한 영향력을 한정할 수 잇어 코딩이나 테스트를 계층별로 진행할 수 있음
    • 인터페이스 정의가 잘 되어 있다면 계층을 통째로 교체할 수 있음.
    • 모듈의 재사용성을 높여 유지보수성이나 이식성이 좋은 패턴임.
  • 단점
    • 계층의 원칙을 지키기 위해 각 계층을 모두 거쳐야하므로 성능 측면에 불이익을 받을 수 있음.
    • 계층을 구분하기 업려고 잘못 구분할 경우 설계 수정이 빈번히 발생할 수 있음
    • 계층의 적절한 개수 및 규모를 정의하는 것이 어려움.

4. 설계순서


1. 계층별로 모듈을 묶는 추상 기준의 정의
2. 추상 기준에 따라 계층을 몇 레벨로 나눌지 결정
3. 계층마다 역할 및 테스크 부여
4. 계층별 제공서비스를 상세히 정의
5. 계층별 상세 인터페이스 정의
6. 시스템 기능이 계층에서 동작하는 것이 가능한지 확인
(예: 유스케이스 시나리오를 시뮬레이션 하는 방식)
7. 계층 내부에 대한 구조 정의
8. 인접합 계층 간의 동신 방식 정의
9. 예외 처리 방식을 정의

profile
'하루를 참고 인내하면 열흘을 벌 수 있고 사흘을 참고 견디면 30일을, 30일을 견디면 3년을 벌 수 있다.'

0개의 댓글