10 年前(2009 年),UC Berkeley 在 2 月 10 日發佈了一篇關於 Cloud Computing 的論文,在 10 年後的今天看來,仍頗具啓發性前端
Cloud Computing is likely to have the same impact on software that foundries have had on the hardware industry.安全
雲計算對軟件的影響就像代工廠對硬件行業的影響服務器
雲計算(Cloud Computing)既指經過互聯網提供服務的應用程序,所謂軟件即服務(SaaS)中的服務,也指提供這些服務的數據中心的硬件和系統軟件,所謂雲(Cloud):微信
Cloud Computing refers to both the applications delivered as services over the Internet and the hardware and systems software in the datacenters that provide those services.網絡
雲以面向公衆的即用即付方式提供時就叫公共雲(Public Cloud),提供效用計算(Utility Computing)服務。相應的,公衆沒法使用的企業/組織內部的數據中心稱爲私有云(Private Cloud)app
P.S.效用計算是一種服務預配模型,服務提供商按需向客戶提供計算資源和基礎設施管理,而且按使用狀況而不是按統一費率計費機器學習
對應到用戶角色上,關係以下圖:分佈式
P.S.固然,SaaS providers 同時也能夠是 SaaS userside
雲計算的關鍵優點在於資源彈性調配(elasticity of resources),1000 臺服務器用 1 小時的成本不超過 1 臺服務器用 1000 小時,這種資源上的彈性是史無前例的:wordpress
Moreover, companies with large batch-oriented tasks can get results as quickly as their programs can scale, since using 1000 servers for one hour costs no more than using one server for 1000 hours. This elasticity of resources, without paying a premium for large scale, is unprecedented in the history of IT.
雲計算還讓應用程序提供者可以將其產品做爲 SaaS 部署,而無需擁有本身的數據中心,就像半導體代工廠的出現讓芯片公司有機會在沒有晶圓廠的狀況下設計和銷售芯片同樣:
Just as the emergence of semiconductor foundries gave chip companies the opportunity to design and sell chips without owning a fab, Cloud Computing allows deploying SaaS—and scaling on demand—without building or provisioning a datacenter.
正如 SaaS 容許用戶將一部分問題拋給 SaaS 服務提供商,雲計算容許 SaaS 服務提供商將一些問題丟給雲計算供應商:
Analogously to how SaaS allows the user to offload some problems to the SaaS provider, the SaaS provider can now offload some of his problems to the Cloud Computing provider.
另外一方面,從硬件角度來看,雲計算帶來的變化在於:
能按需提供無限的計算資源
雲用戶無需預估資源
支持即用即付的短時間計算資源
這樣公司就能從很小的投入開始,在實際須要時才增長硬件資源,從而提升資源利用率,同時,按需取用/釋放的方式也有利於節約資源
雲計算的關鍵推進因素是在低成本的地區建設和運營大規模的商用計算機數據中心,這些地區的電力、網絡帶寬、運營、軟件成本很低,從而造成規模經濟:
We argue that the construction and operation of extremely large-scale, commodity-computer datacenters at lowcost locations was the key necessary enabler of Cloud Computing, for they uncovered the factors of 5 to 7 decrease in cost of electricity, network bandwidth, operations, software, and hardware available at these very large economies of scale.
實際上,自 2000 年初 Web 服務迅猛增加時起,到 2009 年一些巨頭互聯網企業已經擁有至關大規模的數據中心了,如 Amazon、eBay、Google、Microsoft 等:
Building, provisioning, and launching such a facility is a hundred-million-dollar undertaking. However, because of the phenomenal growth of Web services through the early 2000’s, many large Internet companies, including Amazon, eBay, Google, Microsoft and others, were already doing so.
同時,這些企業還必須建設可擴展的軟件基礎設施(如 MapReduce、Google File System、BigTable、Dynamo 等),以及專業的運營和安全防禦機制
除了運營大型商用數據中心必要的軟硬件基礎設施以外,新的技術趨勢和商業模式也是關鍵推力。另外一方面,一旦雲計算起步,就會發現新的應用機會和使用模型,一樣可以促進雲計算的發展
Web 2.0 的出現意味着從高接觸(high-touch)、高利潤(high-margin)、高承諾(high-commitment)服務轉向低接觸、低利潤、低承諾的自助服務。例如:
PayPal 的出現讓我的也能經過信用卡收款,而無需合同和長期承諾,只有少許即用即付的交易費用
Amazon CloudFront 支持我的發佈 Web 內容,不用與內容分發網絡創建關係
Google AdSense 讓我的網頁可以實現廣告收入,而不須要與廣告展現公司創建關係
P.S.高接觸指的是服務過程須要更多的人員接觸,而不是經過自動售貨機、自助櫃檯等方式
技術方面,虛擬機的出現讓客戶能夠自選軟件資源棧,在共享硬件下降成本的同時還不會互相干擾
雲計算對這幾類應用而言是很是好的機會:
移動交互式應用:高可用性要求,以及大型數據集對大規模數據中心的依賴
並行批處理:大數據批處理和分析工做所需的計算資源
分析的興起:業務分析(如瞭解客戶、供應鏈、購買習慣、排名等等)也須要大量計算資源
擴展計算密集型的桌面應用:數學軟件如 Matlab 一樣依賴計算資源
另外,對於一些受限於數據遷移成本、延遲等因素,暫時「上不了雲」的應用("Earthbound" applications),在廣域數據傳輸成本和延遲下降以後或許也能享受到雲彈性和並行性的好處
不一樣的效用計算產品能夠根據提供給開發者的抽象層級和資源管理級別來區分:
Our view is that different utility computing offerings will be distinguished based on the level of abstraction presented to the programmer and the level of management of the resources.
例如,當時的幾種雲產品都對計算、存儲和網絡等資源進行了不一樣程度的虛擬化:
Amazon EC2:提供雲虛機,像物理硬件同樣,用戶可以控制整個資源棧
Google AppEngine:提供面向應用程序的運行環境
Microsoft Azure:提供.NET 運行環境,介於前二者之間
但從雲供應商和雲用戶的角度來看,這幾種效用計算產品只是在開發者易用性、靈活性和可移植性之間的權衡,各自有其不一樣的適用場景
雲計算所帶來的精細化經濟模型讓權衡決策更具流動性,尤爲是雲提供的彈性可以轉移風險:
We argue that the finegrained economic models enabled by Cloud Computing make tradeoff decisions more fluid, and in particular the elasticity offered by clouds serves to transfer risk.
典型的,效用計算優於私有云的場景有兩種:
對一個服務的須要會隨時間變化。好比應對需求高峯
預先不清楚需求。好比產品忽然流行起來或者大批用戶忽然離開
第一種場景下,從成本與收益的角度來看應該是這樣一個不等式:
UserHours of cloud × (revenue − Cost of cloud) ≥ UserHours of datacenter × (revenue − Cost of datacenter / Utilization)
即比較使用雲計算的預期利潤與使用數據中心考慮平均利用率時的預期利潤:
用戶小時數 * (小時收入 - 雲服務成本) >= 用戶小時數 * (小時收入 - 數據中心成本 / 利用率)
P.S.利用率是 100%的話,兩邊相等。即使可能,此時服務也不可用,由於數據中心的可用容量通常是 0.6 到 0.8
好比,一個服務白天需求高峯須要 500 臺服務器,但晚上只須要 100 臺機器,那麼一天的平均用量是 300 臺機器,使用時長爲300 * 24 = 7200
小時。但爲了應對需求高峯,須要付出500 * 24 = 12000
服務時長的成本,約爲實際須要的 1.7 倍。那麼,只要使用雲服務 3 年(假設 3 年折舊)的成本低於購買服務器成本的 1.7 倍,就能夠經過效用計算來節省資金
實際上,數據中心服務器的利用率通常只有 5%到 20%,由於需求峯值一般超過平均值 2 到 10 倍,而應對需求高峯的惟一方法就是提早預配資源。但並不是全部的需求高峯都能提早預知,好比新聞事件引起的需求爆發,此時雲計算所提供的資源彈性尤其重要
除成本因素外,風險轉移能力也是雲計算經濟模型的一個重要價值。一旦需求高峯超出服務能力,就會形成經濟損失,以下圖:
不只會損失一部分用戶的潛在收入,還會致使一些用戶由於體驗問題而永遠離開
另外一些成本風險也可以經過雲計算來規避,例如:
業務放緩等意外緣由致使規模縮減,處理多餘服務器所產生的折舊損失
軟硬件更新換代所增長的成本
即用即付的短租模式可以減小云用戶的使用成本,而購買力強大的雲供應商也可以充分利用規模經濟實現盈利。對雲用戶而言,可以迅速從價格上感覺到資源成本的變化,好比當即享受到硬件成本下降所節省的開支
阻礙 | 機會 |
---|---|
服務可用性(Availability of Service) | 採用多個雲供應商,利用彈性應對 DDOS |
數據鎖定(Data Lock-In) | 標準化 API,兼容軟件支持 Surge Computing |
數據機密性與可審覈性(Data Confidentiality and Auditability) | 部署加密、VLAN、防火牆等,地理數據存儲 |
數據傳輸瓶頸(Data Transfer Bottlenecks) | FedExing Disks、數據備份/歸檔、更大帶寬的交換機 |
性能不可預測性(Performance Unpredictability) | 優化 VM 支持,閃存,並行調度虛擬機 |
可擴展存儲(Scalable Storage) | 發明可擴展存儲 |
大型分佈式系統的錯誤(Bugs in Large Distributed Systems) | 發明適用於分佈式虛擬機的調試器 |
快速擴展(Scaling Quickly) | 發明基於機器學習的自動擴展機制,並創建快照保護 |
聲譽共享(Reputation Fate Sharing) | 提供像 email 這樣的聲譽保證 |
軟件許可(Software Licensing) | 使用付費許可證,批量出售 |
P.S.前三個是採用雲計算的技術阻礙,中間五個是雲計算髮展的技術阻礙,最後兩個是採用雲計算的政策和業務阻礙,右側對應的機會是預期的解決方案
The long dreamed vision of computing as a utility is finally emerging.
雲計算時代已經來臨
指望雲供應商可以以即用即付的模式銷售所擁有的的計算資源,經過資源複用來獲利。雲用戶可以節省創建本身數據中心的高額成本,同時從資源預配風險中解脫出來
同時,開發人員應該專一針對虛擬機的橫向擴展,以支持部署到雲環境中,具體地:
應用軟件:須要支持縱向擴展,包括增長/減小 CPU、內存等資源,還須要一種付費許可模式
基礎設施軟件:須要支持運行在 VM 上,並且應該內置計費
硬件系統:應該在容器的規模上設計,這將是最低購買規模,運營成本要與性能和購買成本相匹配,同時還要考慮節能,讓空閒資源進入低功耗模式。處理器要能與 VM 配合良好,閃存也要加到內存層次結構裏,LAN 交換機和 WAN 路由器也要提升帶寬和成本
從資源角度來看,雲計算帶來的變革主要在於資源使用成本的下降和資源利用率的提高
得益於規模經濟,集中管理的計算資源購買、運營成本更低廉,而且可以經過虛擬化技術共享複用硬件,進一步下降資源使用成本
資源利用率的提高則體如今 4 個層次上:
機器層面:可以迅速租用和釋放。所持有的機器數量接近應用所需的機器數量
資源層面:不一樣類型的資源按需取用,不與物理機器的硬件能力綁定。所租用的資源貼合應用實際須要
負載層面:虛擬化技術容許共享硬件資源,充分利用 CPU 多核特性。硬件火力全開,瘋狂旋轉
租期層面:即用即付的短租模式所帶來的資源彈性,改變了非峯值時段資源利用率低的局面。靈活調配,沒必要爲閒置的時段付出成本
關注「前端向後」微信公衆號,你將收穫一系列「用心原創」的高質量技術文章,主題包括但不限於前端、Node.js以及服務端技術
本文首發於 ayqy.net,原文連接 http://www.ayqy.net/blog/伯克利研究員們眼中的cloud-computing/