소프트웨어 아키텍처 - 12(Layered Architecture Style)

박승현·2023년 10월 8일
0

아키텍처

목록 보기
12/30
post-thumbnail

Layered Architecture Style


  • 개요
    • 여러개의 상위 및 하위 레이어로 분해
    • 각 레이어는 패키지로 캡슐화된 관련 클래스 그룹으로 구성, 각 레이어는 시스템 내에서 고유한 역할을 수행
  • 구조
    • 레이어 i+1로의 요청은 레이어 i의 인터페이스를 통해 레이어 i의 에서 제공하는 서비스를 호출
    • 각 레이어의 인터페이스는 현재 레이어의 서비스 구현과 아래 레이어의 인터페이스를 갭슐화
    • 상위 레이어에서 하위 레이어로의 요청은 메소드 호출을 통해 이루어지며 응답은 메소드 반환을 통해 이루어짐
    • ex)
  • Layered 아키텍처의 각 레이어는 프로그램 내에서 특정한 역할과 책임을 가짐
  • 각 레이어는 추상화를 형성
    • 구성 요소간의 관심사 분리
    • 격리 레이어 개념
  • 아키텍처의 한 레이어에서 수행된 변경은 일반적으로 다른 레이어의 구성 요소에 영향을 미치거나 주지 않는다
  • 한 고객의 정보를 요청할때의 과정

구조 정리

  • 각 레이어는 상위 레이어에만 서비스를 제공 바로 아래 레이어에서만 서비스를 요청
  • 특별한 경우 상위 레이어가 더 멀리 아래에 있는 레이어에서 서비스를 받고, 하위 레이어가 상위 레이어에서 서비스를 받는 브리치 연결을 사용가능
  • 높은 레이어는 더 일반적이거나 응용 서비스 중심, 더 추상적이고 낮은 레이어는 더 구체적인 유틸리티 유형의 서비스와 공통 서비스 제공

사용자 상호작용이 포함된 Layered 아키텍처

  • 실선은 서비스 요청, 점선은 응답
  • 레이어가 높아질수록 서비스가 추상화되고 상위 레이어에서는 인터페이스만 볼수 있고 구체적인 구현 내용은 볼 수 없음

구현

  • 각 레이어를 jar파일과 같은 컴포넌트 형식으로 배포할 수 있음(패키지의 구성 요소로 배포되는 압축 파일)
  • jar파일에는 하위 레벨에서 제공된 서비스 클래스와 동일한 레이어에서 제공된 다른 클래스가 포함될 수 있다
  • jar파일 내의 모든 클래스에 엑세스 가능(클래스 경로 환경 변수에 있을 경우)


Two layers software system

  • Interaction layer
    • 클라이언트에게 사용자 인터페이스 제공
    • 요청 수신
    • 요청의 유효성 검사, Processing레이어로 전달
    • 클라이언트에게 응답
  • Processing layer
    • 전달된 요청 수신
    • 로직 처리
    • 데이터베이스 엑세스
    • 결과를 상위 레이어에 반환
    • 상위 레이어가 GUI인터페이스를 갖고 있기 떄문에 상위 레이어가 클라이언트에게 응답하도록 함

Class diagram for layered architecture


적용 사례

  • 프로그램별 구성 요소와 프로그램의 일반 서비스를 제공하는 플랫폼별 구성요소로 나눌 수 있는 모든 시스템
  • 핵심 서비스, 중요한 서비스, 사용자 인터페이스 서비스 등의 항목 사이에 명확한 구분이 있는 응용 프로그램.
  • 서로 관련이 깊은 여러 클래스가 있어 다른 사람들에게 서비스를 제공하기 위해 패키지로 묶을 수 있는 응용 프로그램

장점과 단점

  • 장점
    • 점차적으로 추상화 수준을 높일 수 있음
    • 상위 레이어에서 하위 레이어로의 독립성 향상. 하위 레이어 서비스의 변경이 인터페이스가 변경되지 않는 한 상위 레이어에 영향을 미치지 않음.
    • 향상된 유연성: 표준 인터페이스와 그 구현을 분리하기 때문에 교환 가능성과 재사용성이 향상됨.
    • 컴포넌트 기반 기술은 계층화된 아키텍처를 구현하기에 적합한 기술이며, 이로 인해 새로운 컴포넌트의 플러그 앤 플레이를 시스템에서 훨씬 쉽게 허용할 수 있음.
    • 이식성 촉진: 각 레이어는 독립적으로 배포될 수 있는 추상적인 기계가 될 수 있음.
  • 단점
    • 클라이언트의 요청 및 응답이 여러 레이어를 통과해야 하기 때문에 런타임 성능이 낮을 수 있음
    • 레이어간의 통신의 위반이 데드락을 일으킬수 있고 브리지 연결은 높은 결합도를 초래할 수 있음
    • 한 레이어에서의 결함은 모든 호출 레이어로 전파되어야 함
profile
KMU SW

0개의 댓글