SW/클라우드 서비스 아키텍처

소프트웨어 아키텍처 스타일 : 개념, 종류, 정의, 개요

얇은생각 2020. 4. 22. 19:30
반응형

아키텍처 스타일

소프트웨어 아키텍처의 경우에도 마찬가지로 여러 스타일이 존재하며 이들이 갖는 소프트웨어 개발 용이성 및 시스템이 주는 특징이 서로 다르기 때문에 아키텍처 스타일의 선택은 소프트웨어 개발에서 매우 중요하며 이어지는 아키텍처 설계 및 개발에 큰 영향을 미치게 됩니다.

만일 분산 환경에서 많은 사용자를 위한 소프트웨어 시스템에 대하여, 컴포넌트들이 물리적으로 분리되어야 합니다. 둘째, 서비스 제공자들이 서비스 요청자들이 누구인지 알 수 없어야 합니다. 셋째, 서비스 요청자들이 서로 분리되고 보호되어 해당 서비스 제공자에게만 의존해야 합니다. 넷째, 복수의 서비스 제공자들이 동적으로 추가될 수 있어야 합니다. 이 설계 결정들을 채택할 경우 어떤 컴포넌트들이 시스템에 있어서 어떻게 작용하게 되는지 구체적으로 나타나 있지 않기 때문에 이 결정들만으로서 하나의 특정 시스템이 명세되지 않고 특정 소프트웨어 시스템을 개발하기 위해서는 아키텍트가 아직도 많은 설계 결정들을 내려야 합니다. 이와 같이 미리 만들어진 부분적인 아키텍처 설계 결정들의 집합이 아키텍처 스타일입니다.

아키텍처 스타일은 세 가지 특정을 가진 아키텍처 설계 결정의 집합입니다. 이보다 10여 년 앞서 매리 쇼와 데이비드 갈란이 내린 아키텍처 스타일의 정의는 아키텍처에 등장하는 컴포넌트와 커넥터의 유형과 이들이 상호작용하는 방식을 더 강조하지만, 이 정의도 역시 아키텍처 스타일의 중요한 한 근본적인 측면을 강조하면서 테일러의 정의가 잡아내려야 하는 아키텍처 스타일의 핵심적인 개념을 포착하게 한 결과입니다. 디자인 패턴과 같은 경험적 지식의 기술의 경우와 마찬가지로 아키텍처 스타일도 슬라이드에 나오는 템플릿을 사용함으로써 특정 아키텍처 스타일이 갖는 내용과 특정들을 효과적으로 전달할 수 있습니다.

 

 

아키텍처 스타일 종류

아키텍처 스타일에는 기본적인 스타일과 복합적인 스타일이 있는데 복합적인 스타일은 기본적인 스타일들의 결합으로 만들어집니다. 기본적인 아키텍처 스타일은 여러 종류로 나눌 수 있는데 전통적인 언어 기반의 스타일 그룹, 대칭스타일 그룹, 자료 흐름 그룹, 공유 메모리 그룹, 해석기 그룹, 묵시적 호출 그룹, 피어 대 피어 그룹 등으로 나누어집니다.

 

 

소프트웨어 아키텍처 스타일 : 개념, 종류, 정의, 개요

 

이와 같이 많은 아키텍처 스타일이 있지만 여기서는 파이프&필터 스타일을 예로 아키텍처 스타일이 어떻게 적용되는지 보도록 하겠습니다. 이 스타일의 아키텍처는 필터라고 불리는 유형의 컴포넌트와 파이프라고 불리는 유형의 커넥터로 구성됩니다. 필터 컴포넌트는 데이터를 변형하거나 필터링 하는 단순한 처리 작업을 하고 파이프커넥터는 데이터를 하나의 필터에서 다른 필터로 옮기는 일을 합니다.이들은 더 이상의 처리할 데이터가 없을 때까지 자율적이고 동시적으로 동작합니다. 

 

 

소프트웨어 아키텍처 스타일 : 개념, 종류, 정의, 개요

 

문자 스트링을 입력받아서 홀수 번째 문자는 대문자로, 짝수 번째 문자는 소문자로 바꾸는 소프트웨어를 개발해야 한다고 가정합니다. 위 그림은 이 문제를 해결하는 하나의 솔루션 아키텍처를 보여주고 있습니다. 아키텍처에는 4개의 필터 컴포넌트가 파이프 컴포넌트와 연결되어 있는 파이프&필터 스타일의 아키텍처를 보여줍니다.

즉, 스플릿 컴포넌트가 입력 스트링을 홀수 번째 스트링과 짝수 번째 스트링으로 나누어 짝수 번째 스트링은 위의 Lower 컴포넌트로 보내어 소문자로 바꾸고 홀수 번째 스트링은 아래의 Upper 컴포넌트로 보내어 대문자로 바꾼 뒤 이 두 스트링을 결합하여 최종적인 출력 스트링을 만듭니다.

 

 

소프트웨어 아키텍처 스타일 : 개념, 종류, 정의, 개요

 

동일한 파이프&필터 아키텍처 스타일을 적용하여 다른 소프트웨어 시스템을 만든 예를 보여줍니다. 앞에 나왔던 아키텍처와 마찬가지로 이 아키텍처에서 컴포넌트들은 필터이고 커넥터들은 파이프입니다. 그러나 이 아키텍처는 맨 오른쪽 필터에서 가운데 필터로 가는 피드백에 있는 다소 다른 구조를 갖고 있습니다. 이와 같이 동일한 아키텍처 스타일을 서로 다른 시스템을 위하여 적용할 수도 있고 다양한 아키텍처 스타일을 사용하여 같은 기능을 갖는 시스템을 만들 수도 있습니다.

반응형