1. 程式人生 > >關於雲開發運維、雲端計算標準的一些思考

關於雲開發運維、雲端計算標準的一些思考

關於雲開發運維、雲端計算標準的一些思考

雲端計算目前仍然是IT領域裡最熱門的名詞之一,在各種技術論壇或者研討會上,都能聽到大家在討論雲,參與物件包括硬體廠商、軟體廠商、大型企業使用者。不同於以往只是大談雲的理念,展望雲計算的前景,現在都談論的的話題已經是雲裝置、雲平臺和雲應用,紛紛從觀望等待轉向雲端計算的實踐之路。
關於雲開發運維、雲端計算標準的一些思考
  有人說雲端計算是一個大的技術革命,帶來巨大的技術創新。也有人說雲端計算是一種市場理念,是對原有技術的一次包裝,只不過是新瓶裝舊酒。無論各方如何爭論,大家至少都認可雲端計算對IT的發展帶來了新的契機,並在雲端計算的基本特徵上達成共識。雲端計算的基本特徵包括:

基於網路(網際網路)提供的計算能力;

主機和儲存裝置採用虛擬技術可以提供快速部署能力,平臺以及軟體以服務的形式提供給使用者;

通過資源共享,可以明顯提高資源利用率;具備快速伸縮性,能夠通過彈性部署滿足使用者的不同需求;

在公共雲方面採用按需付費的商業模式。

本文不關注雲端計算的具體實現技術,只從雲端計算涉及的開發運維、標準規範及不確定因素等方面提出個人的一些思考,希望能夠給雲端計算的各方推動者提供一點不同角度的見解。

1、雲端計算的優勢

雲端計算首先解決了應用部署中的基礎設施和平臺環境的準備難題,使得軟體開發人員不再為硬體的維護和整合耗費精力。雲端計算的部署充分發揮了計算能力的集約化效應,由於充分利用了硬體虛擬技術,在一臺主機上可以虛擬出數倍於物理主機能力的裝置。由於雲端計算平臺對不同作業系統主機映象的同時支援,使得不同版本的作業系統可以和平共存,改變了傳統應用隨作業系統升級被動升級的局面。

雲端計算提供了不同層次的開箱即用服務:在IaaS層提供了定製或標準化的硬體配置及作業系統的開箱即用;在PaaS層提供了開發部署環境和中介軟體平臺等平臺級軟體需求的一站式滿足;在SaaS層可以為中小企業或個人使用者提供標準化的軟體服務。

雲端計算技術的出現和應用,與社會化專業分工有異曲同工之妙。在硬體裝置、中介軟體平臺、應用獨立部署自成一體的年代,軟體系統類似於人類社會中早期的建築公司,要從機械裝置購置開始到僱傭技術工人來完成一項建築工程,是麻雀雖小五臟俱全。建築公司受裝置規模和技術工人的限制,制約了公司的發展。在任務需求增大和減少時,裝置和人員都是公司面臨的難題,需要的時候不趁手,用不著的時候還要養著。基礎裝置服務公司的出現(類似於雲端計算中的IaaS提供商),解決了裝置的難題,可以提供包括倉庫出租、機械裝置出租等硬體租賃服務。在基礎服務的基礎上,衍生出了中間服務商,提供水暖安裝、隧道開挖、物料運輸等專業服務,服務商把人力和裝置進行了包裝(相當於雲端計算中的PaaS提供商),提供專注於某項專門技能的專業服務。建築公司則主要關注組織管理和施工協調以及前端尋找市場的能力。

從社會學角度看,專業化社會分工必然會增加管理成本,這在雲端計算實踐中也是同樣的。同時專業化社會分工又為服務租用方帶來節約成本、增強市場應變能力的好處,為服務提供商帶來因規模化和集中化效應降低單位服務成本而產生的差額利益,對雙方而言是獲得了雙贏的機會。而在雲端計算中,由於主機及儲存資源在虛擬能力和實際佔用資源的差異,軟體和中間服務軟體等虛擬資產的可複製性,服務提供商具備了更靈活的利潤空間,從而促進服務價格的進一步下調,吸引更多的服務使用者,這也正是各方積極投身雲端計算實踐的重要驅動力。

2、雲端計算對應用開發的挑戰

雲端計算是網際網路資訊科技發展和資訊服務需求共同作用下的產物,傳統的軟體開發模式並不能直接適用於雲端計算環境下的應用開發。在IaaS層面的雲端計算環境中,由於平臺提供的是標準化的可水平擴充套件的虛擬機器供給能力,因此當應用需求的主機計算能力高於虛擬機器能力時,開發人員需要對應用程式進行解耦,分解成多個可以在分離的虛擬機器上執行的細粒度應用,通過排程程式來協調各個程式間的任務。

