✍️
ZiXiang-Blog
  • Jerry Wang Blog
  • 使用 TorchServe 部署 Model
  • How do AppRTC work in WebRTC mechanism ?
  • [系統設計]- 容易產生設計盲點
  • Golang
    • [Golang] Goroutine Concurrency多執行緒淺談
    • [Golang]: 進階用法
    • Golang go mod 入門
    • [Golang] 讓 Goroutine Debug 變得更簡單
  • Security
    • HTTP Token 使用方式: Basic Token v.s Bearer Token
    • 從 RFC 規格書觀點解析 OAuth 2.0
    • 區塊鏈物聯網架構 解決哪些安全性議題?
  • Broker
    • [深入淺出MQTT]: v3.1.1與v5 的差異
    • Broker 到底是什麼?
  • patterns
    • Patterns for Organizing Domain Logic
    • Domain Model: 從無到有規劃新的服務
    • 淺談CQRS
    • Backend System in Microservice Architecture: Where Does data store?
    • Ambassador pattern with Shared Database Pattern
    • Microservice Pattern 犧牲了什麼?
  • K8s
    • 分散式系統: 現代軟體架構與設計考量
    • Kubernetes 超入門
    • Kubernetes 架構
    • K8s 在 DevOps 中的作用
  • Database
    • Relation Database Index Overview
    • Draft: RDBMS(MySQL) v.s NoSQL (Monogo)
    • [淺談]- How Do RDBMS Thread work ?
    • [淺談]-NoSQL資料庫怎麼選?
    • How do pick the database more correctly?
    • Draft: 關聯式資料庫需要知道的幾件事
  • HTTP
    • Overview The WebSocket Mechanism
Powered by GitBook
On this page
  • 錯誤:用越多 Pattern 就越猛
  • Reference

Was this helpful?

[系統設計]- 容易產生設計盲點

正確的設計: 理應是設計出一個不是最差的架構,而不是要試圖設計一個最好的架構 (Never shoot for the best architecture, but rather the least worst architecture)。

錯誤:用越多 Pattern 就越猛

正確的設計: 理應是設計出一個不是最差的架構,而不是要試圖設計一個最好的架構 (Never shoot for the best architecture, but rather the least worst architecture)。

在工作上時常會遇到 JR. 工程師剛上工就想要導入各種系統設計,但往往都無法被接受。原因通常不外乎是沒有延續本來系統的架構為理由,缺乏一制性等等。

要避免這種狀況,會有三個考慮的準則:

  1. 對於實際 feature 無關的考量特徵:

    指一些明確的設計特徵,像是 “效能,擴充性...” ,且通常會載明載 Spec 中

  2. 會直接影響到系統架構的考量特徵:

    指的是一些隱含式考量特徵,但這些不一定會被載明 spec 中,像是 安全性

  3. 達成系統運行

    這一類型是實際撰寫系統採用的設計,但原則上架構越簡單越好,只包含必要的架構

實際操作的時候,應該參考下列流程:

Read Requirements -> Extract needs characteristics -> pick must do characteristics

  • Read Requirements

    • 閱讀 Feature Requirements(實際商業需求) / non-feature (實際技術需求) 的需求,也或許可以產出隱含的需求。

      ex: non-feature 需求是像是 performance 等, 隱含需求像是 security 等等的

  • Extract needs characteristics

    • 除了要達到商業的目的之外,以及明確的需求之外,隱含的需求未必都要實作

  • pick must do characteristics

常用的系統Characteristics

System Domain Concern
Architecture characteristics

Mergers and acquisitions

Interoperability, scalability, adaptability, extensibility

Time to market

Agility, testability, deployability

User satisfaction

Performance, availability, fault tolerance, testability, deployability, agility, security

Competitive advantage

Agility, testability, deployability, scalability, availability, fault tolerance

Time and budget

Simplicity, feasibility

Reference

[1] Fundamentals of Software Architecture: An Engineering Approach, Mark Richards & Neal Ford

PreviousHow do AppRTC work in WebRTC mechanism ?Next[Golang] Goroutine Concurrency多執行緒淺談

Last updated 6 months ago

Was this helpful?