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