Gartner:對傳統應用進行現代化改造,成功實現云原生
想讓現有的、云時代之前的企業應用程序能夠充分利用云計算,存在著許多技術障礙,例如操作系統版本不受支持,與企業數據存儲或者文件存儲緊密集成的單體架構,而且難以滿足利益相關方的期望(包括降低成本的期望)。
如果是采用云原生架構的“綠地”應用程序,它們受到這些挑戰的影響就要小得多,但是這些新的應用程序在組織現有的應用程序中只占一小部分。
使用“拎包入住”方式遷移到基礎架構即服務(IaaS)上重新托管的舊有應用程序通常無法充分利用所有的云特性。采用這種重新托管方法的組織經常會發現遷移團隊走了捷徑,提出的變通辦法只是為了讓應用程序能夠運行起來。
之所以會出現這些捷徑和變通的辦法,是因為重新托管的目標是要在時間緊迫的情況下遷移應用程序,并支持其他已經運行在云端、經過了重大調整的應用程序。從來沒有對舊有的應用程序進行過云原生就緒情況的全面評估,這就導致了糟糕的后果。
一個需要考慮的問題是,舊有應用程序通常會依賴傳統的關系型數據庫管理系統(RDBMS)和原子化、一致、隔離和持久(ACID)的事務來實現強大的數據完整性。
這些傳統數據庫依賴著底層堅如磐石的、可靠的基礎設施。它們不是為了基礎結構不穩定或者容易發生故障的環境構建的。這些數據庫還意在向上而不是向外擴展,這阻礙了你利用豐富的云資源并限制了彈性擴展應用程序的能力。
然而,當代應用程序設計利用多語言持久性來優化特定用例的數據庫行為。這一概念允許開發人員選擇最適合數據及其編程方法的數據存儲,而不是強制數據適應傳統的結構化查詢語言(SQL) 模型。將RDBMS用于所有數據存儲可能會導致設計缺乏靈活性,并在擴展數據庫時產生大量成本。
采用云計算需要仔細規劃,并深入了解現有應用程序向云原生架構遷移的障礙所在。Gartner的客戶經常會把糟糕的規劃和不恰當的遷移策略列為云使用不達標的原因。如果沒有規劃和結構,就經常會為了讓應用程序運行,在遷移中做出決策。這會導致其與既定目標不一致。
設定目標
云遷移通常包含多種應用程序,其中一些應用程序需要大修或更新,并且可以受益于云提供的功能。這些計劃因組織而異。這些舉措背后的決策、流程和人員是每個組織特定的。但是,Gartner明確并介紹了幾個會反復出現的技術目標。
至關重要的是,必須用特定的業務目標來指導組織的云現代化工作,并且要確保整個組織內的利益相關方都與這些目標保持一致。例如,并非所有應用程序的現代化都需要重新構建。如果數據庫的分區方式不是給定應用程序的云遷移目標之一,可能就不需要對其進行調整來提高可伸縮性。
構建工作量記分卡
Gartner 提出了一個應用程序現代化的框架,涵蓋了針對特定熱點的架構評估。
應該評估每個熱點是如何妨礙遷移的業務目標,以此確定實現應用程序現代化所需的工作量。應用程序越容易調整,采用云原生架構模式和原則所需的工作、精力和資源就越少。
此步驟要求你建立一個工作量記分卡,在評估工作的其余部分分析每個熱點時填充這個卡片。
阻礙現代化的因素
有兩個主要的制約因素會增加應用程序現代化的工作量——耦合和復雜性。
可以將耦合看作是應用程序內、外部相互依賴關系的數量。例如,從代碼的角度看,你要檢查代碼塊如何同彼此以及調用圖交互——包括方法、類和函數的組成方式。依賴于不同代碼塊的腳本或代碼塊被視為耦合。
體系架構和代碼的復雜性會讓耦合問題變得更加復雜。嚴密耦合且嚴重依賴底層軟、硬件細節的應用程序組件可能會帶來復雜性。這種復雜性限制了面向云原生平臺的部署、運行時和托管選擇。實現那些相似且同時變化的底層依賴項和組件的抽象和封裝非常重要。從這個意義上說,復雜性意味著具有難以實現的依賴關系。應用程序級的依賴關系——例如應用程序組件之間的依賴關系——也可能會有影響。
對應用程序的評估將揭示應用程序中耦合的深度和復雜性。它讓你能夠確定對應用程序中的每個熱點進行現代化改造所需的總體工作量。根據這些現代化的不同程度,你可以為代碼的不同部分選擇不同的策略。
現代化的程度和業務目標直接相關。如果應用程序的變化能力足以滿足這些目標,重構代碼并將應用程序進行現代化,適應云原生平臺就足夠了。如果全面現代化的工作量很大,你可能就別無選擇了,只能重新構建整個應用程序。但是,如果從應用程序架構的角度來看,你的現代化水平較低,而從數據持久性的角度來看現代化程度較高,你也可以重新架構并重新構建單個組件。
其他的一些挑戰
在云環境中,你是在嘗試使用大量不可靠的組件來構建可靠的應用程序,這些組件可能會發生故障,這些故障的類型通常會與你在單臺機器上看到的應用程序組件的故障不同。云計算需要一種能夠在具有短暫資源的環境中工作的架構,這些資源更有利于水平擴展而非垂直擴展。
云原生架構將平衡云必須提供的優勢,以及不同的和外包給提供商的域,這就限制了你對它們的控制。你的組織遷移到云端的目的是增加可擴展性、擴展業務以及采用新的渠道,并在需求減少時減少資源。這可能會導致與正常日常操作不同的、不可預測的負載。
在云提供商中使用本機托管服務也會給應用程序帶來延遲,因為應用程序組件現在分布在網絡上。云原生架構師還需要考慮到,一些云服務故障、系統故障和安全漏洞是他們完全無法控制的。
領導層必須全面轉變思維方式,了解應該在何時何地對應用程序使用云原生原則。領導必須讓個人能夠在組織環境中不斷學習并精進這些課程。讓云原生現代化成為應用程序維護周期的固定組成部分。需要對組織變革流程進行大量投資,因為云創新超越了現有的組織流程和文化,并打破了現有的流程。