[KMOOC] 클라우드 서비스 아키텍처 – 1주차

소프트웨어 아키텍처 설계의 개요

1. 소프트웨어 아키텍처 설계 소개

설계도를 그리는 이유 – 원하는 모습, 기능, 특징, 속성을 미리 확인하기 위함
설계와 제대로된 검증 없이 시스템을 만드는 경우 기능이 잘못되거나 고쳐야 하는경우 큰 비용이 소요된다.
그러므로 효율적으로 시스템을 개발하기 위해서 설계가 꼭 필요하다.

요구사항 -> 구현
요구사항 -> 설계 -> 구현
요구사항 -> 아키텍처 -> 설계 -> 구현
위와 같은 순서로 시스템을 만드는 방법이 발전하였다.

아키텍처 설계는 전통적인 설계보다 높은 레벨에서 시스템에 대해서 분석할 수 있게 해준다.
소프트웨어 아키텍처 = 구축 용이성과 진화성을 갖춘 소프트웨어 시스템의 구조와 이어지는 개발에 관한 중요한 결정들의 집합 이다.
구축용이성 = 시스템의 구축을 용이하게(어렵지 아니하고 매우 쉽게) 해주는 성질 또는 속성
진화성 = 시스템의 지속적인 사용과 개선을 용이하게 해주는 성질 또는 속성

소프트웨어 아키텍처 설계를 하려면? 아키텍처의 입력물과 출력물을 먼저 알아야 한다.

1. 입력물
아키텍처의 입력물은 시스템 요구사항에서 시작한다.
요구사항 중에서도 특히 중요한 것을 아키텍처 설계의 입력물로 설정한다.

2. 출력물
아키텍처 문서, 아키텍처 가이드라인

아키텍처 설계의 원리

  1. 아키텍처 설계가 해결해야 할 문제를 정제하고 식별하는데 사용되는 원리
    1. 아키텍처 드라이버 -1
    2. 품질속성, 검증가능성, 품질속성시나리오 -2
    3. 문제틀의 식별 -3
  2. 아키텍처 설계의 결과가 어떤 모습을 가져야 하는지 판단하는 데 사용되는 원리
    1. 컴포넌트와 커넥터 -4
    2. 아키텍처 스타일 -5
    3. 소프트웨어 아키텍처를 보는 관점체계 -6
  3. 본격적인 아키텍처 설계에 적용되는 원리
    1. 설계의 일반원리 -7
    2. 아키텍처 설계 절차 -8
    3. 아키텍처 패턴 -9
    4. 품질속성 설계전술 -10
    5. 아키텍처의 분석 -11
  4. 설계가 끝나고 결과물을 평가하는 데 사용되는 원리
    1. 아키텍처의 평가 -12

시스템 요구사항
요구 사항은 크게 기능 요구사항비기능 요구사항으로 나눌 수 있다.
비기능 요구사항은 또 품질 요구사항제약 사항으로 나눠진다.

기능 요구사항비기능 요구사항
품질 요구사항제약사항

기능 요구사항 – 목표 시스템이 반드시 수행하거나 목표 시스템을 이용하여 사용자가 반드시 할 수 있어야 하는 기능(동작)
품질 요구사항 – 목표사업의 원활한 수행 및 운영을 위해 관리가 필요한 품질 항목, 품질평가 대상 및 목표에 대한 요구사항
제약 사항 – 시스템 개발이 지켜야 하는 준수사항

2. 아키텍처 드라이버

아키텍처 드라이버는 아키텍처적으로 중요한 요구사항을 의미한다.
아키텍처 드라이버 또한 모두 아키텍처 설계의 출발점으로 사용하지 않는다.
아키텍처 드라이버 중에서 또 선정된 아키텍처 드라이버를 아키텍처 설계의 출발점으로 사용한다.

아키텍처 드라이버는 항상 품질 요구사항이나 제약사항으로부터 얻어진다.
시스템이 어떤 서비스를 제공하는지는 시스템의 아키텍처에 직접적으로 영향을 주지 않는다.
즉 기능 요구사항이 아키텍처에 영향을 주지 않는다는 이야기가 된다.
제약사항은 구체적으로 아키텍처에 영향을 미치고, 품질요구사항은 미묘한 방법으로 아키텍처 결정에 영향을 준다.
이 아키텍처 설계를 까다롭게 만드는 것이 품질 요구사항이다.

3. 품질속성, 검증 가능성, 품질속성 시나리오

품질속성에는 성능, 수정 용이성, 개발시간, 개발팀의 혁렵수준 등 시스템과 개발에 관련된 많은 품질속성이 존재한다.
아키텍트는 품질속성 중에 요구사항으로부터 명시적으로 언급되지 않는 것들도 인식해야 한다.

품질 요구사항은 검증이 가능해야 한다.
품질 요구사항 또는 품질 속성을 6 Part Scenario를 통해서 검증가능하게 만들 수 있다.

6 Part Scenario는 자극, 대상, 반응, 반응측정, 자극 발생 원천, 환경으로 구성된다.
이를 이용하여 구체적이고 정량적으로 요구사항을 작성하면 검증이 가능하며, 추후 개발 완료된 이후 시스템 시험과 인수테스트를 위한 시험 요구사항이 될 수 있다.

4. 아키텍처 설계 문제 분석

아키텍처 설계 문제 분석이란, 요구사항들 중 아키텍처 설계를 요구하는 문제를 식별, 정리하고 그 해결책의 후보를 도출하는 활동이다.

  1. 선정된 아키텍처 드라이버 -> 어떤 설계 문제가 있는지 파악하여 정리
  2. 문제들에 대한 가능한 해법을 도출
  3. 도출된 해법들을 평가
    평가를 위해서는 직관을 사용할 수도 있고, 비용이득 관점의 진보된 평가방법을 사용할 수도 있다.
  4. 효과를 정리