關於老系統現代化的各種方式 Modernize Legacy Systems


  1. 說明
    1. Encapsulate
    2. Rehost
    3. Replatform
    4. Refactor
    5. Rearchitect
    6. Rebuild
    7. Replace
  2. 參考資料

思考 Gartner 所提出對應老系統現代化的各種方式,結合目前工作的情境思考對應的挑戰以及商機。方式包括了封裝、重新部署、環境遷移、重構、架構改造、重新開發與取代。

logo

說明

Encapsulate

Leverage and extend the application features by encapsulating its data and functions, making them available as services via an API.
Gartnet.com

Encapsulate 翻譯為封裝,不改寫任何的程式碼,因原本的系統的功能屬核心功能,藉由 Service 的方式向原本的系統介接。

挑戰:將功能介接進行介面化的設計方式。

商機:代為封裝原始系統,熟稔 WebAPI、gRPC、Web Service 介接方式;需要對多種平台有基本的認識 (Mainframe, Unix, Linux, Windows)。

Rehost

Redeploy the application component to other infrastructure (physical, virtual or cloud) without modifying its code, features or functions.
Gartnet.com

Rehost 翻譯為重新部署,將原本的系統在相同的平台但不同的硬體設施上重新部署。例如從舊實體機到新實體機實體機到虛擬機或者從 On-Premises 到 Cloud

挑戰:部署過程的詳盡 SOP、系統 Dependency 是否有文件可以支援。

商機:代為協助重新部署,需要熟悉系統開發、伺服器作業系統、資料庫,並熟悉三者之間的交互關係。

Replatform

Migrate to a new runtime platform, making minimal changes to the code, but not the code structure, features or functions.
Gartnet.com

Replaform 翻譯為環境遷移,例如從 Mainframe 到 Open (Java or .NET),以 JVM 的方式 Run Mainframe 上的 COBOL Code;或是 C# 從 .NET Framework 到 .NET。

挑戰:新的 Runtime 相容程度,相容程度越低需要改寫系統程式的幅度越高。

商機:開發 Runtime 相容執行 Legacy System 的 Code。

Refactor

Restructure and optimize the existing code (although not its external behavior) to remove technical debt and improve nonfunctional attributes.
Gartnet.com

Refactor 翻譯為重構,主要為消除開發過程因時間因素基於快速而留下的技術債 (得過且過、能動就好的開發方式),效益在於提升軟體的品質,以及增進未來的可維護性。

挑戰:沒有時間 (新的開發工作、舊的系統維護)、不知道如何重構以提升品質、重構者非原始開發者。

商機:軟體品質、測試專家協助輔導進行程式碼重構;程式碼重構輔助軟體。

Rearchitect

Materially alter the code to shift it to a new application architecture and exploit new and better capabilities.
Gartnet.com

Rearchitect 翻譯為架構改造,例如從單體式架構到微服務架構,以支援規模化 (Scalability) 、快速交付 (Agile、DevOps) 的優點。

挑戰:架構改造所需的人力以及知識門檻、架構調整後所需的測試工作。

商機:微服務、容器專家協助架構改造。

Rebuild

Redesign or rewrite the application component from scratch while preserving its scope and specifications.
Gartnet.com

Rebuild 翻譯為重新開發,在維護系統原有的規範及功能的情況下,改採不同的平台、架構、程式語言來進行開發設計。例如由 Mainframe 的 COBOL 重新開發為 .NET C#,並採 Web API 或者是 MVC 的架構。

挑戰:原本的系統規格文件是否保存良好、是否有人力進行重新開發、重新開發後所需的測試工作。

商機:委外開發。

Replace

Eliminate the former application component altogether and replace it, considering new requirements and needs at the same time.
Gartnet.com

Replace 翻譯為取代,從系統的功能面去整合、汰除,並結合新興的需求來進行設計,不保留原始的系統而革新式的改造。

挑戰:Legacy 功能被滿足外,新的需求一併加入考入,是否有人力進行開發、新舊平台切換所需的測試工作。

商機:委外開發。

參考資料

MODERNIZE LEGACY SYSTEMS