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

소프트웨어 아키텍처 : 아키텍처 패턴 원리 : 개념, 정의, 개요

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

아키텍처 패턴 원리

테일러는 아키텍처 패턴을 반복적으로 발생하는 설계 문제에 적용될 수 있는 아키텍처 설계 결정으로 정의하였습니다. 그리고, 아키텍처 패턴의 급증으로 문제가 발생하는 여러 가지 다른 소프트웨어 개발 상황에 다뤄질 수 있도록 일반화되어 있다는 점을 강조하였습니다.

 

 

아키텍처 패턴의 표현

아키텍처 패턴을 기술하기 위하여는 패턴이 사용되는 문맥, 패턴이 해결해야 하는 문제와 그 해결 방법 외에도 패턴의 이름과 패턴의 사용에 따른 파급효과를 기술하여야 합니다.

 

 

아키텍처 패턴의 예

소프트웨어 시스템 개발에 자주 쓰이는 아키텍처 패턴의 예로 Three Tiers 아키텍처 패턴이 있습니다. 이 패턴에서 컴포넌트는 Front Tier 컴포넌트, Middle Tier 컴포넌트 Backend Tier 컴포넌트로 구성됩니다. 이 세 종류의 컴포넌트는 다양한 이름으로 불립니다.

Front Tier의 경우 Client Tier, Presentation Tier, Display Tier 등으로도 불리고, Middle Tier의 경우 Application Tier, Business Logic Tier, Control Tier 등으로 불리고, Backend Tier의 경우 Data Tier, Database Tier, State Tier 등으로 불립니다. 이 컴포넌트들이 상호작용하는 방식은 기본적으로 한 컴포넌트의 서비스 요청에 의해 인접한 컴포넌트가 응답하는 방식입니다.

그러나, 이 동작 방식에도 다양한 Variation이 있고, 아키텍처는 그 가운데서 애플리케이션 아키텍처에 맞는 적절한 방식을 결정해야 합니다. 이와 같이 아키텍처 패턴은 일반화되어 있는 부분적 아키텍처 솔루션입니다.

 

 

아키텍처 스타일 vs 아키텍처 패턴

그러면 아키텍처 스타일과 아키텍처 패턴은 서로 유사점이 많습니다. 그러나 아키텍처 스타일은 아키텍처 패턴에 비하여 문제 영역에 대한 지식을 덜 반영합니다. 즉, 아키텍처 스타일은 적용 범위가 넓지만 구체적인 문제에 대한 해결을 주지 못하는 반면, 아키텍처 패턴은 한정된 적용 범위를 갖지만 구체적인 문제에 대한 해결을 줍니다.

컴포넌트와 커넥터는 Pipe and Filter라는 특정 스타일의 컴포넌트와 커넥터이고, Client­Server 아키텍처 스타일을 구성하는 컴포넌트와 커넥터의 유형을 보여줍니다. Client­Server 아키텍처 스타일에서 컴포넌트는 Client 유형과 Server 유형, 두 가지로 구성됩니다. 제약사항은 주어진 스타일의 구성요소들이 서로 연결되는 방식을 제한합니다. 그런데, Client­Server 아키텍처 스타일은 클라이언트와 서버를 연결하는 커넥터 이외에 Client끼리 연결하거나 Server끼리를 연결하는 커넥터를 허용하지 않는 특징을 갖습니다.

컴포넌트와 커넥터의 이분법이 아키텍처를 보는 방법을 결정한다면, 아키텍처 스타일은 문제 해결에 다가가는 방법을 제시하고, 아키텍처 패턴은 해당하는 문제 혹은 하위 문제에 대한 구체적인 아키텍처 수준의 답을 준다고 볼 수 있습니다.

 

 

분산 컴퓨팅을 위한 아키텍처 패턴의 분류

이는 시스템 아키텍처의 최초의 틀을 잡는 데 사용되는 패턴들입니다. 그 중에 예를 들어 Layers 패턴은 개발 대상 소프트웨어를 위하여 하나 이상의 계층을 정의하고 각 계층은 분명하고 특정한 책임을 가지게 하고, Domain Object 패턴은 응용에 각 구분되는 기능을 도메인 객체로 부르는 독립적인 구성 요소로 캡슐화합니다.

그 밖에도 다양한 패턴 그룹들이 존재하는데, 예를 들어 Explicit Interface 패턴은 컴포넌트의 공개 인터페이스를 그 구현으로부터 분리하고 컴포넌트의 사용자들에게 인터페이스를 사용할 수 있게 합니다. 그러나, 그 구현을 감추고 위치 독립적으로 만듭니다.

Encapsulated Implementation 패턴은 컴포넌트의 구현 세부사항을 인터페이스 뒤에 감춥니다. Broker 패턴은 통신 인프라의 세부사항을 응용의 기능과 분리하고 캡슐화하여 클라이언트들이 원격 서비스를 지역 서비스인 것처럼 사용할 수 있게 해주어 분산 응용의 컴포넌트들이 원격 제어를 스스로 처리하지 않아도 되게 해줍니다.

Client Proxy 패턴을 사용하면 Proxy는 원격제어 컴포넌트와 동일한 인터페이스를 제공하여 클라이언트의 메시지 호출을 네트워크 건너로 보낼 수 있습니다. 이와 같이 분산 컴퓨팅 영역을 위한 아키텍처 패턴만도 여러 가지가 있습니다.

아키텍트들은 좋은 아키텍처 설계를 위하여 모든 아키텍트들이 다 알고 있어야 하는 기본적인 아키텍처 패턴 외에도 특히 자신의 영역에서 필요한 아키텍처 패턴들도 잘 알고 있어야 합니다.

 

소프트웨어 아키텍처 : 아키텍처 패턴 원리 : 개념, 정의, 개요

 

위 그림은 재고 관리 공정 제어 시스템 설계에 아키텍처 패턴들을 적용한 예입니다. 이 시스템은 재고 관리, 주문 관리, 배송, 물품 수취, 물품 유통 제어, 창고물품 배치 관리 등의 기능을 수행하며, 분산/처리, 성능, 규모 확장성, 가용성 등의 요구사항을 갖고 있습니다.

시스템의 설계를 위하여 슬라이드에서처럼 먼저 시스템 기능을 각 기능 그룹이 독립적으로 개발되고 수정될 수 있도록
종합적인 그룹들로 나누기 위하여 계층 패턴을 사용하여 5개의 계층으로 나눴습니다. 또한 계층 내에서 계층의 기능을 더 작은 컴포넌트들의 구성으로 나누기 위하여 도메인 객체 패턴을 적용하였습니다.

앞의 아키텍처를 검토해보면 시스템이 컴포넌트들의 계층으로 나뉘어 있지만, 서로 다른 계층에 속해 있는 컴포넌트 간의 결합이 강하다는 것을 알 수 있습니다. 이러한 컴포넌트들이 느슨히 연결되도록 만들기 위하여 명시적인 인터페이스 패턴과 캡슐화된 구현 패턴을 적용할 수 있습니다.

이 시스템은 네트워크로 연결된 분산 시스템으로 개발되어야 하는데, 이 경우 시스템이 네트워킹 문제를 직접 다루지 않도록 하기 위하여 Broker 패턴을 적용하여 분산된 객체들이 서로 통신할 수 있을 때 하고, Client Proxy 패턴을 적용하여 원격제어의 객체가 클라이언트의 주소 공간 안에서 브로커와 상호작용을 하도록 할 수 있습니다.

반응형