將復(fù)雜的業(yè)務(wù)關(guān)鍵型應(yīng)用程序從內(nèi)部遷移到云時(shí),最安全、最有效的方法包括三個(gè)階段。
在第一階段,應(yīng)用程序被“lifted and shifted”到云端,而無需重構(gòu)。
在第二階段,IT可以使用克隆的環(huán)境來提高軟件開發(fā)和測試的效率,同時(shí)逐段重構(gòu)應(yīng)用程序以使用云原生服務(wù)。即使不使用云原生服務(wù),也可以引入環(huán)境構(gòu)建的增量自動(dòng)化,從非自動(dòng)化工作模型開始,逐步創(chuàng)建全自動(dòng)化版本。
在第3階段,大多數(shù)應(yīng)用程序以云原生格式存在,但它保持與內(nèi)部的連接。本文概述的概念為云創(chuàng)新創(chuàng)造了一條快速而安全的道路,同時(shí)減少了對現(xiàn)有內(nèi)部資源的依賴。
讓我們詳細(xì)了解一下這條“通往云的安全之路”。
第1階段——lift and shift
在第1階段,內(nèi)部應(yīng)用程序在目標(biāo)云中復(fù)制,無需重構(gòu)。這使得它能夠?qū)?ldquo;云靈活性”應(yīng)用到歷史上“云頑固”的系統(tǒng)中,使快速克隆、短暫性、軟件定義的網(wǎng)絡(luò)和API自動(dòng)化能夠應(yīng)用到現(xiàn)在在云中運(yùn)行的應(yīng)用程序中。這一步完成后,IT可以將環(huán)境“克隆”分發(fā)給多個(gè)工程組,使每個(gè)工程組能夠以更快的速度同時(shí)獨(dú)立地工作。
好的做法是創(chuàng)建內(nèi)部上最終記錄系統(tǒng)的“克隆”,但不將任何組件重新設(shè)計(jì)為云原生等價(jià)物。創(chuàng)建相同數(shù)量的VM/LPAR(邏輯分區(qū))、相同的內(nèi)存/磁盤/CPU分配、相同的文件系統(tǒng)結(jié)構(gòu)、相同的確切IP地址、相同的確切主機(jī)名、相同的網(wǎng)絡(luò)子網(wǎng)等。
階段1:將應(yīng)用程序從內(nèi)部遷移到云,進(jìn)行有限的架構(gòu)更改。
請注意,在IBM i系列或AIX中運(yùn)行的應(yīng)用程序不能在沒有專門修改的情況下lift and shift到Azure、GCP或AWS。但是,有些解決方案提供商提供了這種功能。向這些傳統(tǒng)應(yīng)用程序添加云功能的好處通常會(huì)超過這樣做的投資成本。
一旦在云中創(chuàng)建了表示“環(huán)境”的VM/LPAR的集合,環(huán)境就被保存為一個(gè)稱為模板的對象。該模板用于克隆其他工作環(huán)境。克隆是模板的完全副本,包括主機(jī)名、IP地址、子網(wǎng)和磁盤分配。多個(gè)環(huán)境克隆可以同時(shí)運(yùn)行而不會(huì)發(fā)生沖突,盡管設(shè)置這些克隆所需的工作因云提供商而異。
從模板創(chuàng)建隨時(shí)可用的環(huán)境是基于云的方法最強(qiáng)大的地方。它提供了參考系統(tǒng)的多個(gè)精確副本,分發(fā)給許多工程/開發(fā)/測試組,所有這些組都可以并行運(yùn)行。不需要更改單個(gè)服務(wù)器的IP地址或其主機(jī)名。
每個(gè)環(huán)境都在一個(gè)虛擬數(shù)據(jù)中心中與其他環(huán)境協(xié)調(diào)運(yùn)行。如果環(huán)境需要與其他內(nèi)部資源通信,則通過隔離的NAT機(jī)制來區(qū)分它們。許多環(huán)境包含具有相同主機(jī)名、IP地址等的相同VM克隆基本鏡像。
內(nèi)部到云工作流:應(yīng)用程序成為可以克隆的模板。
如有必要,將模板分配給項(xiàng)目,并將這些項(xiàng)目分配給用戶組。大多數(shù)云提供商都提供了一個(gè)內(nèi)置的訪問控制/安全模型,因此用戶只能處理分配給他們的內(nèi)容——例如,QA用戶無法看到單獨(dú)分配給ENG的環(huán)境。用戶還具有角色分配,允許他們查看/編輯/管理在分配給項(xiàng)目的環(huán)境中定義的VM/LPAR。
如何創(chuàng)建具有重復(fù)地址空間的克隆環(huán)境
要?jiǎng)?chuàng)建與最終目標(biāo)系統(tǒng)復(fù)本相同網(wǎng)絡(luò)拓?fù)涞亩鄠€(gè)工作環(huán)境,必須實(shí)現(xiàn)某種形式的隔離,以避免重復(fù)環(huán)境之間的沖突。在這種情況下,“復(fù)制”意味著在每個(gè)環(huán)境中重新使用相同的主機(jī)名、IP地址和子網(wǎng)。理想情況下,每個(gè)環(huán)境都應(yīng)該存在于自己的軟件定義的網(wǎng)絡(luò)空間中,而其他正在運(yùn)行的環(huán)境是看不到的。每個(gè)環(huán)境都成為一個(gè)虛擬的私有數(shù)據(jù)中心。
這里有一種使用“環(huán)境虛擬路由器”(EVR)實(shí)現(xiàn)的方法。克隆環(huán)境通過EVR與上游內(nèi)部資源通信,EVR隱藏包含重復(fù)主機(jī)名和IP地址的低級VM,并向較大內(nèi)部網(wǎng)絡(luò)公開唯一的IP地址。這為多個(gè)重復(fù)環(huán)境在不破壞基本網(wǎng)絡(luò)結(jié)構(gòu)的情況下和諧地存在創(chuàng)造了一種簡單而優(yōu)雅的方式。
通過允許存在重復(fù)的主機(jī)名和IP地址,單個(gè)主機(jī)不必經(jīng)歷“重IP”過程,這是一個(gè)容易出錯(cuò)且耗時(shí)的過程。與“跳轉(zhuǎn)主機(jī)”配對的EVR可以配置為轉(zhuǎn)發(fā)ssh請求(通過ssh代理、OpenSSH7.x和更高版本),這允許SSH進(jìn)入環(huán)境中的每個(gè)唯一主機(jī)。從內(nèi)部,用戶將SSH連接到環(huán)境中的任何主機(jī)(例如ssh user environment-1-host-2),它向內(nèi)部公開一個(gè)唯一的IP地址,然后在單個(gè)環(huán)境中向下中繼到VM。
具有重復(fù)的RFC1918IP地址且沒有沖突的多個(gè)環(huán)境。
一旦克隆環(huán)境被創(chuàng)建并傳遞給適當(dāng)?shù)膱F(tuán)隊(duì),項(xiàng)目就可以進(jìn)入下一階段了。
第2階段——重構(gòu)
一旦應(yīng)用程序組件被遷移到云中,它們就可以被用作開發(fā)/測試“沙盒”,同時(shí)它使用“Side Car”或“Strangler”等經(jīng)驗(yàn)證的設(shè)計(jì)模式將它們增量地重構(gòu)到原生云服務(wù)。開發(fā)人員也可以逐步將自動(dòng)化構(gòu)建到應(yīng)用程序中,即使他們不使用云原生服務(wù)。另一種方法是,只需重新托管應(yīng)用程序,而無需顯著更改其原始的內(nèi)部結(jié)構(gòu)。
這種方法遵循Martin Fowler描述的“Strangler Pattern”方法。微軟最近通過以下可視化方式描述了該過程:
遷移階段遺留與代碼原生轉(zhuǎn)換的平衡。
這種增量方法為最終重構(gòu)應(yīng)用程序的敏捷團(tuán)隊(duì)提供了以下好處:
——它允許使用增量方法進(jìn)行轉(zhuǎn)換,而不是從頭開始。重構(gòu)研發(fā)是以合理的方式進(jìn)行的,這樣整個(gè)應(yīng)用程序就可以繼續(xù)運(yùn)行。這就避免了創(chuàng)建應(yīng)用范圍廣泛的“全新”開發(fā)工作。遷移中的多個(gè)應(yīng)用程序采用“從頭開始”的方法是高風(fēng)險(xiǎn)的,并且違背了敏捷原則。
——速度加快。通過克隆原始的內(nèi)部應(yīng)用程序,可以將參考應(yīng)用程序的完整工作版本交付給執(zhí)行短期沖刺的敏捷團(tuán)隊(duì),每個(gè)團(tuán)隊(duì)調(diào)查要重構(gòu)的應(yīng)用程序的不同方面。
——將整個(gè)應(yīng)用程序拆分為更小的部分可以降低整個(gè)項(xiàng)目的風(fēng)險(xiǎn),并有可能縮短整個(gè)遷移過程。交付重構(gòu)的一小部分而不是整個(gè)應(yīng)用程序符合敏捷宣言中“工作軟件”和“響應(yīng)變化”的價(jià)值觀。
第3階段——遷移完成
在第3階段,大多數(shù)應(yīng)用程序以云原生格式存在,但保持一個(gè)專用的連接返回到內(nèi)部IT。如果你將遷移過程看作一個(gè)工廠,那么多個(gè)應(yīng)用程序?qū)⒁圆煌乃俾试谘b配線中運(yùn)行。當(dāng)應(yīng)用程序在第3階段退出工廠時(shí),轉(zhuǎn)換目標(biāo)列表中的其他應(yīng)用程序?qū)⑦M(jìn)入第1階段和第2階段。隨著使用云原生服務(wù)和組件的經(jīng)驗(yàn)增長,“工廠層”可以加快,因?yàn)樵谵D(zhuǎn)換過程中早期發(fā)現(xiàn)的問題的解決方案可以快速應(yīng)用,而不需要過度的研發(fā)、反復(fù)試驗(yàn)和重新工作。
內(nèi)部應(yīng)用程序最初“按原樣”移動(dòng)到云
重構(gòu)后,許多/大多數(shù)應(yīng)用程序組件現(xiàn)在都是原生云服務(wù)
安全、敏捷、成功
這種分三個(gè)階段的方法使組織能夠利用云的好處,如按需容量,并與許多敏捷軟件開發(fā)最佳實(shí)踐相匹配。它通過允許團(tuán)隊(duì)同時(shí)工作來加速許多工程、QA和開發(fā)/測試過程,同時(shí)通過在遷移過程中不重新構(gòu)建平臺(tái)或重新構(gòu)建來降低風(fēng)險(xiǎn),并通過以小的、可管理的增量來處理這些工作。對于重要的本內(nèi)部應(yīng)用程序來說,它既是最安全的遷移策略,也是最有可能成功的遷移策略。
原文鏈接:
https://thenewstack.io/3-phases-to-a-safe-and-successful-cloud-migration/