遷移到 AWS 雲端:該做和不該做

遷移到 AWS 雲端:該做和不該做

2024.03.29

假如有一天,有人告訴你必須遷移到 AWS/GCP/Azure/或其他任何雲端服務供應商,這很可能會讓你感到壓力山大,這還是輕描淡寫了。

在我的職業生涯中,我見證了不少遷移案例,在這篇文章中,我想分享一些想法,幫助DevOps工程師、架構師、經理或任何可能參與此類遷移的人。我主要聚焦於遷移到 AWS 的案例,一來是因為我在這方面有專長,二來是因為這相當常見,但我認為這些經驗同樣適用於任何其他雲端服務供應商。在這個案例中,我會講述從本地遷移到雲端的情況,因為在我看來,這種類型的遷移要比雲對雲的遷移難得多。我也會分享我自己對遷移中該做和不該做的看法。但請透過批判性思維來篩選這些建議,記住每個人都有自己的背景和經驗。對某人有益的事,對另一個人可能就不適合。

什麼是雲端遷移?

首先,我們來定義什麼是遷移。怎樣才算是遷移呢?我偏好以下的定義:

雲端遷移是將數據中心的能力移轉至基礎設施即服務(IaaS)提供商的過程。

「能力」是關鍵字。企業遷移的不是伺服器/虛擬機器/硬體/數據或其他任何事物。企業遷移的是其能力。

有七種遷移策略(或稱七R):重新定位、重新託管(提升並轉移)、重新平台化、重新購買、重構/重寫、保留與退役。

例如,我見過公司為了替代原有在地部署的產品而開發新產品的情況。這產品從一開始就設計為良好架構且原生於雲端的,並將被雲端託管。這算是遷移還是綠地項目類型?根據上述定義,我們可以說這是一種遷移。這是遷移的重構策略。

如果我們購買了一個新的SaaS訂閱,以取代我們在地部署的一些軟體呢?這也是一種遷移:一種重新購買策略。

讓我們更深入探討這七種遷移策略:

重新定位。我們在地部署一些工作負載,並將它們原封不動地移至雲端。在限定情況下這是可能的;當我們遷移雲端中立的工作負載,或當一個平台可能是原生雲端的時。例子:將Kubernetes集群從在地部署遷移到雲端,或將VMware機器與VMware Cloud一起遷移。

重新託管。這也被稱為提升並轉移。我們將在地部署的虛擬機器/伺服器轉換為雲端中的虛擬機器。例子:將在地部署的虛擬機器遷移至EC2實例,使用CloudEndure,或創建EC2實例,安裝軟體並應用與在地部署相同的配置。

重新平台化。我們將一個工作負載遷移到一個雲端原生平台,而不重構系統。例子:將PostgreSQL遷移到AWS RDS或將Docker容器遷移到ECS。

重新購買。我們用SaaS替換某些自定義/遺留系統。例子:用SendGrid替換自定義的在地部署電子郵件系統,或用Salesforce替換CRM。

重構。我們改變應用程式的架構,使其成為雲端原生並使用管理的雲服務。這也包括從頭重建。例子:改變應用程式的代碼以將檔案上傳到S3而非本地儲存,或將應用程式容器化並遷移到ECS。

退役。我們決定如果不需要某部分工作負載將其淘汰。例子:由於遷移的應用程式使用CloudWatch,因此不再需要日誌伺服器。

保留。我們將其保留在地部署。通常,這是暫時的。例子:一個具有大量功能和定制的巨大Oracle數據庫,由於龐大的成本,決定不將其移至AWS。決定將其保留在地部署,直到在現代化階段用另一解決方案替代它。

我喜歡下面這張圖,它展示了每種遷移類型的高層次階段。作為處理遷移的捷徑表,這可能很有幫助。

遷移不宜做的事 我不推薦在進行遷移時做以下事情:

雲端遷移的做與不做?

做:進行雲端準備性評估。如果一個人搬家到一個新地方,他們應該考慮:

當一家公司遷移到雲端時,他們應該問包括以下在內的問題:

雲端準備性評估是一種長格式的訪談,關於公司內不同的流程,以識別一家公司是否準備好在雲端運營。它基於雲端採用框架(CAF),使我們能夠了解為了成功遷移需要改變什麼。AWS提供了一個雲端準備性評估工具來涵蓋所有這些方面。我強烈建議你對所有考慮遷移的工作負載使用這個過程。

摘要

如果我們想降低與遷移相關的風險,並使其壓力較小,我們就不會急於求成。你可能認為匆忙可以節省時間,其他問題稍後再解決,但經驗告訴我們這是錯誤的。最有可能的結果是,當你切換到新的基於雲的生產環境時,你將在最有壓力的情況下解決遇到的所有問題。選擇將在壓力下做出,而不是事先以深思熟慮的方式解決問題。這裡必須應用適當的工程原則。把一座橋從一條河上拿起來,然後放到另一條河上,這永遠行不通。遷移成功的關鍵是衡量、分析、設計和規劃。將工作負載遷移到雲端是困難的,但我希望這些做法和不做法能讓它變得更容易。

相關文章