3eung_h10n.log
로그인
3eung_h10n.log
로그인
소프트웨어 아키텍처 - 12(Layered Architecture Style)
박승현
·
2023년 10월 8일
팔로우
0
0
아키텍처
목록 보기
12/30
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
적용 사례
프로그램별 구성 요소와 프로그램의 일반 서비스를 제공하는 플랫폼별 구성요소로 나눌 수 있는 모든 시스템
핵심 서비스, 중요한 서비스, 사용자 인터페이스 서비스 등의 항목 사이에 명확한 구분이 있는 응용 프로그램.
서로 관련이 깊은 여러 클래스가 있어 다른 사람들에게 서비스를 제공하기 위해 패키지로 묶을 수 있는 응용 프로그램
장점과 단점
장점
점차적으로 추상화 수준을 높일 수 있음
상위 레이어에서 하위 레이어로의 독립성 향상. 하위 레이어 서비스의 변경이 인터페이스가 변경되지 않는 한 상위 레이어에 영향을 미치지 않음.
향상된 유연성: 표준 인터페이스와 그 구현을 분리하기 때문에 교환 가능성과 재사용성이 향상됨.
컴포넌트 기반 기술은 계층화된 아키텍처를 구현하기에 적합한 기술이며, 이로 인해 새로운 컴포넌트의 플러그 앤 플레이를 시스템에서 훨씬 쉽게 허용할 수 있음.
이식성 촉진: 각 레이어는 독립적으로 배포될 수 있는 추상적인 기계가 될 수 있음.
단점
클라이언트의 요청 및 응답이 여러 레이어를 통과해야 하기 때문에 런타임 성능이 낮을 수 있음
레이어간의 통신의 위반이 데드락을 일으킬수 있고 브리지 연결은 높은 결합도를 초래할 수 있음
한 레이어에서의 결함은 모든 호출 레이어로 전파되어야 함
박승현
KMU SW
팔로우
이전 포스트
소프트웨어 아키텍처 - 11(MS-HDFS)
다음 포스트
소프트웨어 아키텍처 - 13(Virtual Machine Architecture Style)
0개의 댓글
댓글 작성