본문 바로가기
정보관리기술사&컴퓨터응용시스템기술사/SW공학과 프로젝트관리

[아키텍처 모델] 아키텍처 설계에서의 BP 모음집

by 별프로 2021. 1. 30.
반응형

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 시스템을 네트워크로 연결된 컴퓨터 상에서 실행되는 작은 단위의 서브루틴으로 구성해 분산처리

계층식
(Layered)

- 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)

스타일

- 각 서브시스템이 하나의 계층이 되어 하위층이 제공하는 서비스를 상위층의 서브시스템이 사용

- 추상화의 성질을 이용한 구조

프레젠테이션 계층 
(Presentation layer)

애플리케이션 계층 
(Application layer)

비즈니스 논리 계층 
(Business logic layer)

 = 도메인 계층 (Domain layer)

데이터 접근 계층
(Data access layer)
 =
영속 계층 (Persistence 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)

- 최종 사용자가 프로그래밍하기 용이

- 인터프리터 프로그램 교체 용이

- 컴파일 언어 대비 성능 문제

반응형

댓글