云计算的前生今世
原文:https://skyao.io/learning-cloudnative/introduction/history.html
掌握一門技術,一定要了解其發展歷史,才該技術未來的走向,通過本篇文章,讓我們看看過去幾十年間,云計算領域的發展演進歷程。
云計算的遠古時代
云計算的歷史事實上需要追溯到60多年前的計算機遠古歷史:
1955年,John McCarthy(備注:John McCarthy是Artificial Intelligence/人工智能一詞的提出者)創造了一種在用戶群中共享計算時間的理論。
1959年6月,在國際信息處理大會上克里斯托弗Christopher Strachey發表了《Time Sharing in Large Fast Computer》論文,提出了虛擬化概念。該文被公認為虛擬化技術的最早論述。
1965年8月,IBM推出System/360 Model 67 和 TSS 分時共享系統(Time Sharing System),通過虛擬機監視器(Virtual Machine Monitor)虛擬所有的硬件接口,允許多個用戶共享同一高性能計算設備的使用時間,也就是最原始的虛擬機技術。
在20世紀60年代中期,美國計算機科學家 JCR Licklider 提出計算機互聯系統(an interconnected system of computers)的想法。
1969年,在 JCR Licklider 的革命性創意的幫助下,Bob Taylor 和 Larry Roberts 開發了互聯網的前身 ARPANET(Advanced Research Projects Agency Network),允許不同物理位置的計算機進行網絡連接和資源共享。
1972年,IBM發布了名為VM(Virtual Machine)的操作系統。在90年代,虛擬機的使用開始流行
1974年,Popek和Goldberg發表了《Formal Requirements for Virtualizable Third Generation Architectures》提出了虛擬化準備的充分條件,指出滿足條件的控制程序可以被稱為虛擬機監視器Virtual Machine Monitor (VMM):(1)一致性:一個運行于虛擬機上的程序,其行為應當與直接運行于物理機上的行為基本一致,只允許有細微的差異如系統時間方面;(2)可控性:VMM對系統資源有完全的控制能力和管理權限;(3)高效性:絕大部分的虛擬機指令應當由硬件直接執行而無需VMM的參與。
1978年,IBM獲得了獨立磁盤冗余陣列(Redundant Arrays of Independent Disks,RAID)概念的專利。該專利將物理設備組合為池,然后從池中切出一組邏輯單元號(Logical Unit Number,LUN)并將其提供給主機使用。雖然該技術直到1988年IBM才與加利福尼亞州立大學伯克利分校聯合開發了第一個實用版本,但該專利第1次將虛擬化技術引入存儲之中。
“Time-Sharing”的背景:自20世紀50年代,人類使用大型計算機系統來處理數據。而在早期,大型計算機體積龐大而且價格高昂。為了提高投資回報率,購買大型機的組織開始實施“分時調度(time-sharing)”,然后從沒有處理能力的終端訪問大型計算機。“分時”理論可以充分利用可用的計算時間,可以用于為無力購買自己的大型機的小公司提供計算時間。
這里便陸續出現了云計算的基本前提:共享計算能力和共享網絡,并出現了虛擬機,虛擬網絡和早期基礎設施。
但是在2000年前后虛擬化技術成熟之前,市場處于物理機時代。當時如果要啟用一個新的應用,需要購買一臺或者一個機架的新服務器。
虛擬化技術成熟
在2000年前后,虛擬化技術逐漸發展成熟:
1998年,VMware成立并首次引入X86的虛擬技術,通過運行在Windows NT上的VMware來啟動Windows 95。
1999年,VMWare推出可在X86平臺上流暢運行的第一款VMware Workstation,從此虛擬化技術終于走下了大型機的神話。之后,研發人員和發燒友開始在普通PC和工作站上大量使用該虛擬化解決方案。
1999年,IEEE頒布了用以標準化VLAN實現方案的802.1Q協議標準草案,從而可以將大型網絡劃分為多個小網絡,使得廣播和組播流量不會占據更多帶寬的問題;同時,可以利用VLAN標簽提供更高的網絡段間的安全性。
2000年,IEEE頒布了虛擬專用網(Virtual Private Network)VPN標準草案,從而使得私有網絡可以跨公網進行建立。
2000年,Citrix桌面虛擬化產品正式發布。
2001年,VMware發布了第一個針對x86服務器的虛擬化產品ESX和GSX,即ESX-i的前身。
2003年10月,Xen虛擬化項目首次面世推出了1.0版本,此時僅支持半虛擬化Para-Virtualization。之后,基于Xen虛擬化解決方案陸續被Redhat、Novell和Sun等的Linux發行版集成,作為默認的虛擬化解決方案。
2003年,Microsoft收購Connectix獲得虛擬化技術進入桌面虛擬化領域,之后很快推出了Virtual Server免費版。
2005年,Xen 3.0發布,該版本可以在32位服務器上運行,同時該版本開始正式支持Intel的VT技術和IA64架構,從而使得Xen虛擬機可以運行完全沒有修改的操作系統。該版本是Xen真正意義上可用的版本。
2006年10月,以色列的創業公司Qumranet在完成了虛擬化Hypervisor基本功能、動態遷移以及主要的性能優化之后,正式對外宣布了KVM的誕生。同年10月,KVM模塊的源代碼被正式接納進入Linux Kernel,成為內核源代碼的一部分。備注:Qumranet在2008年被RedHat收購。
2009年4月,VMware推出業界首款云操作系統VMware vSphere。
云計算的重要里程碑之一是2001年VMWare帶來的可用于X86的虛擬化計劃。通過虛擬機,可以在同一臺物理機器上運行多個虛擬機,這意味著可以降低服務器的數量,而且速度和彈性也遠超物理機。
基于虛擬機的云計算
在虛擬化技術成熟之后,云計算市場才真正出現,此時基于虛擬機技術誕生了眾多的云計算產品,也陸續出現了IaaS、PaaS等平臺和公有云、私有云、混合云等形態:
2006年,AWS推出首批云產品Simple Storage Service (S3)和Elastic Compute Cloud(EC2),使企業可以利用AWS的基礎設施構建自己的應用程序
2008年4月,Google App Engine發布,是 Google 管理的數據中心中用于 WEB 應用程序的開發和托管的平臺。
2009年,Heroku 推出第一款公有云 PaaS (Platform-as-a-Service)
2010年1月,微軟發布 Microsoft Azure云平臺服務。備注:Microsoft Azure 于2008年宣布。
2010年7月,Rackspace Hosting和NASA聯合推出了一項名為OpenStack的開源云軟件計劃
2011年,Pivotal推出了開源版PaaS Cloud Foundry,作為Heroku PaaS的開源替代品,并于2014年底推出了Cloud Foundry Foundation。
2013年底,Google 推出 Google Compute Engine (GCE)正式版。備注:GCE的測試版本于2008年發布,預覽版于2012年發布。
2014年,AWS推出 Lambda,允許在AWS中運行代碼而無需配置或管理服務器,即Faas/Serverless。
在這期間,出現了云計算的多個重要里程碑:
IaaS的出現:通過按時計費的方式租借服務器,將資本支出(Capex)轉變為運營支出(Opex),這使得云計算得以大規模興起和普及。
PaaS的出現
開源IaaS的出現:云計算已經開始進入開源時代
開源PaaS的出現
FaaS的出現
補充術語介紹,Capex Vs. Opex:
Capex = capital expenditure / 資本支出
Opex = operational expenditure / 運營支出
容器的興起和編排大戰
2013年,在云計算領域發生了一件影響深廣的技術變革:容器。
容器技術可以說是過去十年間對軟件開發行業改變最大的技術,而從虛擬機到容器,整個云計算市場發生了一次重大變革,甚至是洗牌。基于容器技術的容器編排市場,則經歷了Mesos、Swarm、kubernetes三家的一場史詩大戰,最終以kubernetes全面勝利而告終:
2008年,LXC(Linux Container)容器發布,這是一種內核虛擬化技術,可以提供輕量級的虛擬化,以便隔離進程和資源。LXC是Docker最初使用的具體內核功能實現
2013年,Docker發布,組合LXC,Union File System和cgroups等Linux技術創建容器化標準,docker風靡一時,container逐步替代VM,云計算進入容器時代
2014年底,CoreOS正式發布了CoreOS的開源容器引擎Rocket(簡稱rkt)
2014年10月,Google 開源 kubernetes,并在2015年捐贈給 CNCF
2015年6月,OCI組織成立,旨在制定并維護容器鏡像格式和容器運行時的正式規范,以便在不同的操作系統和平臺之間移植
2015年7月,Google聯合Linux基金會成立了CNCF組織,kubernetes 成為 CNCF 管理的首個開源項目
2015年,CNCF組織開始力推 Cloud Nativ ,完全基于開源軟件技術棧,Cloud Native 的重要理念是:以微服務的方式部署應用,每個應用都打包為自己的容器并動態編排這些容器以優化資源利用
2017年9月,Mesos宣布了對Kubernetes的支持
2017年10月,Docker宣布將在下一版Docker,將同時支持自家調度引擎Swarm和來自Google的調度平臺Kubernetes
2018年3月,Kubernetes 從 CNCF 畢業,成為 CNCF 第一個畢業項目
這里有兩個重要的里程碑:
2013年,Docker發布,容器逐步替代VM,云計算進入容器時代
2017年底,Kubernetes 贏得容器編排的勝利,云計算進入 Kubernetes 時代
在容器編排大戰期間,以 kubernetes 為核心的CNCF Cloud Native生態系統也得以迅猛發展,云原生成為云計算市場的技術新熱點。
云計算演進總結
云計算的發展演進歷史,有以下規律:
核心構建塊的變化:
從早期的物理服務器,通過虛擬化技術演進為虛擬機,再擺脫機器的限制縮小為構建塊,最后通過容器化技術演進為目前的container
隔離單元:無論是啟動時間還是單元大小,物理機、虛擬機、容器一路走來,實現了從重量級到輕量級的轉變
供應商:從閉源到開源,從單一供應商到跨越多個供應商
下圖形象的概述了這二十年云計算的演進過程:從傳統預制IT、托管到云,以及云的不同形態如IaaS、PaaS、SaaS等。
對于XaaS的一路演進,可以簡單歸納為:
有了IaaS,客戶不用關注物理機器
有了PaaS,客戶不用關注操作系統
有了SaaS,客戶不用關注應用程序
在這過去的二十年間,云計算幾乎重新定義了整個行業的格局,越來越多的企業開始降低對IT基礎設施的直接資本投入,不再傾向于維護自建的數據中心,而是開始通過上云的方式來獲取更強大的計算、存儲能力,并實現按時按需付費。這不僅僅降低IT支出,同時也降低了整個行業的技術壁壘,使得更多的公司尤其是初創公司可以更快地實踐業務想法并迅速推送到市場。
參考資料
CNCF的介紹資料?Cloud Native and Container Technology Landscape
What is XaaS? IaaS vs SaaS vs PaaS: what’s the difference:對XaaS的概括介紹
漫畫趣味圖解云計算的起源
云計算的前世今生——云計算發展大事件: 梳理得較為全面的云計算大事記文章,值得收藏和分享
下一頁
- END -
看完一鍵三連在看,轉發,點贊
是對文章最大的贊賞,極客重生感謝你
推薦閱讀
BPF、eBPF、XDP 和 Bpfilter……這些東西是什么?
后端技術趨勢指南|如何選擇自己的技術方向
深入理解DPDK程序設計|Linux網絡2.0
總結
- 上一篇: 技术人的七夕表白可以有多浪漫?
- 下一篇: 一个内核网络漏洞详解|容器逃逸