본문 바로가기
IT

소프트웨어 아키텍처 스타일 알아보기 : 개념, 특징, 스키마, 유형, 예시

by 파이프라인만들기 2023. 2. 1.

새로운 프로그램, 시스템, 애플리케이션을 개발할 때, 아무런 자료 없이 새로 설계하고 개발하는 것은 매우 어렵습니다. 이런 어려움을 해결하고, 업무 생산성을 높이기 위해 검증된 설계 방법과 디자인 결정의 집합체가 소프트웨어 아키텍처 스타일입니다.

 

소프트웨어 아키텍처 스타일의 개념과 특징, 스키마에 대해 알아보고, 아키텍처 스타일의 유형과 예시에 대해서 정리해 보겠습니다.

 

글의 순서는 아래와 같습니다.

  • 소프트웨어 아키텍처 스타일 개념, 특징, 스키마
  • 소프트웨어 아키텍처 스타일 유형
  • 소프트웨어 아키텍처 스타일 예시

 

소프트웨어 아키텍처 스타일 개념, 특징, 스키마

소프트웨어 아키텍처 스타일은 아키텍처 설계에서 반복되는 문제를 해결하고, 아키텍처가 품질 속성 목표치를 달성할 수 있는 방법을 정리한 아키텍처 디자인 결정입니다. 그리고 아래와 같은 내용들이 포함되어 있습니다.

  • 소프트웨어의 구성요소와 구성요소 간 관계
  • 구성요소들끼리 상호작용할 때 작용하는 제약사항
  • 개발 환경 및 구축 예정 소프트웨어에 특화된 아키텍처

 

소프트웨어 아키텍처 스타일은 아래와 같은 아키텍처 디자인 특징을 갖습니다.

  • 주어진 개발 환경에서 적용 가능한 아키텍처 디자인
  • 주어진 환경 및 상황에서 특정 시스템에 적합하게 적용 가능한 아키텍처 디자인
  • 시스템의 유익한 품질 속성을 이끌어낼 수 있는 아키텍처 디자인 

 

아키텍처 스타일은 주어진 개발환경과 구축하고자 하는 소프트웨어/시스템에 적합한  Best Practice입니다. 검증된 패턴을 사용하기 때문에 최적의 아키텍처를 제시할 수 있고, 이해관계자들로 부터 아키텍처의 신뢰성을 얻을 수 있습니다.

 

추가로 개발 환경 및 소프트웨어가 가지는 문제점, 제약, 제한 사항, 이슈 사항 등을 사전에 인지할 수 있습니다. 그리고 특정 종류의 시스템에 특화된 설계 지식 적용이 가능하며, 해당 스타일에 특화된 Tool을 활용해 시스템을 구축할 수 있습니다.

 

소프트웨어 아키텍처 스타일의 스키마는 4가지가 있습니다.

  1. A set of element types : 구성 요소들
  2. A topological layout of elements : 구성 요소들의 관계와 구성방식, 요소들 간의 내부 관계 표현
  3. A set of semantic constraints : 구성 요소들의 정확한 의미와 한계, 추상적 개념의 정의와 구체적 제약 
  4. A set of interaction mechanism 구성 방식에 맞춰 구성 요소들이 상호작용하는 메커니즘

 

소프트웨어 아키텍처 스타일 유형

소프트웨어 아키텍처 스타일 유형과 종류는 다음과 같습니다.

  • Data Flow 데이터 흐름 : Batch Sequential, Pipe and Filters
  • Data-Centered 데이터 중심 : Repository, Blackboard
  • Virtual Machine 가상머신 : Interpreter, Rule-Based System
  • Call-Return 호출과 리턴 : Main Program and Subroutine, Layered, Object-Oriented
  • Independent Components 독립적인 구성요소 : Communicating Processes, Event Systems, Implicit Invocation, Explicit Invocation

아키텍처 스타일 유형 목록
아키텍처 스타일 유형 목록

 

Batch Sequential 일괄 순차형 아키텍처 스타일 특징

  • 컴포넌트들이 독립적인 프로그램으로 구성
  • 한 컴포넌트가 수행 완료 후 다음 컴포넌트 수행
  • 전통적인 데이터 처리 분야에서 사용

 

Pipe and Filters 파이프 필터형 아키텍처 스타일 특징

  • 연속된 컴포넌트들에 의해 데이터의 점진적 변형 구조
  • 필터 : 데이터 스트리밍 변환기
  • 파이프 : 필터 간 단순 데이터 이동
  • 서브 시스템이 입력된 데이터를 받아서 처리하고 결과를 다른 시스템에 보내는 작업을 반복
  • 서브 시스템은 필러이고, 시스템 간 연결 관계는 파이프
  • 각 필터는 입력 파이프로 부터 받은 데이터의 내용과 형식만 확인 가능하고, 그것을 생성한 필터에 대해서는 알 수 없음
  • 파이프와 필터의 구조는 변경 가능하며, 필터는 다른 필터와 교환 가능하고, 다른 목적으로 재구성 가능
  • 적용 예시 : 파이프 필터, 컴파일러, 처리 흐름 등

 

Repository 저장소형 아키텍처 스타일 특징

  • 서브 시스템이 단일 중앙 저장소의 자료를 접근하고 변경
  • 서브 시스템들이 독립적이고, 중앙 자료 저장소를 이용해 서로 통신
  • 여러 모듈에서 사용 가능
  • 적용 예시 : 데이터베이스 시스템

 