在PaaS層面的雲端計算框架中,平臺提供了進一步的抽象,通過對雲應用進行分類,總結出實踐中的共性問題,抽象出特定的模式和解決方案。提供了包括負載均衡、快取、資料存取、訊息通訊等基礎功能服務。

由於PaaS平臺提供商在平臺軟體和基礎服務的實現上具有多樣性,提供的基礎服務面向不同的特定需求,所針對的應用型別、客戶定位和實現方式上也存在差異,這給最終開發者的應用帶來執行在不同PaaS平臺上時必須面臨的相容性問題。

當在PaaS平臺上開發雲端計算應用時,需要遵循平臺層提供的一系列開發規範。由於平臺層提供了應用部署、應用效能管理、使用計量和計費等基礎服務,因此在應用開發規範中約定在應用中必須掛載一系列的測試樁。由於平臺的許多配置是不允許應用開發者隨意進行調整的,這將帶來調優方面的影響。如果應用還需要把自己的一些功能暴露為服務,供其他應用所用,應用開發者還需要考慮服務註冊等問題。此外,雲應用本身還要考慮整合來自不同雲服務提供商所提供的功能或服務。

事實上,採用雲端計算對開發的需求並沒有降低,因為最終實現的功能在終端使用者看來是一致的。所以雲端計算的採用,對於企業的前端業務需求部門,沒有明顯驅動力,需求部門不會鼓勵IT部門去採用雲端計算,也不會承擔雲端計算帶來的風險。因此企業的IT部門必須想辦法把採用雲端計算可能帶來的風險以及未來持續發展中的風險消滅在部門內部。

前面談到的都是雲端計算對開發帶來的新要求,換個角度來看,雲端計算也為應用開發帶來一些積極的變化。在傳統的應用開發中,由於系統軟體、中介軟體平臺、資料庫和開發環境的不斷升級,已有程式的執行環境不斷受到挑戰,每次環境升級帶來的程式相容性檢查都是一個夢魘,系統的不相容性常常是系統執行所面臨的最大問題。而在雲端計算環境下,使用者對作業系統等執行環境擁有了自主選擇權,使用者完全可以將原有應用執行在安全的沙箱環境內。

雲端計算的技術的引入,也為大規模應用傳承開發的未來指明瞭方向。計算機應用軟體在企業的大規模使用自20世紀90年代開始,經歷的幾乎都是應用開發、部署、遷移、升級、換廠商、再開發部署這樣的輪迴。如果看各大企業的軟體資產,除了在用的系統外,多年前的軟體投資已經幾乎見不到任何蹤影。早期的軟體變革通常是由於流程未固化,需求變化等原因造成頻繁升級,本質上軟體的基本功能是適應生產需求,而從企業的長期發展來看,雖然區域性的流程調整是存在的,但大部分基本功能還是穩定的。因此對企業應用來說,基本功能在長期也是應該穩定的。在採用雲端計算技術後,裝置的維護問題,軟體執行環境相容性問題都已經得到解決,虛擬主機隔離了不同作業系統版本的影響,按需分配資源的方式已經足以允許業務量很低的應用長期處在執行狀態。因此將企業應用中最基礎的,長期穩定的功能固化下來,作為服務長期執行應該被列為開發的首要考量內容。

應用雲化的核心思想是如何使大型應用平衡分配到許多獨立的物理或虛擬機器上進行計算的技術。通過這種運用,可以降低不同規模的應用對主機能力的差異化需求,通過橫向增加標準裝置的技術,滿足從小到大不同規模的應用對處理能力的需求。應用雲化帶來的是應用管理的複雜性上升,這和日常工作是一樣的,當一個全能型技術高手在做一件事情時,任務的分解排程和協調都由他自我合理安排,而如果要把同樣的工作分配給多個僅具備一項或兩項能力的初級技術人員來完成時,就需要考慮任務的銜接,每個人工作的合理性,兩個人工作交接的完整性,還需要及時進行檢查,防止某些環節產生紕漏。這些都是雲端計算應用開發必須面臨的挑戰。

3、雲端計算對運維的影響

雲端計算在企業使用者中的實踐首先面對的是對運維的挑戰。在採用雲端計算技術之前,運維人員會認為一切盡在掌控之中,可以如數家珍地講述系統A執行在第X排Y列機櫃裡的Z主機上,裝置已經納入備份管理,最近裝置執行正常,安全上只允許B網段的主機訪問。而採用雲端計算技術後,運維人員很難講清楚A系統具體執行在哪個主機上,因為全部採用了裝置虛擬化管理,A系統在不同時刻可能處在不同主機上。運維人員需要改變靜態管理的固有思維,主動迎接動態管理的挑戰。

