상세 컨텐츠

본문 제목

소프트웨어를 설계하는 방법 (2) - Skeleton Architecture Design

IT/SW Architecture

by HarimKang 2019. 12. 13. 02:30

본문

Skeleton Architecture Design

Writer: Harim Kang

SW 설계에 관한 가이드라인을 글로 수록합니다. 해당 내용은 지능형 시스템(Intelligent System) 설계를 위한 가이드라인을 포함하고 있습니다.

앞서 소프트웨어 설계의 순서를 파악하시고자 한다면 다음의 링크를 통해 보고 와주세요!

2019/12/13 - [IT/SW Architecture] - 소프트웨어를 설계하는 방법 (1) - 설계 소개 및 순서

 

소프트웨어를 설계하는 방법 (1) - 설계 소개 및 순서

SW Architecture Writer: Harim Kang SW 설계에 관한 가이드라인을 글로 수록합니다. 해당 내용은 지능형 시스템(Intelligent System) 설계를 위한 가이드라인을 포함하고 있습니다. SW 설계란 무엇인가요?? Defin..

davinci-ai.tistory.com

Skeleton Architecture Design


Definition

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 요약

  1. Observe Architectural Characteristics
    • System의 Architectural Characteristics를 확인한다.
    • 설계적 관점에서 시스템의 필요한 특징들을 찾아내는 작업이다.
  2. Define Candidate Architecture Styles
    • Style들의 적합성만을 판단하여 잠재적인 후보로 선정한다.
    • 전혀 맞지않는 설계 스타일을 걸러내는 작업이다.
  3. Evaluate Candidate Architecture Styles
    • 선정된 후보들을 꼼꼼히 평가하여 Style을 선정한다.
    • 각각의 잠재적 설계 스타일들을 서로 다양한 방식으로 비교하여 적용할 스타일을 골라낸다.
  4. Integrate Architecture Styles
    • Style들을 합친다.
    • 골라낸 스타일들을 시스템에 맞춰 합쳐서 전체 시스템의 설계 스타일로 정의한다.
  5. 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의 디자인 과정을 포스팅해 보겠습니다.

2019/12/13 - [IT/SW Architecture] - 소프트웨어를 설계하는 방법 (3) - Design with Functional Viewpoint

 

소프트웨어를 설계하는 방법 (3) - Design with Functional Viewpoint

Design with Functional Viewpoint Writer: Harim Kang SW 설계에 관한 가이드라인을 글로 수록합니다. 해당 내용은 지능형 시스템(Intelligent System) 설계를 위한 가이드라인을 포함하고 있습니다. 앞서 소프트..

davinci-ai.tistory.com

관련글 더보기

댓글 영역