前言
雲計算目前仍然是IT領域裡最熱門的名詞之一,在各種技術論壇或者研討會上,都能聽到大家在討論雲,參與物件包括硬體廠商、軟體廠商、大型企業使用者。 不同于以往只是大談雲的理念,展望雲計算的前景,現在都談論的的話題已經是雲設備、雲平臺和雲應用,紛紛從觀望等待轉向雲計算的實踐之路。
有人說雲計算是一個大的技術革命,帶來巨大的技術創新。 也有人說雲計算是一種市場理念,是對原有技術的一次包裝,只不過是新瓶裝舊酒。 無論各方如何爭論,大家至少都認可雲計算對IT的發展帶來了新的契機,並在雲計算的基本特徵上達成共識。 雲計算的基本特徵包括:基於網路(互聯網)提供的計算能力;主機和存放裝置採用虛擬技術可以提供快速部署能力,平臺以及軟體以服務的形式提供給使用者;通過資源分享,可以明顯提高資源利用率;具備快速伸縮性, 能夠通過彈性部署滿足使用者的不同需求;在公共雲方面採用按需付費的商業模式。
本文不關注雲計算的具體實現技術,只從雲計算涉及的開發運維、標準規範及不確定因素等方面提出個人的一些思考,希望能夠給雲計算的各方推動者提供一點不同角度的見解,為雲計算的真正落地起到參考作用。
雲計算的優勢
雲計算首先解決了應用部署中的基礎設施和平臺環境的準備難題,使得軟體發展人員不再為硬體的維護和集成耗費精力。 雲計算的部署充分發揮了計算能力的集約化效應,由於充分利用了硬體虛擬技術,在一台主機上可以虛擬出數倍于物理主機能力的設備。 由於雲計算平臺對不同作業系統主機鏡像的同時支援,使得不同版本的作業系統可以和平共存,改變了傳統應用隨作業系統升級被動升級的局面。
雲計算提供了不同層次的開箱即用服務:在IaaS層提供了定制或標準化的硬體設定及作業系統的開箱即用;在PaaS層提供了開發部署環境和中介軟體平臺等平臺級軟體需求的一站式滿足; 在SaaS層可以為中小企業或個人使用者提供標準化的軟體服務。
雲計算技術的出現和應用,與社會化專業分工有異曲同工之妙。 在硬體設備、中介軟體平臺、應用獨立部署自成一體的年代,軟體系統類似于人類社會中早期的建築公司,要從機械設備購置開始到雇傭技術工人來完成一項建築工程,是麻雀雖小五臟俱全。 建築公司受設備規模和技術工人的限制,制約了公司的發展。 在任務需求增大和減少時,設備和人員都是公司面臨的難題,需要的時候不趁手,用不著的時候還要養著。 基礎設備服務公司的出現(類似于雲計算中的IaaS供應商),解決了設備的難題,可以提供包括倉庫出租、機械設備出租等硬體租賃服務。 在基礎服務的基礎上,衍生出了中間服務商,提供水暖安裝、隧道開挖、物料運輸等專業服務,服務商把人力和設備進行了包裝(相當於雲計算中的PaaS供應商),提供專注于某項專門技能的專業服務。 建築公司則主要關注組織管理和施工協調以及前端尋找市場的能力。
從社會學角度看,專業化社會分工必然會增加管理成本,這在雲計算實踐中也是同樣的。 同時專業化社會分工又為服務租用方帶來節約成本、增強市場應變能力的好處,為服務提供者帶來因規模化和集中化效應降低單位服務成本而產生的差額利益,對雙方而言是獲得了雙贏的機會。 而在雲計算中,由於主機及存儲資源在虛擬能力和實際佔用資源的差異,軟體和中間服務軟體等虛擬資產的可複製性,服務提供者具備了更靈活的利潤空間,從而促進服務價格的進一步下調,吸引更多的服務消費者, 這也正是各方積極投身雲計算實踐的重要驅動力。
雲計算對應用開發的挑戰
雲計算是互聯網資訊技術發展和資訊服務需求共同作用下的產物,傳統的軟體發展模式並不能直接適用于雲計算環境下的應用開發。 在IaaS層面的雲計算環境中,由於平臺提供的是標準化的可水準擴展的虛擬機器供給能力,因此當應用需求的主機計算能力高於虛擬機器能力時,開發人員需要對應用程式進行解耦,分解成多個可以在分離的虛擬機器上運行的細細微性應用, 通過調度程式來協調各個程式間的任務。
在PaaS層面的雲計算框架中,平臺提供了進一步的抽象,通過對雲應用進行分類,總結出實踐中的共性問題,抽象出特定的模式和解決方案。 提供了包括負載均衡、緩存、資料存取、消息通信等基礎功能服務。
由於PaaS平臺供應商在平臺軟體和基礎服務的實現上具有多樣性,提供的基礎服務面向不同的特定需求,所針對的應用類型、客戶定位和實現方式上也存在差異,這給最終開發者的應用帶來運行在不同PaaS平臺上時必須面臨的相容性問題。
當在PaaS平臺上開發雲計算應用時,需要遵循平台層提供的一系列開發規範。 由於平台層提供了應用部署、應用性能管理、使用計量和計費等基礎服務,因此在應用開發規範中約定在應用中必須掛載一系列的測試樁。 由於平臺的許多配置是不允許應用開發者隨意進行調整的,這將帶來調優方面的影響。 如果應用還需要把自己的一些功能暴露為服務,供其他應用所用,應用開發者還需要考慮服務註冊等問題。 此外,雲應用本身還要考慮集成來自不同雲服務提供者所提供的功能或服務。
事實上,採用雲計算對開發的需求並沒有降低,因為最終實現的功能在最終使用者看來是一致的。 所以雲計算的採用,對於企業的前端業務需求部門,沒有明顯驅動力,需求部門不會鼓勵IT部門去採用雲計算,也不會承擔雲計算帶來的風險。 因此企業的IT部門必須想辦法把採用雲計算可能帶來的風險以及未來持續發展中的風險消滅在部門內部。
前面談到的都是雲計算對開發帶來的新要求,換個角度來看,雲計算也為應用開發帶來一些積極的變化。 在傳統的應用開發中,由於系統軟體、中介軟體平臺、資料庫和開發環境的不斷升級,已有程式的運行環境不斷受到挑戰,每次環境升級帶來的程式相容性檢查都是一個夢魘,系統的不相容性常常是系統運行所面臨的最大問題。 而在雲計算環境下,使用者對作業系統等運行環境擁有了自主選擇權,使用者完全可以將原有應用運行在安全的沙箱環境內。
雲計算的技術的引入,也為大規模應用傳承開發的未來指明瞭方向。 電腦應用軟體在企業的大規模使用自20世紀90年代開始,經歷的幾乎都是應用開發、部署、遷移、升級、換廠商、再開發部署這樣的輪回。 如果看各大企業的軟體資產,除了在用的系統外,多年前的軟體投資已經幾乎見不到任何蹤影。 早期的軟體變革通常是由於流程未固化,需求變化等原因造成頻繁升級,本質上軟體的基本功能是適應生產需求,而從企業的長期發展來看,雖然局部的流程調整是存在的,但大部分基本功能還是穩定的。 因此對企業應用來說,基本功能在長期也是應該穩定的。 在採用雲計算技術後,設備的維護問題,軟體運行環境相容性問題都已經得到解決,虛擬主機隔離了不同作業系統版本的影響,按需分配資源的方式已經足以允許業務量很低的應用長期處在運行狀態。 因此將企業應用中最基礎的,長期穩定的功能固化下來,作為服務長期運行應該被列為開發的首要考量內容。
應用雲化的核心思想是如何使大型應用平衡分配到許多獨立的物理或虛擬機器上進行計算的技術。 通過這種運用,可以降低不同規模的應用對主機能力的差異化需求,通過橫向增加標準設備的技術,滿足從小到大不同規模的應用對處理能力的需求。 應用雲化帶來的是應用管理的複雜性上升,這和日常工作是一樣的,當一個全能型技術高手在做一件事情時,任務的分解調度和協調都由他自我合理安排,而如果要把同樣的工作分配給多個僅具備一項或兩項能力的初級技術人員來完成時, 就需要考慮任務的銜接,每個人工作的合理性,兩個人工作交接的完整性,還需要及時進行檢查,防止某些環節產生紕漏。 這些都是雲計算應用開發必須面臨的挑戰。
雲計算對運維的影響
雲計算在企業使用者中的實踐首先面對的是對運維的挑戰。 在採用雲計算技術之前,運維人員會認為一切盡在掌控之中,可以如數家珍地講述系統A運行在第X排Y列機櫃裡的Z主機上,設備已經納入備份管理,最近設備運行正常,安全上只允許B網段的主機訪問。 而採用雲計算技術後,運維人員很難講清楚A系統具體運行在哪個主機上,因為全部採用了設備虛擬化管理,A系統在不同時刻可能處在不同主機上。 運維人員需要改變靜態管理的固有思維,主動迎接動態管理的挑戰。
引入了雲計算之後,運維的重點將不僅僅是原來管理的設備運行正常,網路暢通,還將關注資源的主動供給、自動設定、可持續性、可追蹤的即時建構管理。
在傳統的運維管理中,為了保證可靠性和伸縮性,不僅需要在部署階段進行支援,而且還需要隨時監視應用的運行狀態,判斷是否存在節點失效或者負載過高等情況,一旦發生異常,管理員根據事先制定好的工作流程來啟動備用的伺服器, 運行相應的管理腳本來對新的伺服器進行配置和初始化等。 而在雲計算環境中運維人員一部分負責物理設備運轉,一部分負責應用相關的監控和管理。 運維人員定位系統故障不再只是依靠傳統的網管手段,需要更深入地通過雲計算管理平臺以及虛擬裝置管理平臺,來分析系統的運行效率和故障原因。
在雲計算環境中,虛擬機器虛擬鏡像磁片檔把基本作業系統、客戶需要使用的應用及運行應用所需的中介軟體等元件一併打包在內,免去了傳統環境下為使用者進行複雜安裝配置的過程,做到開箱即用,實際上成為了企業的虛擬資產。 這和傳統環境下需要保留主機運行環境,保存安裝軟體不同,虛擬機器鏡像檔案隨時載入意味著新的虛擬裝置可以在需要時快速進入生產狀態,特別是一些測試開發環境的準備,可以通過原始的虛擬鏡像快速恢復到使用者所需要的狀態。
在雲計算實踐之前,資料中心的絕大多數應用服務都部署在物理機上,隨著物理設備逐漸老化,性能逐漸下降,所運行的應用軟體的穩定性和可靠性都受到了極大的影響。 要把服務遷移到新的系統上會面臨很大的風險:一方面是因為開發人員的流動性,當需要遷移服務時,難以找到原開發團隊的相關人員;另一方面是軟體對新運行環境的相容性問題,軟體所依賴的特定介面或者函式程式庫在新的系統裡並不一定相容。 引入雲計算技術以後,人們採用新的虛擬化的輔助技術(P2V)能夠把應用服務與作業系統一起從物理伺服器上遷移到虛擬環境中,管理員不再需要觸及與系統緊密整合的應用的相關代碼,大大提高了系統移轉的可行性和成功率。 遷移後的伺服器,不僅可在一個統一的介面中進行管理,而且借助虛擬機器化管理軟體,在這些伺服器因故障停機時,可以自動切換到網路中其他可替代的虛擬伺服器中,從而達到不中斷業務的目的。
企業在標準規範中的作用
雲計算技術包含硬體設備,虛擬化平臺,資料庫中介軟體等基礎應用,應用軟體發展等多方面內容,涉及的本期關注MonthlyFocus宋齊軍,齊少安雲計算熱潮下的幾點思考072012/07/DTPT規範也比較多。 而業界目前在雲計算標準規範的分佈呈正三角形,底層標準相對成熟,通過驅動程式或作業系統的相容性,使得設備有較高的可互換性。 越往上層,靠近應用層方面,除了虛擬機器層面有開放虛擬化格式(OVF)標準外,其他方面幾乎沒有成型的標準。 企業使用者花費精力參與底層標準的制定不僅沒有精力,而且也沒有話語權,因此只要對底層規範有所瞭解,能夠對企業的技術選型提供參考即可。
對企業而言,最重要的是在應用層面的標準制定中,起到主導者的作用,把握規範的重點。 從公司資訊化的角度來看,對企業未來資訊化建設影響最大的有2個層面的規範,一個是WebService中應用層面的服務,因為從服務註冊、介面語意和調用邏輯等框架性方面,可以找到相應的國際規範,各應用供應商都可以遵循, 但是介面內容層面的規範,是必須依賴企業內部制定的自有規範。 另外一個是雲計算應用管理平臺方面的規範標準,雲計算建設不是3~5年的建設和存續週期,企業一旦開始採用雲計算技術來整合整個IT系統,就意味著公司資訊化的整體方向已經確定,而且這個方向在較長時間內是難以改變的。 因此在應用管理平臺的規範上應儘量發揮引導作用,從選型之初就必須堅持可替換和可遷移的原則,要求雲應用管理平臺提供的基礎能力對外服務介面是標準化的,而且是可被其他管理平臺所相容的。
雲計算要打造的是企業的計算航母,一旦依賴在某個管理系統上,對企業未來的影響是致命的,軟體廠商可以因為市場原因逐步淡出,而企業的資訊化卻是必須長久存在併發展的。 因此企業應根據管理平臺的標準進行嚴格約束,要求所有應用開發商所使用的標準服務必須是企業所明示,經過相容性測試的服務。
採用雲計算技術後,應用開發對標準規範的執行必須提高到一個戰略層面,因為參與構成雲計算環境的不再是一個獨立的應用,而是由很多服務共同完成的複雜任務。 因此標準規範將是參與各方的開發契約,任何不遵從契約的開發行為都是在挑戰應用管理的權威性。 而規範的嚴肅性和延續性,也將改變軟體廠商長期在應用開發中側重功能,不注重介面標準的開發陋習。 雲計算的服務介面面向不特定的服務要求者,特別是一些重要的服務,面向許多服務要求者,不恰當的服務介面變更,可能對業務造成難以評估的影響。 最穩妥的方案是建立一個相容服務提供者,同時提供新老服務介面的服務,然後通過服務定址重定位功能,完成新老服務的替換。
5雲計算的不確定因素
目前主流的商用中介軟體平臺通常採用的是按照使用者許可或者主機CPU內核進行銷售的,採用雲計算平臺後,無論從IaaS虛擬機器還是PaaS的預裝中介軟體,都帶來一個許可計算的棘手問題。 中介軟體廠商不願意看到自己的利潤被虛擬化攤薄,雲計算服務提供者不願意支付多餘的許可費用。 在這種情況下,面向公眾提供雲計算的服務商,通常採用的是開源的中介軟體平臺或自有的中介軟體平臺,鮮有採用商用中介軟體平臺的,但對於大中型企業使用者而言,對平臺軟體的選用則是一個難以抉擇的事情。 因此能否培養企業自有的,在雲計算中介軟體平臺軟體演進過程中具有自主開發能力的技術隊伍是影響企業雲計算持續發展的一個不確定因素之一。
原文出自【比特網】,轉載請保留原文連結:HTTP://cio.chinabyte.com/401/12383401.shtml
(責任編輯:呂光)