引入了雲端計算之後,運維的重點將不僅僅是原來管理的裝置執行正常,網路暢通,還將關注資源的主動供給、自動配置、可持續性、可追蹤的實時配置管理。

在傳統的運維管理中,為了保證可靠性和伸縮性,不僅需要在部署階段進行支援,而且還需要隨時監視應用的執行狀態,判斷是否存在節點失效或者負載過高等情況,一旦發生異常,管理員根據事先制定好的工作流程來啟動備用的伺服器,執行相應的管理指令碼來對新的伺服器進行配置和初始化等。而在雲端計算環境中運維人員一部分負責物理裝置運轉,一部分負責應用相關的監控和管理。運維人員定位系統故障不再只是依靠傳統的網管手段,需要更深入地通過雲端計算管理平臺以及虛擬裝置管理平臺,來分析系統的執行效率和故障原因。

在雲端計算環境中,虛擬機器虛擬映象磁碟檔案把基本作業系統、客戶需要使用的應用及執行應用所需的中介軟體等元件一併打包在內,免去了傳統環境下為使用者進行復雜安裝配置的過程,做到開箱即用,實際上成為了企業的虛擬資產。這和傳統環境下需要保留主機執行環境,儲存安裝軟體不同,虛擬機器映象檔案隨時載入意味著新的虛擬裝置可以在需要時快速進入生產狀態,特別是一些測試開發環境的準備,可以通過原始的虛擬映象快速恢復到使用者所需要的狀態。

在雲端計算實踐之前,資料中心的絕大多數應用服務都部署在物理機上,隨著物理裝置逐漸老化,效能逐漸下降,所執行的應用軟體的穩定性和可靠性都受到了極大的影響。要把服務遷移到新的系統上會面臨很大的風險:一方面是因為開發人員的流動性,當需要遷移服務時,難以找到原開發團隊的相關人員;另一方面是軟體對新執行環境的相容性問題,軟體所依賴的特定介面或者函式庫在新的系統裡並不一定相容。引入雲端計算技術以後,人們採用新的虛擬化的輔助技術(P2V)能夠把應用服務與作業系統一起從物理伺服器上遷移到虛擬環境中,管理員不再需要觸及與系統緊密整合的應用的相關程式碼,大大提高了系統遷移的可行性和成功率。遷移後的伺服器,不僅可在一個統一的介面中進行管理,而且藉助虛擬機器化管理軟體,在這些伺服器因故障停機時,可以自動切換到網路中其他可替代的虛擬伺服器中,從而達到不中斷業務的目的。

4、企業在標準規範中的作用

雲端計算技術包含硬體裝置,虛擬化平臺,資料庫中介軟體等基礎應用,應用軟體開發等多方面內容,規範也比較多。而業界目前在雲端計算標準規範的分佈呈正三角形,底層標準相對成熟,通過驅動程式或作業系統的相容性,使得裝置有較高的可互換性。越往上層,靠近應用層方面,除了虛擬機器層面有開放虛擬化格式(OVF)標準外,其他方面幾乎沒有成型的標準。企業使用者花費精力參與底層標準的制定不僅沒有精力,而且也沒有話語權,因此只要對底層規範有所瞭解,能夠對企業的技術選型提供參考即可。

對企業而言,最重要的是在應用層面的標準制定中,起到主導者的作用,把握規範的重點。從企業資訊化的角度來看,對企業未來資訊化建設影響最大的有2個層面的規範,一個是Web Service中應用層面的服務,因為從服務註冊、介面語意和呼叫邏輯等框架性方面,可以找到相應的國際規範,各應用提供商都可以遵循,但是介面內容層面的規範,是必須依賴企業內部制定的自有規範。另外一個是雲端計算應用管理平臺方面的規範標準,雲端計算建設不是3~5年的建設和存續週期,企業一旦開始採用雲端計算技術來整合整個IT系統,就意味著企業資訊化的整體方向已經確定,而且這個方向在較長時間內是難以改變的。因此在應用管理平臺的規範上應儘量發揮引導作用,從選型之初就必須堅持可替換和可遷移的原則,要求雲應用管理平臺提供的基礎能力對外服務介面是標準化的,而且是可被其他管理平臺所相容的。

