隨著云計算的廣泛采用,企業變得比以往更具活力。如今,許多公司的業務正在向云計算遷移。選擇云提供商幾乎總是確保長期供應商鎖定。無論是工程師很難對應用層進行適當的抽象和概括,或者應用程序數據的大小使得遷移變得困難,所以遷移到基于云計算的系統是一項非常具有挑戰性的任務。在從本地數據中心上的自托管系統遷移到云中時,應考慮以下挑戰。
(1)不當的抽象
在新環境中抽象失敗是向云遷移過程中面臨的最大挑戰之一。通常,應用程序的體系結構取決于其下面的一些本地化API。這在大規模運行的系統中特別常見,因為特定的問題只能在一定的規模中才能看得見。工程團隊經常使用一些類似黑客的程序和補丁來修復系統,但是黑客會在系統遷移過程中進行攻擊。定期代碼審核在一定程度上有助于減輕這些問題。
(2)部署過程中的差異
所有的現代持續集成和持續交付(CI/CD平臺都支持多個云提供商,但這還不夠。具有復雜設置和啟動過程的應用程序通常需要人工干預部署。近幾年來,這一點通過使用Puppet,Chef和Ansible等工具在很大程度上可以實現自動化。但是這種自動化通常與供應商特定的API聯系在一起,這些API需要配置,監控和拆卸服務器。但是,除非工程團隊花時間自己構建,否則這些API不適合小型的本地數據中心。
(3)重新架構
現代應用程序分布在多個不同區域的多個數據中心。這是遷移到基于云計算的部署的主要好處之一。企業正在逐漸從單一的應用程序基礎轉變為基于微服務的方法。一個本地數據中心遷移到多地點部署需要適當地重新構建應用程序。這意味著除了開發新版本之外,工程團隊還必須關心現有的安裝情況。遷移系統的關鍵部分經常會導致停機,新的部署仍然不能保證在首次運行中取得成功。建議在出現問題時對原有部署進行故障切換,以防出錯。大型遷移可能需要幾個月的時間才能完成,并可能需要額外的員工來完成。
(4)傳輸大量的數據
想象一下,必須將移動社交應用Instagram的業務從AWS云平臺遷移到微軟Azure云平臺上。傳輸這些海量的圖像本身就是一項艱巨的任務。認為有時最好的措施是物理運送數據,而不是將數據上傳到云計算提供商,這種行為并不瘋狂。這兩種策略都經過多年的分析,行業仍然沒有確定哪個策略才是正確的做法。這個問題不是取決于正在遷移的系統的類型,因此不能通過僅僅改變架構來緩解。一些企業從一開始就選擇使用云存儲,即使涉及到基于本地數據中心的部署。當數據不太活躍或者不需要立即處理時,這種方法特別普遍。Amazon S3存儲已經成為許多企業多年來的可靠存儲解決方案,并且一直是這一領域的領跑者。
如今的許多企業都喜歡快速收購和出售市場型的初創公司。遷移到云端或從一個提供商轉換到另一個提供商是這類業務的非常普遍的任務。通常情況下,需要使用當前的一套應用程序來制作新獲得的應用程序。有時,新產品轉移到新的云計算提供商或從云端遷移到自我托管的設置,以利用已經購買的合同或硬件,就像Instagram遷移到Facebook的數據中心,這實質上形成了Facebook的私有云平臺。
無論是什么原因,遷移到基于云計算的系統是許多組織的必要條件。最好是以一種與供應商無關的方式編寫應用程序,并在適當的地方進行適當的抽象,以便縮短可能長達幾個月的考驗過程。