Devxplorer – 세상을 분석하는 개발자의 탐험기

IT, 경제, 인물, 건강 – All Explored

Devxplorere 자세히보기

IT (IT)🤖🧠/Software Architecture

Skeleton Architecture : Architecture Style의 집합

데브엑스플로러 2024. 3. 11. 23:01
728x90
반응형

Skeleton Architecture 여러 Architecture Style을 적용하여 만들 수 있다. 여러 Architecture Driver 를 달성하기 위해, 각각에 적합한 Architecture Style을 정하고, 이를 적절하게 조합하여 설계한다 하기는 일반적인 Web Browser 시스템이다. 예제를 통해 Skeleton Architecture를 설명하고자 한다.

1. Skeleton Architecture

Skeleton Architecture는 주로 소프트웨어 개발 분야에서 사용되며, 소프트웨어 시스템의 초기 또는 고 수준 설계를 나타낸다. 이것은 소프트웨어의 기본적인 구조와 구성 요소를 제시하며, 세부 구현 내용을 반영하진 않는다. Skeleton Architecture는 소프트웨어 개발 과정의 Blue print 역할을 하며, 다양한 구성 요소들이 상호 작용하는 방식을 고 수준에서 보여준다. 하나의 Architecture Style로 표현하지 않고, 요구 사항 달성에 유리한 Architecture Style들 선택하여 Integration 하여 표현 가능하다. Architecture Driver를 달성하기 유리한 스타일들을 선택하고, 배치하여, 여러 Architecture Style들을 Integration 하여 하나로 표현한다. 이는 시스템의 가장 큰 기본 구조가 된다.

2. N-tier Architecture Style

역할에 따라 각각의 독립적인 Tier로 구분하여 유지 보수성을 높인다. 역할이 독립적이라면, 각각의 변경이 서로에 영향을 미치지 않도록 Tier를 나누어 주는 것이 좋다. Tier 간에 통신 Overhead가 발생 할 수 있기 때문에, 하나의 Tier로 선택해야 할지, 독립적인 Tier로 분리할지 고민해야 한다. 전형적인 N-tier Architecture 는 다음과 같이 여러 Layer로 구성된다. 하기 시스템에서,

Tier 0. Web Browser

Presentation Layer로 정의하였다. 가장 상위 Layer로 사용자 Interface와 사용자 상호 작용을 처리한다. 웹 브라우저로 주요 역할은 사용자에게 데이터를 표시하고 사용자 입력을 받아오는 것이다.

Tier 1. Dispatcher Tier

Presentation Layer로 부터 전달 받은 사용자 입력을 Servcer Tier로 전달한다. 전달 하는 과정에서 QoS 를 Control 한다. 통신 품질 속성을 달성하기 위해 가장 유리한 Server를 선택하고 이와 통신할 수 있도록 사용자에게 제공한다. 이렇듯User와 Server 간 통신 중재하는 Tier이다.

Tier 2. Server Tier

데이터 처리 및 비즈니스 로직을 처리한다. Client로 부터 수신한 요청을 처리하고 DB나 다른 데이터 소스에서 필요한 정보를 검색하거나 저장한다. 사용자 웹에서 발생한 요청을 서버가 처리하고 필요한 계산 및 로직을 실행한다. 서버 Tier는 데이터 Access Tier와 상호작용을 통해 데이터의 검색, 수정, 삽입 및 삭제 작업을 수행하며 이러한 작업을 안전하게 처리한다.

Tier 3. Archival Tier

데이터 저장 및 데이터 관리를 진행하는 Tier이다. 데이터를 보존하고, 데이터 검색과 복원 암호화와 보안에 대한 책임을 갖는다.

3. Dispatcher Load-Balancing Architecture Style

Client에게 QoS 품질 속성을 달성 하기 위해 적용한다. Dispatcher가 여러 Server중 가장 높은 QoS를 제공하는 Server를 선택하여 Client와 Direct 통신할 수 있도록 연결 시킨다. Dispatcher는 가장 효율적인 Server를 선택해주고, Client와 Server가 직접 통신한다. 따라서 Client와 Server 사이의 통신까지 중재하는 Broker Architecture Style보다 성능 측면에서 유리하다.

4. MVC Architecture

모듈간 책임에 따라 논리적으로 구분하여 이를 Layer로 표현한다. 각 Layer간 역할을 할당하고 Control 방향을 정한다. 일반적으로 역할에 따라 Model, View, Control Layer로 나누어 모듈을 배치한다.

  • Model : Data, Information 관리에 대한 책임, 비지니스 로직을 담당한다. Application의 핵심 기능과 데이터 처리 작업을 정의하는 Layer이다. 데이터에 대한 유효성 검사, 업데이트 및 삭제와 같은 데이터 조작 메서드를 포함한다.
  • View : User display에 대한 책임을 갖는다. 사용자에게 데이터를 표시하고 사용자 인터페이스를 구성하는 역할을 한다. 모델의 데이터를 시각적으로 나타내는 부분이며, 사용자와의 상호 작용을 처리한다. 사용자가 보는 웹 페이지 출력 형식을 담당한다. 사용자의 입력을 Control 부로 전달하는 역할을 한다.
  • Control : User Input을 Control하는 책임을 갖는다. 뷰와 모델 간 상호작용을 관리하고 조정한다. 사용자 입력에 대해 이벤트를 처리하고, 이에 따라 Model을 업데이트하거나, View를 update하는 역할을 수행한다.

을 각각 갖는다.

설계의 목적이 되는 여러 Architecture Driver 를 고려하여, Archtiecture Style 선택하고, 가장 적합한 Skeleton Architecture 를 설계한다.

 

모든 품질 속성을 한번에 만족 시킬 수 없다. 품질 속성 간에 항상 Trade off 관계가 존재한다. 성능을 좋게 하기 위해선 수직 최적화가 필요하지만, 이는 유지 보수성을 떨어뜨린다. 유지 보수성을 높이기 위해선, 모듈을 응집성에 따라 분리하고, 역할과 책임에 따라 분리해야 하는데, 이는 수직 최적화와 반대의 개념이다.

 

이렇듯, 설계의 목적이 되는 Architecture Driver 들의 우선순위를 기반으로 어떤 품질을 더 중요하게 다루어야 하는지에 따라 이러한 선택의 문제에서 결정을 내릴 수 있다. 따라서 요구사항 분석 단계에서 이해당사자 간, Architecture Driver의 우선순위 결정에 Consensus를 달성 하는게 중요하다.

반응형