Upgrade to Pro — share decks privately, control downloads, hide ads and more …

實踐 BizDevOps 在遺留系統中的挑戰與策略

James Wang
October 03, 2023

實踐 BizDevOps 在遺留系統中的挑戰與策略

在這場演講中,我們將探討如何在遺留系統中實施 BizDevOps 的挑戰。在此過程中,領域驅動發現(Domain-Driven Discovery)的觀念扮演了關鍵角色。最終實現從商業到開發,再到營運,然後再回到商業的 BizDevOps 循環。

此為 DevOpsDays Taipei 2023 的分享:
https://devopsdays.tw/2023/session-page/2289

共筆連結:
https://hackmd.io/@DevOpsDay/2023/%2Fpn8WUIOFQPGLfXoLzT7O9w

James Wang

October 03, 2023
Tweet

More Decks by James Wang

Other Decks in Programming

Transcript

  1. 2 WARNING 本次分享過往我維護 Legacy System(遺留系統, 或稱為祖產) 的經驗談。 然而我的經驗建立在我當時面臨的問題與當下的 Context(場景、背景、上下文), 和各位不盡相同,內容恐無法直接套用到各位的環境。

    本場著重在挑戰與策略,不會談論任何的技術細節,也不會講到工具實務細節。又 因本場定為通識等級之分享,故本次內容廣度優先,沒太深入探討。 如果與你期待的不同,可現在轉移至其他分享教室。 此聲明與設計參考了 Web Conf 2023 的「回顧與展望,從DevOps鑑古觀今知未來 v1.0 公開版 – 陳正瑋」簡報。 艦長參考了同場研討會的「單元測試不是有寫就好 – Kuma Syu」。
  2. 5 歸納問題: 三大挑戰 無法 看見全貌 缺乏 持續更新維護 組織文化與資源 和知識的限制 安全性的挑戰

    難以擴展或適應新的業務需求 依賴既有的工作方式和流程 訓練新員工的成本和時間 富含冗於過時的程式碼 業務架構與技術架構不匹配 使用過時或不再支援的技術框架或平台 不了解當初設計緣由
  3. 6 三大挑戰: 無法看見全貌 無法 看見全貌 缺乏 持續更新維護 組織文化與資源 和知識的限制 當團隊無法瞭解整體架構、設計決策、或當初的業務需求,就可能導

    致不一致的開發、重複的工作或是不合適的設計決策。 此外,當團隊成員只專注於他們負責的部分,可能會忽略整體的最佳 實踐或效率。
  4. 7 三大挑戰: 缺乏持續更新維護 無法 看見全貌 缺乏 持續更新維護 組織文化與資源 和知識的限制 當初基於當時的業務需求或業界趨勢考量,隨著時間的推移,技術快

    速發展,舊的系統可能無法跟上當前的標準或最佳實踐。缺乏持續的 更新和維護會使這些系統在功能、效能和安全性上都落後。
  5. 8 三大挑戰: 組織文化與資源和知識的限制 無法 看見全貌 缺乏 持續更新維護 組織文化與資源 和知識的限制 組織的文化和資源配置對於遺留系統的維護和改進至關重要。如果組

    織文化不重視技術更新或持續學習,則很難驅動系統的進步。同時, 如果缺乏適當的資源和專業知識,即使有意願,也難以進行有效的更 新。
  6. Case Study: 美國的 Obamacare 網站 2013 年,美國的 Affordable Care Act(通常稱為

    Obamacare)的官 方網站 Healthcare.gov 啟動時遭遇了多次故障和效能問題。部分原 因是該網站依賴多個不同的後端系統(許多是遺留系統),且這些系 統之間的整合存在問題。 事後,歐巴馬總統在一次採訪中提到,沒有人意識到網站異常帶來的 嚴重程度。 9 15% 27000 6% Source: Obamacare: President defends healthcare 'legacy' - BBC News
  7. Case Study: 美國的 Obamacare 網站 2013 年,美國的 Affordable Care Act(通常稱為

    Obamacare)的官 方網站 Healthcare.gov 啟動時遭遇了多次故障和效能問題。部分原 因是該網站依賴多個不同的後端系統(許多是遺留系統),且這些系 統之間的整合存在問題。 10 Source: Obamacare: President defends healthcare 'legacy' - BBC News 無法 看見全貌 缺乏 持續更新維護
  8. 定義問題: 我們現在遇到什麼問題? 整理團隊面臨的挑戰或困境。 • 我們正在解決哪些問題? • 是什麼人受到影響? • 我們期待問題解決後,成功是什麼樣子? •

    有什麼限制住我們,有哪些約束條件? 團隊對於每個人提出的問題, 都要有共同一致的理解。 13 定義問題 分析當前狀況 遇見願景 潛在矛盾 策略行動 執行行動方案
  9. 分析當前現況: 業務流程 關注業務流程與結構。目的是看見全貌。 14 參考資料:淺談 Domain Driven Design by James

    Wang - Speaker Deck 定義問題 分析當前狀況 遇見願景 潛在矛盾 策略行動 執行行動方案
  10. 分析當前現況: 指標 因為我們是 Legacy System,理論上應該會有現行系統運行監控的數 據,可供我們參考。 如果系統老舊沒有辦法做任何事情,那就往前端去觀察反向代理伺服 器上的 Log,或架設 Gateway

    蒐集數據。 重點是,我們要收集什麼數據呢?以下指標供大家參考。 16 各功能錯誤率 各功能使用率 各功能回應時間 平均故障修復時間 平均故障間隔時間 訂單成交率 訂單處理時間 參考資料:淺談 EventStorming 和 Observability by 雷N 定義問題 分析當前狀況 遇見願景 潛在矛盾 策略行動 執行行動方案
  11. 轉換架構與技術問題 17 技術 業務 外在驅動 (客戶) 內在驅動 (工程、業務) 存在某技術 債,可能導

    致系統服務 停止。 因存在某技術債,在特定 條件下會引發此問題,導 致會讓服務中斷,將無法 達到承諾客戶的 SLA。 要配合數據(指標)呈現給主管唷~ Source: SRE 實踐與開發平台指南:從團隊協作、原則、架構和趨勢掌握全局,做出精準決策 定義問題 分析當前狀況 遇見願景 潛在矛盾 策略行動 執行行動方案
  12. 轉換架構與技術問題 18 技術 業務 外在驅動 (客戶) 內在驅動 (工程、業務) 存在某技術 債,可能導

    致系統服務 停止。 因存在某技術債,在特定 條件下會引發此問題,導 致會讓服務中斷,將無法 達到承諾客戶的 SLA。 要配合數據呈現給主管唷~ Source: SRE 實踐與開發平台指南:從團隊協作、原則、架構和趨勢掌握全局,做出精準決策 核心關鍵: ROI(Return On Investment, 投資回報率) vs. COI(Cost Of Inaction, 不採取行動的代價) 定義問題 分析當前狀況 遇見願景 潛在矛盾 策略行動 執行行動方案
  13. 策略規劃: 重構 vs. 重寫 選擇方案: • 日落 • 維護 •

    提取和重塑 • 直接遷移 • 全面現代化(重寫) • … 25 Source: Modernization Strategy Selector. | by Nick Tune | Strategy, Architecture, Continuous Delivery, and DDD 定義問題 分析當前狀況 遇見願景 潛在矛盾 策略行動 執行行動方案 本次分享將以遷移為範例
  14. 策略規劃: 遷移計畫-絞殺者(Strangler)模式 26 Router Router Router Legacy Legacy Modern Modern

    Time TRANSFORM CO-EXIST ELIMINATE 定義問題 分析當前狀況 遇見願景 潛在矛盾 策略行動 執行行動方案
  15. 策略規劃: 利用開關切換新舊服務 31 Source: Feature Toggle 應用常見問題 | Miles' Blog

    (mileschou.me) Source: Feature Toggles (aka Feature Flags) (martinfowler.com) 定義問題 分析當前狀況 遇見願景 潛在矛盾 策略行動 執行行動方案
  16. 策略行動: Architecture Decision Record (ADR) 架構決策記錄 (ADR) 是一個記錄重要架構決策及其情境和結果的檔案。 基本格式包含了標題(Title)、上下文(Context)、決策(Decision)、狀 態(Status)、與結果(Consequences)。

    大家是否有發生過,為什麼前人要這樣設計?當初是有遇到什麼問題 或挑戰嘛?內心有千百種問號。然而,系統沒有 bug,運行正常。你 會調整架構設計嘛?是否會擔心害怕是不是有特殊原因所以才這樣設 計呢? 如果有以上問題,那就從今天起,開始紀錄吧。 33 Source: Documenting Architecture Decisions (cognitect.com) 定義問題 分析當前狀況 遇見願景 潛在矛盾 策略行動 執行行動方案
  17. 策略行動: 專案架構設計 34 Source: 軟體架構淺談 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天

    (ithome.com.tw) 軟體架構應與業務 架構保持一致,要 讓架構本身能突顯 出業務功能。 依據業務架構設計 軟體架構,有需要 時可以隨時拆分服 務,方便調整。 定義問題 分析當前狀況 遇見願景 潛在矛盾 策略行動 執行行動方案