Architectural Style을 결정하는 것 설계하고자하는 SW와 가장 알맞는 설계 스타일을 설정하는 단계입니다. 다양한 설계스타일들 중 알맞은 것들을 골라 타겟 시스템에 알맞게 스타일들을 합치는 과정까지를 포함합니다. 안정적이고 구조적인 역할을 할 수 있도록 결정하는 Design 전체 System Design의 기본 바탕이므로, 수정이 힘들다.
Architectural Style
Component Type
Connectors → Data 외에 연결된 모든 것
Layout
Invariants / Constraints
Data flow의 방향, 다양성, 동시성 등등
많은 Style이 있지만, 그중에서 적합한 모델을 선정해야 한다.
Model-View-Control (MVC) : Style의 한 예제
시스템을 View, Control, Model 세 가지 Layer로 나눈 방식의 Architectural Style
많은 System이 사용하는 Style이다.
View는 User와 상호작용하는 Layer이다.
Controller는 데이터 전달/처리와 같은 기능적인 부분을 수행하는 Layer이다. Business Processes를 담당한다.
Model은 Persistent Dataset을 저장 및 관리하는 역할을 하는 Layer이다.
주로 Model의 Interface API가 Controller에게 제공되어 Controller에서 Data를 가져올 수 있게 한다.
Model Layer는 DB와 연결되어 있다.
각각의 Layer는 각자의 목적을 가지면서 독립적이다.
Well Applicable
각각의 역할이 명확하게 나누어져야 효과적이다.
User와의 상호작용이 많은 시스템에 효과적이다.
기능과 데이터가 독립적으로 관리되어야 할 때 효과적이다.
View와 Controller는 주로 기능을 실행하는 역할을 한다.
Model은 Persistent Data를 관리하는 역할을 한다.
TODO : MVP, MVVM에 대한 포스팅을 추가
Process of Skeleton Architecture Design 요약
Observe Architectural Characteristics
System의 Architectural Characteristics를 확인한다.
설계적 관점에서 시스템의 필요한 특징들을 찾아내는 작업이다.
Define Candidate Architecture Styles
Style들의 적합성만을 판단하여 잠재적인 후보로 선정한다.
전혀 맞지않는 설계 스타일을 걸러내는 작업이다.
Evaluate Candidate Architecture Styles
선정된 후보들을 꼼꼼히 평가하여 Style을 선정한다.
각각의 잠재적 설계 스타일들을 서로 다양한 방식으로 비교하여 적용할 스타일을 골라낸다.
Integrate Architecture Styles
Style들을 합친다.
골라낸 스타일들을 시스템에 맞춰 합쳐서 전체 시스템의 설계 스타일로 정의한다.
Describe Skeleton Architecture
정의된 설계 스타일을 문서화한다.
Step 1. Observe Architectural Characteristics
System의 Functionality를 찾는다.
System의 Tier를 찾는다.
For Intelligent System
Functionality
Generating ML Models
Predicting with ML Models
Monitoring the Performance of ML Models
Optimizing ML Models
Tier
Tier-1 : Generating and Optimizing ML Models
비싼 Computing Power로 인해서 따로 Tier를 두어야 한다.
Tier-2 : Predicting with ML Models
주로 Client 측에 둔다.
Step 2. Define Candidate Architectural Styles
Target System에 적합한 Style을 선정하는 단계이다.
각각의 architecture style들의 System 적합성을 비교한다.
적합하다고 생각되는 여러 가지의 style은 Cadidate Architectural Style이 된다.
Skeleton Architecture는 선택한 style의 components와 connectors를 정의한다.
For Intelligent System
Client - Server Architecture Style
Client Tier for Predicting with ML Models
Server Tier for Generating ML Models
N-tier Architecture Style
1 tier for Generating ML Models
Other Tiers for Predicting
PaaS or IaaS
ML Model 기능들을 위한 Cloud Service를 고려
PaaS : Platform as a Service
IaaS : Infrastructures as a Service
ex) AWS, GCP, Azure
Step 3. Evaluate Candidate Architecture Styles
Applicable Situation → 적합성
Pros → 장점
Cons → 단점
위의 세 가지를 꼼꼼하게 비교하여 평가한다.
For Intelligent System
Generating을 위한 Tier가 존재하는지
Predicting을 위한 Tier가 존재하는지
Step 4. Integrate Architecture Styles
평가를 통해 선정된 Architecture Style들을 합친다.
각 Style들의 공통된 Components와 Connectors들을 찾는다.
공통된 Element들을 합친다.
Ex. MVC 스타일과 Shared Repository를 합치는 과정
Step 5. Describe Skeleton Architecture
Structural Layout : 구조
Components : 구성 요소
Strength : 강점
Limitation : 제한점
위의 요소들을 잘 정리한다.
Skeleton Architecture는 한번 정의를 내리면 바꾸기 아주 힘들기 때문에, 확실한 설계 스타일을 설정해두고 다음 단계로 넘어가는 것이 좋습니다. 다음은 Functional View Point의 디자인 과정을 포스팅해 보겠습니다.