Balckboard 칠판형 아키텍처 스타일 특징

  • 해결 전략이 알려지지 않은 아키텍처, 시스템 문제에 유용
  • 솔루션이 객체를 포함하는 구조화된 전역 메모리
  • Knowledge Source : 자체 표현을 가진 특수 모듈
  • Control Component : 모듈 선택, 설정, 실행 담당
  • 적용 예시 : 음성 인식, 차량 식별, 신호 해석

 

Interpreter 번역기형 아키텍처 스타일 특징

  • 특정 언어로 작성된 프로그램을 해석하는 컴포넌트를 설계
  • 특정 언어로 작성된 문장 혹은 표현식이라고 하는 프로그램의 각 라인을 수행하는 방법을 지정
  • 적용 예시 : SQL Parser, 통신 프로토콜, 정의 언어

 

Main Program and Subroutine  아키텍처 스타일 특징

  • 프로그램을 작은 단위의 서브 루틴으로 구성해 소프트웨어 시스템의 변경 용이성과 품질 특성 구현
  • Master Component는 동등한 구조를 지닌 슬레이브 컴포넌트들로 작업을 분산
  • 슬레이브가 반환한 결괏값에서 최종 결괏값을 계산
  • 적용 예시 : Hadooop 분산 시스템

 

Layered 계층형 아키텍처 스타일 특징

  • 추상화 성질을 이용한 구조
  • 소프트웨어를 계층 단위로 분할
  • 각 계층은 인접 이웃과 통신
  • 시스템 변경 용이성, 이식성 등의 품질 특성 구현
  • 각 서브시스템이 하나의 계층이 되고 상위 계층의 서브시스템이 하위 계층이 제공하는 서비스를 사용
  • Presentation Layer, Application Layer, Business Logic Layer(도메인 계층), Data Access Layer로 구성
  • 적용 예시 : 데스크톱 애플리케이션, OSI 7 계층, TCP/IP 5 계층

 

Event-Bus 이벤트 버스형 아키텍처 스타일 특징

  • Event Source, Event Listener, Event Bus, Channel로 구성
  • Event Source는 Event Bus를 통해 특정 채널로 메시지 발행
  • Event Listener는 특정 채널의 메시지 구독
  • Event Listener는 구독한 채널에서 발행한 메시지 알림 수신
  • 적용 예시 : Android

 

소프트웨어 아키텍처 스타일 예시

대표적으로 사용되는 아키텍처 스타일에는 다음과 같은 것들이 있습니다.

  • Client-Sever Style
  • Event Based Style
  • Shared Data Style
  • Peer to Peer Style

 

Client Server Style은 서비스(또는 데이터) 생산자와 소비자 간의 결합을 분리한 비대칭적 통신 아키텍처입니다. 클라이언트는 통신의 시작과 서비스 요청 및 사용을 하고, 서버는 하나 이상의 인터페이스를 통해 요청받은 서비스, 기능, 자원을 제공합니다.

Cleint-Server Style
Cleint-Server Style

 

Event Based Style은 컴포넌트가 통보된 이벤트를 통해 상호작용하는 아키텍처입니다. 이벤트 생산자는 이벤트를 생성해서 통보하는 컴포넌트이고, 이벤트 소비자는 이벤트를 받아서 처리하는 컴포넌트입니다.

Event Base Style
Event Base Style

 

Shared Data Style은 지속적인 데이터 교환을 통해 제어하는 상호작용 패턴입니다. 공유 데이터 저장소는 데이터 소비자가 접근할 데이터를 관리하고, 데이터 소비자는 데이터를 요청 및 접근합니다. Gateway나 Maintenance Tool이 대표적인 데이터 접근자이고, SYBASE와 DS가 데이터 저장소의 컴포넌트입니다.

Shared Data Style
Shared Data Style

 

Peer to Peer Style은 서비스(혹은 데이터) 생산자와 소비자 간에 결합을 분리한 대칭 통신 아키텍처입니다. 여기서 Peer는 클라이언트와 서버 역할을 동시에 수행합니다.

Peer to Peer Style
Peer to Peer Style

 


※ 함께 보면 좋은 글

 

1. 소프트웨어 아키텍처의 품질 속성 특징과 문제점, 그리고 품질 속성 시나리오

 

소프트웨어 아키텍처의 품질 속성 특징과 문제점, 시나리오(with 예시)

소프트웨어 아키텍처에서 품질 속성(Quality attribute)은 가장 중요한 요소입니다. 이번 글에서는 소프트웨어 아키텍처의 품질 속성 특징과 문제점, 그리고 문제점을 극복하기 위한 품질 속성 시나

mmp2022.tistory.com

 

2. 소프트웨어 아키텍처 정의, 역할, Desing Mindset

 

소프트웨어 아키텍처 정의, 역할, Design Mindset 알아보기

이번 글에서는 소프트웨어 아키텍처를 정의하는 여러 가지 표현들과 소프트웨어 아키텍처의 역할에 대해서 알아보겠습니다. 그리고 좋은 소프트웨어 아키텍처를 설계하기 위해 필요한 4가지 De

mmp2022.tistory.com

 

3. 소프트웨어 아키텍트 정의, 하는 일, 되는 방법, Design Thinking

 

소프트웨어 아키텍트(SA) 정의, 하는 일, 되는 방법, Design Thinking 4가지 원칙 알아보기

이번 글에서는 소프트웨어 아키텍트(Software Architect, SA)에 대해서 알아보겠습니다. 소프트웨어 아키텍트 기본 개념, 하는 일, 소프트웨어 아키텍트가 되는 방법과 Design Thinking 4가지 원칙 등에 대

mmp2022.tistory.com

 

댓글