雖然為混合云部署開(kāi)發(fā)應用并不是某種黑暗魔法,但是對于很多企業(yè)來(lái)說(shuō),這還是一項具有一定神秘性的工作。
可以想象,任何設想進(jìn)行混合云開(kāi)發(fā)的用戶(hù)最終都需要完成很多個(gè)這樣的項目,所以首先制定一個(gè)可以應用于所有項目的實(shí)施策略,然后在一個(gè)合適的混合部署中測試這個(gè)實(shí)施策略將是十分明智的做法。為了實(shí)現成功的混合云實(shí)施,這樣的一個(gè)實(shí)施策略必須考慮混合云應用的任務(wù),使用混合云的緣由,以及混合運行與應用體驗特質(zhì)(QoE)之間的重要相互作用。
云計算應用規劃者可能犯下的最嚴重錯誤就是,在考慮綜合、集成或者云計算平臺選擇這樣的技術(shù)問(wèn)題時(shí)不為應用本身設定一個(gè)應用環(huán)境。應用的設計始終主要是由任務(wù)而非技術(shù)推動(dòng)的,但是項目任務(wù)書(shū)則必須正確地綜合考慮業(yè)務(wù)問(wèn)題和技術(shù)要求兩方面的因素。
云計算應用的方方面面
應用是可以實(shí)現多維度分類(lèi)的。它們可以是事務(wù)性的,或者涉及信息傳遞(第一維)。它們可以是移動(dòng)的,而不是基于桌面系統的(第二維)。最后,它們也都可以是基于會(huì )話(huà)或者基于實(shí)例的(第三維)。在所有這些維度中,第一個(gè)選項要比第二個(gè)選項需要更多的設計關(guān)注。
在第一個(gè)維度中,事務(wù)性應用的功能是那些記錄或修改信息,這就意味著(zhù)它們必須在與相關(guān)數據進(jìn)行交互時(shí)具有較高可靠性,以避免造成數據損壞的危險。提高可靠性的要求意味著(zhù)混合應用的公共云計算組件必須具有較高的可靠性,或者必須采取特殊的編程措施(例如分兩個(gè)階段提交數據)以保護數據的完整性。如果你將在云計算爆發(fā)或故障轉移應用中使用混合云,那么事務(wù)性應用就需要在任何規模改變或故障轉移活動(dòng)期間維護數據的完整性。
相反,信息傳遞應用可容忍故障或響應時(shí)間變化;如果第一次請求丟失,那么用戶(hù)將需要重復提交一次請求信息。這就意味著(zhù),諸如負載平衡這樣的簡(jiǎn)單技術(shù)將支持應用的彈性縮放以及工作任務(wù)在公共云計算與數據中心之間的轉移。
在第二個(gè)維度,移動(dòng)性會(huì )在兩個(gè)方面帶來(lái)需要特別關(guān)注的問(wèn)題。第一,移動(dòng)連接是通過(guò)無(wú)線(xiàn)網(wǎng)絡(luò )建立起來(lái)的,因此其連接可靠性通常要比桌面系統的連接可靠性更低。這一點(diǎn)將加劇事務(wù)性應用中數據完整性問(wèn)題的惡化。移動(dòng)用戶(hù)也可能是在多個(gè)可變的環(huán)境中工作的,而公共云計算服務(wù)可能是由一個(gè)單一的數據中心提供的,這樣一來(lái)就會(huì )帶來(lái)明顯的性能差異。如果用戶(hù)的分散度較高,那么就需要尋找區域托管的服務(wù)供應商。
基于會(huì )話(huà)或基于實(shí)例的應用的問(wèn)題(第三維度)是指用戶(hù)是否會(huì )與應用進(jìn)行長(cháng)期的多步驟交互,而不是短期的單次交互。協(xié)作是基于會(huì )話(huà)交互的一個(gè)示例,而簡(jiǎn)單處理一次信用卡購買(mǎi)的業(yè)務(wù)就是基于實(shí)例應用的一個(gè)例子。
在應用設計中有一種趨勢,即面向會(huì )話(huà)的應用會(huì )通過(guò)一個(gè)所謂的Stateful行為依賴(lài)于一個(gè)可靠的一致性連接。大部分面向實(shí)例的應用(例如網(wǎng)絡(luò )應用)是無(wú)需維護與一個(gè)用戶(hù)的多階段對話(huà)的環(huán)境的(這些被稱(chēng)為Representational狀態(tài)轉移或 stateful應用)。綜合Stateful應用要困難得多,因為如果一個(gè)組件發(fā)生云計算爆發(fā)或云計算故障轉移,應用就會(huì )丟失一個(gè)進(jìn)程中用戶(hù)活動(dòng)的相關(guān)信息。
可以實(shí)施綜合的原因可以是因為動(dòng)態(tài)組件調度或前后端現有的云計算組件應用。動(dòng)態(tài)調度意味著(zhù)在云計算或在數據中心內根據工作負載或者是否有資源失敗的實(shí)際情況把資源分配給應用組件。
前后端混合應用會(huì )在用戶(hù)和應用的其余部分之間開(kāi)發(fā)一個(gè)類(lèi)似于網(wǎng)絡(luò )的應用體驗,充分利用公共云計算的優(yōu)勢來(lái)擴展這些組件或者根據用戶(hù)的實(shí)際物理位置分布把這些組件移動(dòng)到相應的地域。前后端的方法創(chuàng )造了綜合的一個(gè)一致性模式,即組件總是在云計算中或在數據中心內,從而簡(jiǎn)化了設計難度。當需要動(dòng)態(tài)地移動(dòng)組件時(shí),就會(huì )實(shí)施所有可以確保用戶(hù)體驗一致性和數據庫完整性的措施。
確保高品質(zhì)的用戶(hù)體驗
用戶(hù)體驗一致性是所有混合云設計問(wèn)題中最具挑戰性的一個(gè),其部分原因是因為這個(gè)問(wèn)題具有非常強的主觀(guān)性和可變性。公共云計算應用體驗特性會(huì )有顯著(zhù)的差異,這一差異性主要取決于用戶(hù)相對于其相關(guān)云計算托管點(diǎn)的位置,云計算托管相對于數據中心組件的位置以及所有這些位置的網(wǎng)絡(luò )連接質(zhì)量。
通過(guò)使用可用性區域的方法來(lái)管理托管發(fā)生位置,以及通過(guò)確保云計算爆發(fā)或故障轉移的動(dòng)態(tài)調度過(guò)程中不會(huì )產(chǎn)生可能在事務(wù)性應用的stateful行為中引入延遲的應用錯誤,就可以非常容易地解決混合云應用的應用體驗特性問(wèn)題(即確保用戶(hù)永遠不會(huì )離基于云計算的組件太遠)。
混合云應用設計的最后一點(diǎn)就是客戶(hù)端設備以及托管在其中的任何本地軟件的角色問(wèn)題。當應用體驗特性比較糟糕時(shí),客戶(hù)端軟件可以管理“用戶(hù)-應用”的交互以防止用戶(hù)通過(guò)重新提交申請而產(chǎn)生多個(gè)更新。而在發(fā)生云計算爆發(fā)或故障轉移過(guò)程中,它還有助于重新同步應用會(huì )話(huà)或交易。
如果你在你自己的混合云應用開(kāi)發(fā)過(guò)程中遇到過(guò)上述的大部分設計問(wèn)題,那么你可能需要考慮采用一個(gè)專(zhuān)業(yè)設備應用來(lái)配合云計算應用的其余部分。反之,這樣做將提高系統的穩定性和用戶(hù)的滿(mǎn)意度。