Chapter 4: A Technique for Architecture and Design(1)


Overview

이 장은 당신의 향후 아키텍처에 대해서 고민하고 스케치할 수 있도록 하기 위한 반복적인 기법에 대해서 기술한다. 이 장은 또한 당신이 이 가이드에서 논의하는 핵심 결정사항(품질 속성, 아키텍처 스타일, 어플리케이션 타입, 기술, 배치(deployment) 결정)에 대해서 알려줄 것이다.

그 기술은 연속적인 5개의 단계를 포함하며, 각각은 이 가이드의 나머지에서 충분히 설명된 개별 고려사항으로 쪼개진다. 이런 반복적인 프로세스는 단계를 반복함으로써 더욱 개선될 수 있는 잠재 솔루션을 만드는 것을 도울 수 있다. 프로세스의 마지막 부분에서 당신은 모든 관련된 영역들에 대한 당신의 아키텍처에 대해 검토하고 의사소통 할 수 있다.

소프트웨어 개발에 대한 조직의 접근법에 의존적으로, 당신은 제품이 개발되고 있는 동안 여러 번 당신의 아키텍처를 들여다볼 것이다. 당신은 이런 기술을 사용하여 당신의 아키텍처를 개선할 수 있고, 스파이킹(spiking), 프로토타이핑, 그리고 실제 개발의 주기에서 배웠던 것을 구축할 수 있다.

이것은 단지 가능한 한가지의 접근법이라는 것을 아는 것도 또한 중요하다. 당신의 아키텍처를 정의하기, 검토하기, 의사소통하기 위한 여러 가지 형식적 접근법이 있다. 몇몇은 이 장의 마지막에서 간단하게 논의할 것이다.

Inputs, Outputs, and Design Steps

당신의 설계의 입력은 요구사항 및 당신의 아키텍처가 제공해야 하는 제약사항을 형식화하는 것을 도울 수 있다. 공통 입력은 유즈 케이스와 사용 시나리오, 기능 요구사항, 비기능 요구사항(성능, 보안, 신뢰성, 기타 등과 같은), 기술적 요구사항, 타겟 배치 환경, 다른 제약사항들이다.

설계 프로세스 동안, 당신은 아키텍처적으로 중요한 유즈 케이스, 특별한 주의를 요구하는 아키텍처적 이슈, 그리고 요구사항과 설계 프로세스상에 정의된 제약 조건을 만족시키는 아키텍처 솔루션들의 후보들을 생성할 것이다. 설계가 모든 요구사항을 만족시키고 모든 제약조건에 부합하도록 할 때까지 시간이 지나면서 설계를 개선하는 공통적인 기술은 그림 1과 같이 5개의 중요한 단계로 구성된 반복 기법이다.

그림1. 핵심 아키텍처 설계 활동을 위한 반복 단계

다음의 섹션에서 각 단계들을 자세히 설명하도록 한다.

  1. 아키텍처 목표를 식별한다. 명확한 목표는 당신의 아키텍처에 집중하고 설계에서 올바른 문제를 해결하는데 도움이 된다. 간단한 목표는 당신이 현재 단계에서 완료 및 다음 단계로 나아가는 것을 결정하는데 도움이 된다.
  2. 핵심 시나리오. 무엇이 가장 중요한지 당신의 설계에서 집중하고 후보 아키텍처들이 준비되었을 때 평가하기 위해 핵심 시나리오를 사용하라.
  3. 어플리케이션 개요. 당신의 어플리케이션 타입, 디플로이먼트 아키텍처, 아키텍처 스타일, 기술들을 식별하여 당신의 설계가 어플리케이션이 동작하는 실제 세계에서 연결할 수 있도록 하라.
  4. 핵심 이슈. 품질 속성과 crosscutting concerns를 기반으로 한 핵심 이슈들을 식별하라. 이들은 어플리케이션을 설계할 때 가장 많이 하는 실수하는 영역들이다.
  5. 솔루션 후보. 솔루션을 진화시키고 개선시킬 수 있는 spike나 prototype 아키텍처를 생성하고 당신의 아키텍처의 다음 반복이 시작되기 전에 당신의 핵심 시나리오, 이슈, deployment제약사항에 대해서 평가하라

이러한 아키텍처적인 프로세스는 반복적이고 증가적인(iterative and incremental)접근법이다. 당신의 첫 번째 후보 아키텍처는 핵심 시나리오, 설계, 알려진 제약사항, 품질 속성, 아키텍처 프레임에 대해 테스트할 수 있는 고 수준의 설계가 될 것이다. 당신이 후보 아키텍처를 정제할 때마다 당신은 설계에 대한 보다 상세한 것을 배우게 될 것이고 핵심 시나리오, 어플리케이션 개요, 이슈들에 대한 당신의 접근법에 대한 보다 심도 있는 확장을 할 수 있을 것이다.

Note.

아키텍처에 대한 반복적 접근법에 대해 논의할 때, 그것은 종종 사용자를 위한 완성된 기능(유즈 케이스)을 구성하는 계층을 넘는 기능성에 대한 고려를 요구하는 수직적 슬라이스보다 수평적 슬라이스(layer)로 반복하려고 하기도 한다. 만약 당신이 수직적으로 반복하는 것을 실패한다면, 당신의 사용자들이 그것을 validate하기 전에 여러 가지 기능의 구현에 대한 리스크를 떠안게 될 것이다.

아키텍처에 대한 반복적 접근법에서 수평적 계층 구조(layered architecture)를 기반으로 하여 설계를 하지 말라는 의미이다. 그렇다고 Layered architecture를 하지 말라는 뜻은 아님. 그렇다고 Layered architecture를 언제 하라고 얘기하는 것도 아니지만..:-)

당신은 1회 반복으로 당신의 아키텍처를 완성하려고 해서는 안 된다. 각각의 반복에서 보다 상세화가 추가되어야 한다. 상세화하면서 길을 잃어버리지 말고 major step에 집중하고 당신의 아키텍처와 설계를 토대에서 프레임워크를 구축하라. 다음의 섹션은 각각의 step에 대한 가이드라인과 정보를 제공한다.

Advertisements

“Chapter 4: A Technique for Architecture and Design(1)”에 대한 2개의 생각

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중