為什么應(yīng)用程序依賴關(guān)系映射對于云遷移至關(guān)重要
?軟件依賴是高效的、基于組件的編程的關(guān)鍵部分。同時,它們可能會成為快節(jié)奏的敏捷開發(fā)團(tuán)隊的障礙,因為它們會使部署、更新和遷移軟件應(yīng)用程序變得更加困難。許多應(yīng)用程序有幾十個或幾百個依賴項,每個依賴項都有自己的傳遞依賴項,使問題變得更糟。
依賴項是提供主要組件所依賴的所需功能的組件。可以使用 npm 或 Maven 等包管理器、GitHub 等基于 Git 的代碼存儲庫和Docker Hub等容器鏡像注冊表將它們合并到代碼中。
為什么應(yīng)用程序依賴關(guān)系映射對于云遷移至關(guān)重要
軟件依賴是高效的、基于組件的編程的關(guān)鍵部分。同時,它們可能會成為快節(jié)奏的敏捷開發(fā)團(tuán)隊的障礙,因為它們會使部署、更新和遷移軟件應(yīng)用程序變得更加困難。許多應(yīng)用程序有幾十個或幾百個依賴項,每個依賴項都有自己的傳遞依賴項,使問題變得更糟。
依賴項是提供主要組件所依賴的所需功能的組件??梢允褂?npm 或 Maven 等包管理器、GitHub 等基于 Git 的代碼存儲庫和Docker Hub等容器鏡像注冊表將它們合并到代碼中。
應(yīng)用程序依賴關(guān)系映射涉及發(fā)現(xiàn)和識別應(yīng)用程序組件、它們的依賴關(guān)系和底層基礎(chǔ)設(shè)施之間的依賴關(guān)系和交互。創(chuàng)建應(yīng)用程序依賴關(guān)系圖是了解復(fù)雜應(yīng)用程序結(jié)構(gòu)和了解在不同環(huán)境中部署它們的影響的重要部分。
為什么應(yīng)用程序依賴關(guān)系對云遷移至關(guān)重要
應(yīng)用程序依賴關(guān)系映射可確保您已確定必須遷移到云的所有組件。您可能不需要將所有組件遷移到云中,但您確實需要確保所有依賴項都被識別并一起遷移。否則,您的應(yīng)用程序可能會遇到性能問題,因為重要的依賴關(guān)系仍然存在于本地。
例如,如果您將應(yīng)用服務(wù)器移動到云端,但將應(yīng)用程序的數(shù)據(jù)庫保留在本地,您的應(yīng)用程序?qū)⒔?jīng)歷嚴(yán)重的性能下降,并且還可能導(dǎo)致相關(guān)應(yīng)用程序失敗。一旦依賴關(guān)系被破壞,所有相關(guān)的應(yīng)用程序都會受到影響。因此,在將應(yīng)用程序遷移到云時,您必須包括所有關(guān)聯(lián)的依賴項。
應(yīng)用程序依賴映射工具如何提供幫助
應(yīng)用程序依賴關(guān)系映射可以幫助您避免應(yīng)用程序性能不佳和服務(wù)中斷。它是遷移過程的關(guān)鍵組成部分,但如果沒有自動化工具也很困難。應(yīng)用程序依賴映射工具檢查應(yīng)用程序并提供以下幫助:
- 建模所有服務(wù)器間關(guān)系
- 識別入站和出站連接延遲
- 確定必要的 TCP 端口
- 檢測正在運行的進(jìn)程
- 隨時間推移的應(yīng)用程序性能監(jiān)控
云供應(yīng)商提供為其環(huán)境開發(fā)的特定應(yīng)用程序依賴關(guān)系映射工具。例如,亞馬遜網(wǎng)絡(luò)服務(wù) (AWS)、谷歌云和微軟 Azure 提供專有工具來幫助管理這個過程。但是,這些工具與每個提供商相關(guān)聯(lián),這意味著您應(yīng)該使用與您選擇的目標(biāo)云環(huán)境相匹配的供應(yīng)商工具。
或者,您可以使用提供類似服務(wù)但與供應(yīng)商無關(guān)的開源工具。如果您想要的評估并非特定于單個云供應(yīng)商環(huán)境,請使用這些工具。
映射應(yīng)用程序依賴項以準(zhǔn)備云遷移
應(yīng)用程序由依賴API和工具的層次結(jié)構(gòu)組成。層次結(jié)構(gòu)從應(yīng)用程序的接口開始,然后通過平臺工具向下延伸。依賴關(guān)系管理有助于識別相關(guān)版本的組合,并確保開發(fā)團(tuán)隊在發(fā)生更改時識別新的應(yīng)用程序依賴關(guān)系。
版本控制應(yīng)用程序組件
此過程的第一步涉及對應(yīng)用程序組件進(jìn)行版本控制。如果你打算獨立部署一個特定的軟件組件,你需要為每個修訂分配一個版本號,然后跟蹤這個版本的依賴鏈。
此技術(shù)可確保您了解與每個應(yīng)用程序版本關(guān)聯(lián)的特定平臺工具版本。如果您需要回滾,您知道需要回滾哪些附加組件以確保版本兼容性。
更改平臺組件
這種技術(shù)需要更改一些平臺組件,例如中間件,這也需要同步每個應(yīng)用程序的平臺版本。您應(yīng)該從應(yīng)用程序依賴鏈的頂部開始。
每個應(yīng)用程序都設(shè)計為使用特定的操作系統(tǒng)和中間件功能,需要工具的“版本 Y 或更高版本”。因此,您必須針對工具的依賴項驗證具有指定版本的每個工具,并繼續(xù)驗證這些依賴項中的每一個,直到到達(dá)依賴項鏈的底部。
但是,某些應(yīng)用程序依賴項并不像其他應(yīng)用程序依賴項那樣明顯和明確。如果您希望在不同來源的管理程序平臺上的虛擬機 (VM) 中運行來賓操作系統(tǒng),您可能會遇到問題。
如果云堆棧版本(如 OpenStack)需要特定的腳本語言版本,您也可能會遇到問題。您可以通過針對標(biāo)準(zhǔn)中間件和操作系統(tǒng)組合測試每個依賴項鏈來緩解此問題,確保識別所有依賴項。
重建依賴樹
準(zhǔn)備好遷移到云后,您需要補充應(yīng)用程序的依賴關(guān)系樹,并包含對云提供商 API 和功能的所有引用。確保確定提供者如何通知工具和 API 的更改,并準(zhǔn)備驗證這些更改可能創(chuàng)建的新依賴項。
對于多云或混合部署,您必須比較計劃遷移到云平臺邊界之外的所有組件和應(yīng)用程序的云依賴關(guān)系樹。請注意,對于每個提供程序具有不同的依賴關(guān)系樹可能會導(dǎo)致在提供程序平臺之間進(jìn)行擴(kuò)展或故障轉(zhuǎn)移時出現(xiàn)問題。您可以通過提前同步組件來避免這種情況。
每當(dāng)您更改軟件平臺組件時,您還應(yīng)該重建您的依賴關(guān)系樹。基本更新可以撤消您所做的所有映射和工作,并且您可以輕松忽略對小型中間件組件的更改。您可以通過設(shè)置生命周期管理流程來緩解這種情況,以確保在引入不兼容的元素時不會出現(xiàn)依賴性問題。
結(jié)論
在本文中,我解釋了應(yīng)用程序依賴映射的基礎(chǔ)知識,并展示了應(yīng)用程序依賴工具如何使云遷移更安全、更容易:
- 版本控制應(yīng)用程序組件——了解您的應(yīng)用程序期望所有依賴組件的版本。
- 更改平臺組件——確定切換某些平臺組件的影響。
- 重建依賴關(guān)系樹- 使用現(xiàn)有依賴關(guān)系樹的映射在云環(huán)境中重建匹配的依賴關(guān)系樹。
我希望這將幫助您評估依賴映射的使用并使您的下一次遷移成功。