Ch20: 分析架構風險
分析架構風險
風險矩陣與評估
- 將系統中的顧慮,依照風險發生的可能性及發生時的影響程度依序評估
- 先考慮「影響」再考慮「可能性」
- 風險評估的作法差異很大
- 有時很主觀
影響\可能性 | 低 | 中 | 高 |
---|---|---|---|
低 | 1🟢 | 2🟡 | 3🟠 |
中 | 2🟡 | 4🟠 | 6🔴 |
高 | 3🟠 | 6🔴 | 9🟣 |
風險矩陣範例
- 評估報告是時間上的一個「快照」
- 隨著系統演進,對整體的風險有視覺化的評估
- 原始版
- 只留高風險
- 加上走向
- 走向+向量
影響\可能性 | 客戶註冊 | 前臺結帳 | 訂單屢行 | 訂單出貨 | 風險總值 |
---|---|---|---|---|---|
可擴展性 | 🟡 | 🔴 | 🟢 | 🟡 | 11 |
可用性 | 🟠 | 🟠 | 🟡 | 🟢 | 10 |
效能 | 🟠 | 🟡 | 🟠 | 🔴 | 15 |
安全性 | 🔴 | 🟠 | 🟢 | 🟢 | 11 |
資料完整性 | 🔴 | 🔴 | 🟢 | 🟢 | 17 |
風險總值 | 24 | 21 | 8 | 11 |
影響\可能性 | 客戶註冊 | 前臺結帳 | 訂單屢行 | 訂單出貨 | 風險總值 |
---|---|---|---|---|---|
可擴展性 | 🔴 | 6 | |||
可用性 | 0 | ||||
效能 | 🔴 | 6 | |||
安全性 | 🔴 | 6 | |||
資料完整性 | 🔴 | 🔴 | 15 | ||
風險總值 | 15 | 12 | 0 | 6 |
影響\可能性 | 客戶註冊 | 前臺結帳 | 訂單屢行 | 訂單出貨 | 風險總值 |
---|---|---|---|---|---|
可擴展性 | 🟡 | 🔴➕ | 🟢 | 🟡 | 11 |
可用性 | 🟠 | 🟠 | 🟡➖ | 🟢 | 10 |
效能 | 🟠➖ | 🟡➕ | 🟠➖ | 🔴➕ | 15 |
安全性 | 🔴➖ | 🟠 | 🟢 | 🟢 | 11 |
資料完整性 | 🔴➕ | 🔴➖ | 🟢➖ | 🟢 | 17 |
風險總值 | 24 | 21 | 8 | 11 |
影響\可能性 | 客戶註冊 | 前臺結帳 | 訂單屢行 | 訂單出貨 | 風險總值 |
---|---|---|---|---|---|
可擴展性 | 🟡 | 🔴⤴️4 | 🟢 | 🟡 | 11 |
可用性 | 🟠 | 🟠 | 🟡⤵️3 | 🟢 | 10 |
效能 | 🟠⤵️6 | 🟡⤴️1 | 🟠⤵️4 | 🔴⤴️4 | 15 |
安全性 | 🔴⤵️9 | 🟠 | 🟢 | 🟢 | 11 |
資料完整性 | 🔴⤴️6 | 🔴⤵️9 | 🟢⤵️2 | 🟢 | 17 |
風險總值 | 24 | 21 | 8 | 11 |
風險激盪 (Risk Storming)
沒有架構師能單獨決定整體風險
- 透過一群人合作激盪出架構的風險
Storming:一群人一起合作激盪火花
- Event Storming: 事件風暴,DDD的分析工具
- Model Storming: Agile Modeling的Just-in-time塑模方法
是符合Agile Modeling的5項價值觀的作法
- Communication 有效溝通
- Simplicity 最小有價值解法(MVP)
- Feedback 儘早取得回饋
- Courage 嘗試的勇氣
- Humility 謙卑地接受意見
1. 確認 Identification
- 會議前發出架構圖給所有與會者
- 參與者先各自(不一起合作)指定架構的風險值為1~10的何者
- 避免彼此互相影響
- 將注意力從特定區域離開;但要盡可能在同一個維度上
- 維度:效能、可擴展性...etc.
- 區域:資料庫、附載平衡器、快取...etc.
- ✅ 在可擴展性上進行風險風暴,尋找架構組件的可擴展性具有風險的區域
- ⛔ 在網站伺服器上進行事件風暴,尋找網站伺服器具有風險的維度
2. 共識 Consensus
- 將大家的結果合起來,努力在風險區域上取得共識
- 例如:給出最高風險跟最低風險的人,解釋自己的想法..etc.
3. 減緩 Mitigation
- 針對架構中,原本認為沒有問題的區域,進行修改或加強
風險激盪範例
可用性 Availability
- 原始架構
- 可用性的確認
- 可用性的架構修改
彈性 Elasticity
- 原始架構
- 針對彈性的架構修改
- 將護士來的流量,與自助式來的流量分流 (Prioirty Queue)
- 針對突發的診斷需求製作新服務
安全性 Security
- 原始架構
- 針對安全性的架構修改
- 將API Gateway分開
- 依照不同的Auth方法分開
- 做出實體的隔離,避免因為閘道本身的實作缺失導致嚴重的資料洩漏風險