云”這個詞是一個模糊不清的詞,即使人們長期堅定地使用它。這種情況就好像,當政治家們陷入困境時,他喜歡說解決問題的辦法常常是通過“教育”一樣。在過去的十年或更長的時間里,從實習生到首席信息官,IT部門的每個人都知道,不管是什么問題,正確答案都是通過“云”來解決的。
不過,由于多年來“云”這個詞隱藏了許多復雜性和不確定性的東西,因此它的含義千差萬別。在這個流行詞被采用之前,大型機公司就開始銷售分時度假系統。最早的托管公司就是在Unix服務器上租用帳戶。像美國這樣的公司以娛樂為幌子,在線提供類似云的存儲和計算服務。
直到現在,這種演變還在一直持續。初始階段,云計算產品只是在服務器上運行的幾十個虛擬機。即使用戶實例只是機器的一小部分,也可以假裝是root用戶。從而FTP服務器被重新命名為bucket和dropbox,服務也開始出現爆炸式增長,“aas”成為首字母縮寫詞創作者最喜歡的后綴。
這種演變仍在繼續,每一項新的發展都會促使云計算用戶重新思考他們想要租什么,以及他們期望用自己的錢得到什么。其中許多是重新發現和重新包裝的想法,還有許多是通過解決上一代解決方案產生的問題的更好的解決方案。所以這些給了人們提供了一個機會,那就是通過重構云計算技術,云服務器,使其煥然一新。
以下是云計算創新和發展的七種重要方式。
1、減小計算粒度節省成本
第一代無服務器計算具有相對較大的計算單元。例如,AWS Lambda一開始就將所有的計算粒度四舍五入調用為100毫秒,程序員很快就發現,他們花同樣的錢可以實現一個更快速、更簡單的計算,或者可能是一個20倍、30倍甚至100倍大的計算。如果他們不那么細心或者利用率不高,也沒影響,實際支付的賬單是一樣的。
隨著越來越多的無服務器平臺競爭,最小計算粒度的大小也越來越小。AWS停止了100毫秒取整,開始以1毫秒為增量計費。
2、簡化操作系統
現代化的操作系統是一臺極好的復雜機器,設計用于處理打印作業、視頻游戲、文檔編輯和大量其他任務。您是否曾經想過為什么要在啟動云實例時準備好所有代碼來處理這些任務?
Unikernels是消除所有復雜性的一種方法。一旦代碼運行,編譯器將構建一個更小的程序包,該程序包將位于標準虛擬機管理程序之上。支持者指出,這樣不僅效率提高了,攻擊面還要小得多,從而更易于保護。
為什么不直接從AWS或Google獲得你的最小操作系統呢?Google的Container-Optimized OS和Amazon的Bottlerocket將傳統的虛擬化范例應用到操作系統中,其中容器是虛擬操作系統,而最小的Linux則扮演著虛擬機管理程序的角色。它們在包裝只做一件小事的微服務方面十分出色,而不依賴于操作系統的大部分功能。
3、開源功能
另一種簡化部署到云平臺工作的方法是讓開發人員編寫一個簡單的功能,并將所有其他工作留給云平臺本身。在過去幾年中,所有的主要云計算供應商都展示了自己的工具,這些工具允許一個小片段代碼、一個功能來做出一些決定,并處理一些數據。這些都是很好的進步,特別是對于將許多服務組合成一個產品的開發者來說。
唯一的缺點是云計算供應商鎖定的情況。雖然這些功能可以用多種語言編寫,但與框架的交互是專有的。現在,有許多有趣的開源項目(openwhsk、OpenFaaS、Kubeless、Knative、Fission)提供“功能即服務”。
4、Arm芯片
Arm芯片不僅僅是給Mac愛好者設計的。AWS有一系列服務器運的帶有Arm內核的Graviron芯片,亞洲服務器租用,保證運行成本降低40%。當然有一些警告。必須重新編譯可執行文件以在Arm平臺上運行,除非使用的是Java、JavaScript(Node.js)或PHP(Drupal、WordPress等)等更高級別的語言。
能否實現大的節省在很大程度上取決于計算和負載的性質。一些基準測試將Gravitron機器與基于Intel的原始機器放在通用范圍內。其他人則認為基于Arm的實例的性能稍差一些,因此更適合于運行低代碼,這些代碼可以在不延長運行時間的情況下節省成本。
是否要更換這種呢?找到答案的唯一方法是在生產環境附近測試自己的工作負載,看看它們可不可以節省成本。
5、萬能數據庫
很久以前,Fortran程序員看到Fortran添加了一些令人興奮的新特性,并打趣說,不知道未來的編程語言會是什么,但還是將它稱為“Fortran”。今天,對于數據庫(作為服務層的原始微功能)來說,可能也是這樣的。很久以前,數據庫只能存儲矩形表,如今,幾乎可以做任何事情。