標籤:
什麼是雲端運算
雲端運算(英語:Cloud Computing),是一種基於互連網的計算方式,通過這種方式,共用的軟硬體資源和資訊可以按需求提供給電腦各種終端和其他裝置。
雲端運算是繼1980年代大型電腦到用戶端-伺服器的大轉變之後的又一種巨變。使用者不再需要瞭解“雲”中基礎設施的細節,不必具有相應的專業知識,也無需直接進行控制。雲端運算描述了一種基於互連網的新的IT服務增加、使用和交付模式,通常涉及通過互連網來提供動態易擴充而且經常是虛擬化的資源。
在“軟體即服務(SaaS)”的服務模式當中,使用者能夠訪問服務軟體及資料。服務提供者則維護基礎設施及平台以維持服務正常運作。SaaS常被稱為“隨選軟體”,並且通常是基於使用時數來收費,有時也會有採用訂閱制的服務。
推廣者認為,SaaS使得企業能夠藉由外包硬體、軟體維護及支援服務給服務提供者來降低IT營運費用。另外,由於應用程式是集中供應的,更新可以即時的發布,無需使用者手動更新或是安裝新的軟體。SaaS的缺陷在於使用者的資料是存放在服務提供者的伺服器之上,使得服務提供者有能力對這些資料進行未經授權的訪問。
使用者通過瀏覽器、傳統型應用程式或是行動裝置 App程式來訪問雲的服務。推廣者認為雲端運算使得企業能夠更迅速的部署應用程式,並降低管理的複雜度及維護成本,及允許IT資源的迅速重新分配以因應企業需求的快速改變。
雲端運算依賴資源的共用以達成規模經濟,類似基礎設施(如電力網)。服務提供者整合大量的資源供多個使用者使用,使用者可以輕易的請求(租借)更多資源,並隨時調整使用量,將不需要的資源釋放回整個架構,因此使用者不需要因為短暫尖峰的需求就購買大量的資源,僅需提升租借量,需求降低時便退租。服務提供者得以將目前無人租用的資源重新租給其他使用者,甚至依照整體的需求量調整租金。
雲端運算下的軟體工程及其特點
軟體的發展大體上經曆了程式、軟體產品和軟體服務3 個階段。早期的電腦系統以硬體為主,在硬體上搭配規模不大的程式,程式開發的流程較為簡單,開發效率依賴於程式員的個人才智。隨著電腦效能的提升和應用的擴充,軟體的比重不斷提高。無論是從規模還是從複雜程度上,都超越了個人的設計開發能力。工程化的設計思想及其相關的技術方法逐漸開始在開發中顯得愈加重要。1968 年“軟體工程”的概念被首次提出。軟體工程強調的可維護性和文檔化以及對軟體生命週期系統化的管理使軟體成為一種產品。軟體產品的出現使得軟體與硬體分離,成為獨立的研究體系。在軟體開發方法上逐漸形成了分析、設計、編碼、運行、維護的一般流程。軟體涉及的關係主體方面也基本形成了軟體開發商與使用者的二元格局。在軟體工程提出後的幾十年間,開發方法和設計思想不斷創新,但是這一基本流程和格局沒有太大變化。
軟體的開發與計算模式和運行方式直接相關。一般而言,企業計算系統資源按照分層方式進行設計,體現在“應用―中介軟體/資料庫―作業系統―硬體伺服器”緊耦合的模式部署。這種資源架構是軟體工程設計開發模式的先決條件。雲端運算的服務架構由IaaS,PaaS 和SaaS 構成。通過標準架構體系的中介軟體,屏蔽不同作業系統間的差異性,在虛擬化硬體和作業系統上提供可靠的穩定的業務保障,這也就是PaaS 的核心。在雲端運算的模式下,軟體工程在物件導向的基礎上進一步抽象化,提升到面向服務的層次。面向服務也就是將業務流整體分成子業務流,對子業務流層級的模組進行組織設計,並最終形成軟體系統整體。面向服務使軟體在IT 系統結構階層系統中更加接近應用。面向服務的開發模式延伸出了雲端運算下的軟體工程。其基本特性表現在以下方面:
1) 構件的成熟度等級提高,軟體的可複用程度得到提升。軟體複用一直是提高軟體開發效率克服軟體危機的重要途徑,而構件可以在更高抽象層次上實現大粒度的軟體複用。軟體複用程度的提高一方面可以運用成熟構件模組減少軟體開發錯誤,提高軟體的可信性; 另一方面則可以縮短開發時間,提高開發的績效。根據國內著名PaaS 供應商800APP 提供的資訊,雲端運算模式下開發時間可以縮減1 /3 ~ 1 /10。績效與可靠的矛盾關係一直是軟體危機的根源所在,雲端運算在這兩方面同時具有的優勢無疑為緩解軟體危機帶來了希望。
2) 開發人員面向業務應用,需求工程成為重點。在PaaS 的平台中,開發人員有可能寫很少的代碼甚至不需要代碼,而只需按照商務程序對平台中提供的各類資源進行設計和組織即可。這種模式下,需求與開發具有了同等的語境,同時需求在軟體工程中的地位也將更加重要。
3) 雲端運算下的軟體工程打破了軟體開發商與使用者的二元格局,第三方雲端運算中心的作用更加重要。雲端運算模式下的軟體開發和運行環境基本上都是由雲端運算中心來架構的,這些資源按照開發人員的要求進行配置。在開發人員一端省去了硬體設施架構、運行環境調試等工作,只需一個瀏覽器和一些簡單的工具就可以實施開發。開發完成之後的測試以及運行和維護也全部由雲端運算中心負責。這種三足鼎立的關係是傳統軟體工程中所不曾有的,這既改變了工程業務鏈也改變了商業價值鏈。雲端運算中心將開發人員與使用者聯絡起來,並且在軟體體系中佔據了重要的位置。這種情況將會是雲端運算推廣後眾多的中小企業所面臨的問題,對於大型的軟體開發企業來講,則可以通過構建企業私人雲端來完成之一嬗變。但是這也將存在著巨大的技術、資金挑戰。因此,公用雲與私人雲端的軟體工程將會並存發展,這也是比較現實的一種預測。
對傳統軟體工程的影響
與傳統的軟體體繫結構相比,雲端式計算的軟體體繫結構最重要的特點在於其前所未有的開放性和成熟的構件化。雲端運算應用軟體必將大量利用雲端服務提供管理中問件的現成的軟體構件,同時,新研製的軟體又將成為後續應用軟體開發所能利用的成熟構件。
雲端運算應用軟體體繫結構在本質上是完全分布式的,由用戶端、服務端、管理端、開發端、測試端等多種軟體構件有機整合,多種應用共用公用軟體構件,應用之間仍然有清晰的邏輯邊界,但不再有截然分開的物理邊界。
從生命週期特點看,傳統的軟體生命週期模型是串列的,本質都是瀑布模型的變形,這樣的生命週期模型更易於控制,可以保證在確定時間有確定的結果。但在雲端運算環境下,軟體開發生命週期模型;並行存取模型、多重螺旋模型將成為主流,瀑布模型、迭代模型的使用越來越少,在軟體部署後,交付的都是中間版,軟體升級成為常態。
開發流程:軟體開發不再是一個封閉的、全域控制的流程,而是存在多個並發和自治的流程,在一個項目中,自底向上、自頂向下有機整合。
在軟體開發的各個基本階段,需求階段將佔據較大的工作量比例,架構設計基本可以從已有的成熟架構模式中選型確定,詳細設計可以借用大量的成熟構件和代碼,隨著軟體複用程度的提高,軟體測試的工作量將大大降低,而軟體品質則得到有效提升。
開發過程中,使用者、開發人員之間不再有明確的角色劃分,通常情況下,在不同階段,軟體開發人員、服務提供者、軟體使用者多種角色是同一個人軟體開發工具由雲端運算服務商統一提供,開發組織無需購買永久性的軟體許可,只需在開發週期內按需租用雲端服務商的軟體許可,這樣可以大大降低軟體工具費用。
雲端運算給軟體部署、運行管理和維護帶來了高度的靈活性,對於一個特定的應用,軟體部署、運行管理、維護和開發過程是並行的,第一次部署的可能只是一小部分功能,在隨後的軟體升級中不斷完善。由於雲端運算模式極大的降低了軟體構件之間的耦合程度,軟體的用戶端、服務端、管理端等構件完全以並發、獨立的方式部署和管理,甚至軟體啟動並執行基礎設施也可以在使用者透明的方式完成升級換代和重新部署。
雲端運算軟體是按照使用者需求隨時運行,軟體運行平台採用目前非常成熟的虛擬化接術,在用戶端,可以產生多種虛擬環境,如Windows、linux,甚至是瀏覽器等,使用者可以根據自己的喜好來選擇;在伺服器端,可以把大規模的伺服器系統虛擬化為單一處理單元和連續的儲存單元,降低使用者端的管理複雜程度。
雲端運算軟體啟動並執行最底層的硬體系統和基礎軟體系統則由專業的電腦資訊系統整合商統一維護管理,對使用者來說,完全可以不關心底層軟硬體的細節。
雲端運算對傳統軟體工程的影響