雲端計算要打造的是企業的計算航母,一旦依賴在某個管理系統上,對企業未來的影響是致命的,軟體廠商可以因為市場原因逐步淡出,而企業的資訊化卻是必須長久存在並發展的。因此企業應根據管理平臺的標準進行嚴格約束,要求所有應用開發商所使用的標準服務必須是企業所明示,經過相容性測試的服務。

採用雲端計算技術後,應用開發對標準規範的執行必須提高到一個戰略層面,因為參與構成雲端計算環境的不再是一個獨立的應用,而是由很多服務共同完成的複雜任務。因此標準規範將是參與各方的開發契約,任何不遵從契約的開發行為都是在挑戰應用管理的權威性。而規範的嚴肅性和延續性,也將改變軟體廠商長期在應用開發中側重功能,不注重介面標準的開發陋習。雲端計算的服務介面面向不特定的服務請求者,特別是一些重要的服務,面向許多服務請求者,不恰當的服務介面變更,可能對業務造成難以評估的影響。最穩妥的方案是建立一個相容服務提供者,同時提供新老服務介面的服務,然後通過服務定址重定位功能,完成新老服務的替換。

5、雲端計算的不確定因素

目前主流的商用中介軟體平臺通常採用的是按照使用者許可或者主機CPU核心進行銷售的,採用雲端計算平臺後,無論從IaaS虛擬機器還是PaaS的預裝中介軟體,都帶來一個許可計算的棘手問題。中介軟體廠商不願意看到自己的利潤被虛擬化攤薄,雲端計算服務提供商不願意支付多餘的許可費用。在這種情況下,面向公眾提供雲端計算的服務商,通常採用的是開源的中介軟體平臺或自有的中介軟體平臺,鮮有采用商用中介軟體平臺的,但對於大中型企業使用者而言,對平臺軟體的選用則是一個難以抉擇的事情。因此能否培養企業自有的,在雲端計算中介軟體平臺軟體演進過程中具有自主開發能力的技術隊伍是影響企業雲端計算持續發展的一個不確定因素之一。

雲端計算的實施對雲端計算平臺的管理軟體依賴性很高,平臺管理軟體分為2個層次的內容。一個是IaaS層的管理軟體,這個層次又分為儲存虛擬化管理軟體和主機虛擬化管理軟體;另一個是PaaS層的平臺管理軟體。平臺軟體提供商希望在管理軟體中採用獨家技術,為自身平臺管理軟體未來被第三方軟體替換建起防火牆,而企業使用者卻希望能採用可多家相容的管理平臺,避免雲端計算的建設受制於某個雲端計算技術提供廠商。

由於儲存和主機的介面目前遵循的是成熟的工業化標準介面,在儲存虛擬化管理軟體的替換和遷移上是非常方便的。而常見的主機虛擬化管理軟體支援的虛擬磁碟映象檔案格式差異很大,在系統遷移時,需要解決映象檔案格式轉換的難題。在PaaS層的管理軟體由於強制性規範很少,各軟體提供商的實現也各不相同。有些PaaS平臺在設計上,仍要求開發者嵌入平臺提供的標準庫來實現服務的註冊、監控和管理。而有些PaaS平臺則是通過提供一些標準服務的呼叫來實現這些功能。這2種方案實現的功能看起來是一致的,但是對未來的移植支援是有較大差異的。雲端計算平臺管理軟體的選型合理性和遷移互換支援同樣也是企業雲端計算建設中的不確定因素。

6、其他需要引起關注的問題

雲端計算是一個順應時代發展需求,滿足硬體裝置提供商,軟體提供商和大型企業使用者、中小企業客戶多方訴求而逐漸發展成熟的技術產物,選擇實施雲端計算的戰略方向是毋庸置疑的。但是,選擇了雲端計算不等於就能滿足企業IT建設面臨的各種需求。雲端計算不是包治百病的萬能藥,不同層次的雲端計算技術解決的問題有其侷限性,因此在選擇雲端計算技術時首先要明確企業面臨的核心需求問題。企業不能為了趕上雲端計算潮流而倉促上馬雲計算,更不要迷信IT系統採用了雲端計算技術就會獲得質的飛躍,雲端計算真正發揮效益還是需要應用開發、運維管理等多方面全力配合才能實現的。

雲端計算的實踐之路要謀定而動,雲端計算中涉及的許多技術在現有系統中都已有應用,做好雲端計算需要踏踏實實地做好基礎資訊梳理和系統整合工作。雲端計算在不同層次都可以實施,但是無論在哪個層次,都要用種樹的心態來實施,只有這樣才能把雲端計算真正做到枝繁葉茂,成為可以影響IT建設環境的良性生態體系。