I. 아키텍처 설계에서의 BP 모음집, 아키텍처 모델의 개요
가. 아키텍처 모델(Architecture Model)의 정의
- 아키텍처 설계에서 반복적인 문제를 해결하고 아키텍처가 만족시켜야 하는 시스템 품질 달성을 위해 Best Practice를 정리한 패턴
- 뷰를 표현할 때 반복적으로 나타나는 재사용이 가능한 아키텍처의 형태
나. 아키텍처 모델의 기능
특징 |
설명 |
스키마 제시 |
- SW 시스템 구조를 체계적으로 구성하기 위한 스키마 제시 |
서브시스템 |
- 미리 정의된 서브시스템 제공 |
패턴 간 책임 명시 |
- 각 아키텍처 간 관계 및 책임을 명시 |
가이드라인 제시 |
- 패턴 간의 관계를 조직화하는 규칙, 가이드라인 제시 |
모듈단위 분해방법 제시 |
- 문제를 소프트웨어 모듈 단위로 분해하는 방법 제시 |
모듈단위 상호작용 방법 제시 |
- 분해한 소프트웨어 모듈 단위가 상호작용하는 방법 제시 |
II. 아키텍처 모델의 유형
가. 아키텍처 모델의 유형별 분류
유형 |
서브타입 |
설 명 |
데이터 중심 (Data-Centered) |
칠판형 (Blackboard) |
- 데이터의 정확성을 위한 품질특성 구현 목적 - 광범위하게 접근되는 데이터 저장소에 대한 접근과 - 갱신작업 초점 |
저장소형 (repository) |
||
데이터 흐름 (Data Flow) |
일괄 순차형 (Batch Sequence) |
- 컴포넌트들이 독립적인 프로그램으로 구성 - 한 컴포넌트가 수행 완료 후 다음 컴포넌트 수행 - 전통적 데이터 처리 응용분야에서 사용 |
파이프 필터형 (Pipes and filters) |
- 연속 컴포넌트들에 의한 데이터의 점진적 변형 구조 - 필터 : 데이터 스트림 변환기 - 파이프 : 필터 간 단순한 데이터 이동 |
|
가상머신 (Virtual Machine) |
번역기형 (Interpreter) |
- S/W 시스템의 이식성 구현에 초점 - 시스템이 구현될 H/W나 S/W에서의 Simulation 수행 |
규칙기반 시스템형 (Rule-based System) |
||
호출과 리턴 (Call and Return) |
주 프로그램과 서브루틴 (Main Program and subroutine) |
- 하나의 프로그램을 작은 단위의 서브루틴으로 구성하여 소프트웨어 시스템의 수정성, 품질특성 구현 |
원격 프로시저 호출 (Remote Procedure call) |
- SW 시스템을 네트워크로 연결된 컴퓨터 상에서 실행되는 작은 단위의 서브루틴으로 구성해 분산처리 |
|
계층식 |
- SW를 계층 단위로 분할, 각 계층은 인접 이웃과 통신 - 시스템 수정용이성, 이식성 품질특성 구현 |
나. 아키텍처 모델의 종류 상세 설명
구분 |
내용 |
개념도 |
사례 |
블랙보드 (Blackboard) |
- 해결 전략이 알려지지 않은 문제에 유용 - 블랙보드(blackboard) : 솔루션의 객체를 포함하는 구조화된 전역 메모리 - 지식 소스(knowledge source): 자체 표현을 가진 특수 모듈 - 제어 컴포넌트 (control component) : 모듈 선택, 설정 및 실행을 담당 |
음성인식 차량식별 신호해석 |
|
저장소 구조 (Repository Architecture) 스타일 |
- 서브 시스템이 단일 중앙 저장소의 자료를 접근하고 변경 - 서브시스템들이 독립적이고 중앙 자료 저장소를 이용하여 상호 대화, 여러 모듈에서 사용함 |
데이터 |
|
Data Flow (Pipes and Filters) 스타일 |
- 서브시스템이 입력 데이터를 받아 처리 -> 결과를 다른 시스템에 보내는 작업이 반복 - 서브 시스템은 필터, 사이의 연결관계는 파이프 - 각 필터는 입력 파이프에 받은 데이터의 내용과 형식만을 알고 그것을 생성한 필터에 대하여는 모름 - 파이프와 필터 구조는 변경 가능하며, 필터는 다른 필터와 교환될 수 있고 다른 목적으로 재구성 |
파이프 필터
컴파일러
처리흐름 |
|
MVC 구조 (Model/View/ Controller) 스타일 |
- 모델(Data관리), View(UI관리), 제어(상호작용 정의)로 분리 - Data를 여러 개의 View로 표현하거나, View와 Controller가 Data보다 자주 변경될 경우 적합 |
웹 어플
동일 모델에 대한 다양한 뷰
Front 페이지 |
|
클라이언트 /서버 (Client/Server) 스타일 |
- 서버는 클라이언트라 불리는 서브시스템에 서비스를 제공 - 클라이언트: 사용자로부터 입력을 받아 범위를 체크하고 데이터베이스 트랜잭션을 구동하여 필요한 데이터 수집 - 서버: 트랜잭션을 수행하고 데이터의 일관성을 보장 |
3-tier 클라이언트-서버 모델 |
|
계층 구조 (Layered) 스타일 |
- 각 서브시스템이 하나의 계층이 되어 하위층이 제공하는 서비스를 상위층의 서브시스템이 사용 - 추상화의 성질을 이용한 구조 프레젠테이션 계층 애플리케이션 계층 비즈니스 논리 계층 = 도메인 계층 (Domain layer) 데이터 접근 계층 |
데스크톱 어플리케이션
OSI 7 Layers,
TCP/IP 5 Layers |
|
마스터 슬레이브 패턴 |
- 마스터 컴포넌트는 동등한 구조를 지닌 슬레이브 컴포넌트들로 작업을 분산 - 슬레이브가 반환한 결과값에서 최종 결과값을 계산 |
하둡
분산
|
|
브로커 (Broker) 패턴 |
- 메시지 기반 분산 시스템 - 브로커는 컴포넌트 간 제어를 조정, 컴포넌트들은 원격 서비스 실행을 통해 상호 작용 - 서버는 자신의 기능들(서비스 또는 메세지)을 브로커에 전송(publish) - 클라이언트가 브로커에 서비스를 요청하면 브로커는 클라이언트를 자신의 레지스트리에 있는 적합한 서비스로 리디렉션하거나 메시지를 수신 |
Kafka
RabbitMQ
ActiveMQ |
|
Peer-To-Peer 패턴 |
- Peer는 클라이언트로서 상대 Peer에게 서비스를 요청할 수도 있고, 서버로서 각 Peer 에게 서비스를 제공할 수 있음 - Pear는 클라이언트 또는 서버 혹은 둘 모두로서 동작할 수 있으며, 시간이 지남에 따라 역할이 유동적으로 바뀔 수 있음 |
P2P 기반 파일 / 멀티미디어 공유 서비스 |
|
이벤트 버스 패턴 |
- 이벤트 소스 (event source) - 이벤트 리스너 (event listener) - 이벤트버스(event bus), 채널 - 소스는 이벤트 버스를 통해 특정 채널로 메시지를 발행(publish) - 리스너는 특정 채널에서 메시지를 구독 (subscribe) - 리스너는 이전에 구독한 채널에 발행된 메시지에 대해 알림을 받음 |
안드로이드 |
|
인터프리터 (Interpreter) |
- 특정 언어로 작성된 프로그램을 해석하는 컴포넌트를 설계 - 특정 언어로 작성된 문장 혹은 표현식이라고 하는 프로그램의 각 라인을 수행하는 방법을 지정 - 기본 아이디어는 언어의 각 기호에 대해 클래스를 만드는 것 |
SQL Parser,
통신프로토콜
정의 언어 |
|
MVVM 패턴 (Model-View-View Model) |
- Model, View, Viewmodel, Binder로 구성 - Model은 도메인 모델(데이터)를 관장하고, View는 실제 사용자에게 보이는 Presentation Layer를 담당 - Binder에 의해 View model에서 제공하는 Business logic의 결과를 사용자에게 제공 |
WPF (Windows Presentation Foundation)
Android 에서 사용 |
Ⅲ. 10 개 주요 아키텍쳐 패턴별 비교
아키텍처 패턴 |
장점 |
단점 |
계층식 (Layered) |
- 레이어 표준화 및 수준 정의 용이 - 레이어 간 독립성 (변경 영향 없음) |
- 레이어 표준화 및 수준 정의 용이 - 레이어 간 독립성 (변경 영향 없음) |
클라이언트-서버 (Client-server) |
- 클라이언트가 요청할 수 있는 일련의 서비스를 모델링 가능 |
- 프로세스간 통신으로 인한 오버헤드 발생 |
마스터-슬레이브 (Master-slave) |
- 정확성 |
- 실시간 시스템에서는 마스터-슬레이브간 레이턴 시 문제 발생 가능 - 분리 가능한 문제에만 적용 가능 |
파이프-필터 (Pipe-filter) |
- 필터 추가 용이 - 시스템 확장성 높음 - 높은 필터 재사용성 |
- 필터 병목현상 - 필터 간 데이터 이동 시 데이터 변환 오버헤드 발생. |
브로커 (Broker) |
- 객체 동적인 변경, 추가, 삭제 및 재할당이 가능 - 배포 투명성 |
- 서비스 표현에 대한 표준화 필요 |
피어 투 피어 (Peer to peer) |
- 탈중앙화된 컴퓨팅 지원 - 특정 노드 장애에 매우 강건 - 리소스 및 컴퓨팅 성능면 고확장성 |
- 서비스 품질에 대한 보장 어려움 - 낮은 보안성 - 노드의 갯수에 따라 성능이 좌우 |
이벤트-버스 (Event-bus) |
- 새로운 발행자(Publishers)와 구독자(Subscribers) 및 연결 추가 용이 - 고도로 분산화된 애플리케이션에 효과적 |
- 모든 메시지가 동일한 이벤트 버스를 통해 전달 -> 확장성 문제 발생 가능 |
모델-뷰-컨트롤러 (MVC) |
- 동일 모델에 대해 다양한 뷰 생성 가능 - 런타임에 동적으로 연결 및 해제 가능 |
- 높은 복잡성 |
블랙보드 (Blackboard) |
- 새로운 애플리케이션 추가 용이 - 데이터 공간의 구조 확장 용이 |
- 데이터 공간의 구조 변경 어려움 - 동기화 및 접근 제어가 필요 |
인터프리터 (Interpreter) |
- 최종 사용자가 프로그래밍하기 용이 - 인터프리터 프로그램 교체 용이 |
- 컴파일 언어 대비 성능 문제 |
'정보관리기술사&컴퓨터응용시스템기술사 > SW공학과 프로젝트관리' 카테고리의 다른 글
[SW 아키텍처 평가] SW Architecture 수준의 대한 품질 평가 (0) | 2021.01.29 |
---|---|
[ISO42010] SW 아키텍처의 표준 (0) | 2021.01.29 |
[MSA(Micro Service Architecture) 독립된 서비스로 시스템을 분할하는 아키텍처 (0) | 2021.01.13 |
[WBS(Work Breakdown Structure), 프로젝트 일정 및 R&R 관리 계획을 위한 Framework (0) | 2021.01.13 |
[프로젝트 관리 지식영역] 프로세스 그룹별로 진행할 활동의 그룹핑 (0) | 2021.01.12 |
댓글