云平臺(tái)之間的應(yīng)用程序可遷移性是多云策略的主要目標(biāo)之一。雖然當(dāng)企業(yè)只是使用IaaS提供商的基本計(jì)算功能時(shí),這是非常簡(jiǎn)單的,但是當(dāng)企業(yè)在該部署的更高一層提供更多本地服務(wù)時(shí),這變得更加困難。
為了保持競(jìng)爭(zhēng)優(yōu)勢(shì),所有主要的公共云提供商都通過(guò)其他方式擴(kuò)展其基本IaaS產(chǎn)品的功能,例如用于數(shù)據(jù)分析、事件處理和關(guān)系數(shù)據(jù)庫(kù)的一系列Web服務(wù)。開發(fā)人員可以將這些附加服務(wù)編寫到他們的云計(jì)算應(yīng)用程序中,以實(shí)現(xiàn)各種任務(wù),包括減少開發(fā)時(shí)間和成本,以及提供更多專業(yè)功能的能力。
雖然這些Web服務(wù)有益,但也會(huì)帶來(lái)風(fēng)險(xiǎn)。云計(jì)算提供商具有這些服務(wù)的獨(dú)特實(shí)現(xiàn),即使它們?cè)谔峁┥讨g是相似的,企業(yè)也很難采用使用Web服務(wù)的一個(gè)實(shí)現(xiàn)并將其插入另一個(gè)實(shí)現(xiàn)的應(yīng)用程序組件。Web服務(wù)本身不能跨不同的云平臺(tái)遷移,這意味著企業(yè)可能會(huì)丟失信息,并創(chuàng)建具有不兼容性的數(shù)據(jù)。
在每個(gè)組件的基礎(chǔ)上,企業(yè)必須假設(shè)如果使用此類服務(wù)??,其應(yīng)用程序?qū)o(wú)法遷移。這種限制不僅適用于多云戰(zhàn)略中的提供商,還適用于云平臺(tái)和企業(yè)自己的數(shù)據(jù)中心。例如,企業(yè)無(wú)法通過(guò)主機(jī)邊界進(jìn)行故障轉(zhuǎn)移或擴(kuò)展。
克服不兼容的挑戰(zhàn)
Web服務(wù)不兼容有兩種:第一個(gè)也是問(wèn)題最少的是提供商提供基本相同的服務(wù),但使用不同的API。這很不方便,但其解決方案并不困難,因?yàn)樗粫?huì)影響企業(yè)的整體應(yīng)用程序架構(gòu)。
第二種也是風(fēng)險(xiǎn)更大的Web服務(wù)不兼容性是云計(jì)算提供商以不同方式構(gòu)建其實(shí)際服務(wù)的地方。然后,這不僅僅是對(duì)API調(diào)用進(jìn)行更改的問(wèn)題,但可能需要企業(yè)更改整個(gè)應(yīng)用程序設(shè)計(jì)。
多云的應(yīng)用程序設(shè)計(jì)的注意事項(xiàng)
在部署之前,考慮開發(fā)人員如何設(shè)計(jì)混合云和多云應(yīng)用程序非常重要。這些應(yīng)用程序中的大多數(shù)都有前端(如GUI)和后端,后端由特定于業(yè)務(wù)流程的元素組成。在某些情況下,特別是那些涉及微服務(wù)的情況,創(chuàng)建邊界(例如消息總線或消息隊(duì)列)是有用的,它可以作為前端和后端組件之間的處理點(diǎn)。開發(fā)人員通常會(huì)將公共云服務(wù)用于其前端,并可能在云端和數(shù)據(jù)中心之間對(duì)這些邊界元素進(jìn)行一些有限的故障轉(zhuǎn)移和擴(kuò)展。使用此模型作為重新考慮多云部署的基礎(chǔ)。
那么,如何解決這個(gè)不兼容問(wèn)題呢?有三種可能的解決方案:
(1)用于云爆發(fā)和故障轉(zhuǎn)移的單獨(dú)的應(yīng)用程序組件
企業(yè)希望將云爆發(fā)或故障轉(zhuǎn)移的任何應(yīng)用程序組件分離到多個(gè)云平臺(tái),并且不要將Web服務(wù)與這些特定組件集成。這可能會(huì)有問(wèn)題,因?yàn)閷eb服務(wù)用于應(yīng)用程序的前端組件是很常見(jiàn)的。但是,企業(yè)不能在多云端部署中使應(yīng)用程序依賴于這些Web服務(wù)的可移植或可擴(kuò)展的任何部分。
(2)避免采用提供商特定的Web服務(wù)
第二種選擇是完全放棄云計(jì)算提供商的Web服務(wù),支持可以在任何地方運(yùn)行的通用行業(yè)中間件。對(duì)于幾乎每個(gè)公共云Web服務(wù),都有一個(gè)類似的第三方或開源產(chǎn)品,用戶可以在多個(gè)平臺(tái)上托管。但問(wèn)題是,這些產(chǎn)品并不總是與企業(yè)使用的云計(jì)算基礎(chǔ)設(shè)施緊密集成,因此可能必須為可擴(kuò)展的Web前端和可擴(kuò)展數(shù)據(jù)庫(kù)等開發(fā)自己的架構(gòu)模型。
如果企業(yè)選擇這條路徑,請(qǐng)仔細(xì)研究開源云和容器技術(shù),以查看是否可以使用OpenStack、Kubernetes或Mesos/Marathon的打包實(shí)現(xiàn)來(lái)構(gòu)建其開放式Web服務(wù)工具包。即使軟件包不包含企業(yè)需要的所有內(nèi)容,它仍然可以作為多云策略的通用托管框架。
(3)使用適配器
最后一個(gè)選項(xiàng)是圍繞企業(yè)使用的Web服務(wù)開發(fā)適配器,使每個(gè)服務(wù)與其應(yīng)用程序兼容。如果企業(yè)使用許多提供類似Web服務(wù)的公共云提供程序,但通過(guò)不同的API,企業(yè)可以使用適配器設(shè)計(jì)模式將各種API轉(zhuǎn)換為其應(yīng)用程序隨后可以使用的單個(gè)通用API。
如果提供商的Web服務(wù)的唯一區(qū)別在于API和數(shù)據(jù)模型,那么這相當(dāng)容易。但是,如果Web服務(wù)存在體系結(jié)構(gòu)差異,則可能必須將它們的抽象提升到使用通用適配器API完全表示的程度。在開始設(shè)計(jì)之前,請(qǐng)務(wù)必研究與給定功能相關(guān)的所有Web服務(wù)API的詳細(xì)信息。
這三種策略在多云策略中最小化不兼容性問(wèn)題都有自己的優(yōu)點(diǎn)。在某些情況下,企業(yè)可能希望采用所有這三種方式。但從長(zhǎng)遠(yuǎn)來(lái)看,可能第三種方式是企業(yè)可以采用的最好的方法。如今,云計(jì)算提供商之間的競(jìng)爭(zhēng)日益激烈,并且這些提供商對(duì)未來(lái)的看法存在差異,這將擴(kuò)大其Web服務(wù)之間的差距。而彌補(bǔ)這一差距的最好方法將在市場(chǎng)上占據(jù)上風(fēng)。