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

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

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for James Wang 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

Avatar for James Wang

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