五個(gè)方向著手,打造可移植性更強(qiáng)的云應(yīng)用
云可移植性是構(gòu)建可擴(kuò)展、有彈性、云原生應(yīng)用程序的一種策略。談到云原生,通常也會(huì)暗含地考慮到云的可移植性。云原生是一種應(yīng)用程序開發(fā)和部署架構(gòu)方法,可最大限度利用云計(jì)算資源的彈性和敏捷性。然而,當(dāng)團(tuán)隊(duì)開始使用單一云平臺(tái),并圍繞這個(gè)平臺(tái)的供應(yīng)商所提供的專用工具和托管服務(wù)進(jìn)行構(gòu)建時(shí),很快就會(huì)面臨供應(yīng)商鎖定的局面。
延伸閱讀,點(diǎn)擊鏈接了解 Akamai Cloud Computing
可移植的工作負(fù)載能在不同計(jì)算環(huán)境和基礎(chǔ)設(shè)施平臺(tái)上輕松遷移、部署和管理。借此,企業(yè)能夠避免被供應(yīng)商鎖定,并保持云戰(zhàn)略的靈活性。
如果從一開始就選擇“云中立”的方法,并使用能與任何云平臺(tái)相兼容的工具,我們就可以根據(jù)需求的變化靈活做出改變??梢浦残詰?zhàn)略還能讓我們更深入地了解資源的使用方式和原因,并根據(jù)應(yīng)用和業(yè)務(wù)需求選擇不同的云平臺(tái),甚至在不同平臺(tái)間轉(zhuǎn)移。
設(shè)計(jì)云可移植性策略
如果你正在考慮云應(yīng)用架構(gòu),那么可以通過以下無方面考慮著手,設(shè)計(jì)成功的可移植工作負(fù)載。
1.確定需求
實(shí)現(xiàn)可移植工作負(fù)載的第一步是客觀地確定工作負(fù)載需求。我們可能經(jīng)常會(huì)看到這樣的情況:在進(jìn)行最開始的這一步工作之前,主觀臆斷就已經(jīng)污染了整個(gè)過程,因?yàn)槿藗兊哪抗鈺?huì)被云提供商的誘人服務(wù)所吸引。因此,這里的重點(diǎn)是:在考慮云平臺(tái)之前,就先確定需求范圍。
這就好比采取一種簡(jiǎn)單的方法來了解滿足最終成果所需的全部功能和特性,進(jìn)而確定軟件棧和依賴項(xiàng),以及滿足這些需求的其他組件。有了這樣一個(gè)客觀、簡(jiǎn)潔的視角,就好比通過廣角鏡頭去觀察云。這種方式才能更好地凸顯能在任何云平臺(tái)的核心云基礎(chǔ)設(shè)施上運(yùn)行的各種功能。
2.確定鎖定點(diǎn)
無論應(yīng)用程序仍處于構(gòu)建或規(guī)劃階段,還是已經(jīng)在云平臺(tái)上開發(fā)和部署,都要對(duì)當(dāng)前架構(gòu)設(shè)計(jì)進(jìn)行評(píng)估,以發(fā)現(xiàn)當(dāng)前平臺(tái)上使用的獨(dú)有組件和服務(wù)。
如果已經(jīng)確定了可能被供應(yīng)商鎖定的點(diǎn),請(qǐng)花時(shí)間評(píng)估具體原因。首先請(qǐng)回答以下問題:
- 為了更快速地推出或縮短上市時(shí)間,是否選擇,或至少考慮過某種解決方案?
- 解決方案是根據(jù)咨詢結(jié)果確定的,還是基于與該平臺(tái)上其他服務(wù)的支持/互操作性來決定的?
- 當(dāng)時(shí)選擇這個(gè)解決方案時(shí)的成本,和現(xiàn)在的成本相比有何變化?
回答完這些問題后,我們就可以開始規(guī)劃理想的開源解決方案或其他可提供相同或類似功能的替代解決方案,評(píng)估實(shí)施所需的工作,并制定執(zhí)行計(jì)劃。如果在所有評(píng)估后,仍然決定堅(jiān)持使用特定平臺(tái)的服務(wù),請(qǐng)確保自己還有退出策略。云計(jì)算供應(yīng)商鎖定有兩種形式:架構(gòu)鎖定和運(yùn)營鎖定。圍繞專有云服務(wù)深思熟慮制定的退出策略可以減輕這兩種擔(dān)憂。
可擴(kuò)展、可持續(xù)運(yùn)行的構(gòu)建
利用負(fù)載均衡技術(shù),結(jié)合容器化、計(jì)算實(shí)例映像、配置管理以及有狀態(tài)和無狀態(tài)組件的分離,可順利實(shí)現(xiàn)橫向擴(kuò)展和分發(fā)。在可能的情況下,狀態(tài)應(yīng)該是聲明性的,由單一的“事實(shí)來源”進(jìn)行維護(hù)和管理,并自動(dòng)復(fù)制和同步。
模塊化設(shè)計(jì)
單體架構(gòu)可能會(huì)變得繁瑣、難以管理,從而降低以可移植方式進(jìn)行更改所需的靈活性。因此,工作負(fù)載應(yīng)采用模塊化設(shè)計(jì),明確定義不同組件,并作為一個(gè)松散耦合的系統(tǒng)協(xié)同工作。云原生設(shè)計(jì)提供了一種更新或替換單個(gè)組件而不影響整個(gè)工作負(fù)載的高效流程,最終提高了可維護(hù)性、適應(yīng)性和可移植性!
一切皆代碼
如果要開發(fā)云原生應(yīng)用程序,那么我們應(yīng)該熟悉聲明式部署方法:將工作負(fù)載的每一部分(應(yīng)用程序、基礎(chǔ)架構(gòu)和配置管理)都編成代碼。采用這種方法,我們可以自動(dòng)部署新環(huán)境(如開發(fā)、暫存、測(cè)試環(huán)境)或復(fù)制現(xiàn)有環(huán)境。這將簡(jiǎn)化藍(lán)/綠部署流程,并在發(fā)生災(zāi)難時(shí)快速恢復(fù)。
GitOps方法為我們提供了實(shí)現(xiàn)可移植性的單一途徑,能通過自動(dòng)化管道的可靠性優(yōu)勢(shì)來規(guī)范部署,提高合規(guī)性/審計(jì)的可視性,并將策略的實(shí)施以代碼方式來執(zhí)行。
通過上述五方面的思考,我們就可以結(jié)合自身需求,制定出適合的云可移植性戰(zhàn)略,從而在云原生應(yīng)用中獲得真正的靈活性,真正讓工作負(fù)載能在任何云平臺(tái)上流暢運(yùn)行和遷移,從方方面面享受到云原生所應(yīng)提供的價(jià)值。
—————————————————————————————————————————————————
如您所在的企業(yè)也在考慮采購云服務(wù)或進(jìn)行云遷移,
點(diǎn)擊鏈接了解Akamai Linode的解決方案