摘要:導讀近期靈雀云技術專家邵明岐翻譯了所著的一書的部分內容,可以說是對科普與觀察的上佳素材。的另一半是是的另一種形式,概念上容易混淆的地方在于,有時候將自己的服務,,稱為。
導讀:近期靈雀云技術專家邵明岐翻譯了Mike Roberts & John Chapin所著的《What is serverless》一書的部分內容,可以說是對Serverless科普與觀察的上佳素材。本文為第1篇,他首先通過回溯云計算的發展史,來找出是什么原因導致進化出了 Serverless,然后解釋 Serverless 到底為何物,最后總結為什么 Serverless 是云計算成長的必然產物,同時也是應用交付方式的巨大飛躍,非常值得一讀!
原著:《What is serverless : understand the latest advances in cloud and service-based architecture》
作者:Mike Roberts & John Chapin
譯文來源:深入淺出談架構(ID:deep-easy-arch)
譯者:靈雀云邵明岐
讓我們回到2006年, 那時候還沒有 iPhone 和移動互聯網,Ruby on Rails 是一個非常熱門的編程框架,Web 2.0 在當時是互聯網最火熱的名詞。那時候大部分應用程序的后端服務,都是運行在托管或者自建的數據中心和物理服務器上。
云的誕生
2006年8月發生的事情將從根本上改變這種模式。 亞馬遜新的IT部門 AWS 宣布推出Elastic Compute Cloud(EC2),EC2是眾多基礎架構即服務(IaaS)產品中的第一個, IaaS允許公司租用計算資源 (主要是面向互聯網應用的虛擬主機),而不是購買自己的服務器, 它還允許人們在幾分鐘之內就可以獲取到主機資源。 EC2的五個主要優勢是:
1.降低人工成本
在 IaaS 出現之前,公司需要雇傭有專門技能的人來管理數據中心和里面的物理服務器,他們需要管理從電源和網絡,到貨架和安裝,到修復機器的磁盤等物理問題,到設置操作系統(OS)。 通過IaaS,所有這些都消失了,而是都交給 IaaS 服務提供商,比如 AWS 或者阿里云。
2.降低風險
在管理自己的物理服務器時,經常會遭遇一些意外事件,比如硬件故障,從而導致系統不穩定或者長時間宕機,因為硬件問題很難預測,并且可能需要很長時間才能解決。 通過IaaS,客戶雖然仍需要做一些工作來對抗硬件故障發生的風險,但不再需要知道如何修復硬件, 相反,可以簡單地在幾分鐘內申請到新機器實例,并重新安裝應用程序,從而限制了這些問題的風險。
3.降低基礎設施成本
在大部分情況下,當您考慮電源、網絡等成本的時候,EC2實例的成本比運行自己的硬件便宜,尤其是當您只想臨時需要運行主機幾天或幾周而不是幾個月時。
4.靈活擴展
考慮到IaaS帶來的擴展優勢,基礎設施成本顯著下降,通過IaaS,公司在擴展其運行的服務器的數量和類型方面具有更大的靈活性, 不再需要提前幾個月預先購買10臺高端服務器,相反,您可以從一個或兩個低功耗,廉價的實例開始,然后隨著時間的推移逐漸擴展您的實例數量和類型。
5.交付時間短
在托管服務器的舊時代,為新應用程序采購和配置服務器可能需要數月時間。 如果你想出新的想法,并且希望盡快嘗試一下,在傳統的方式下很難辦到。 使用IaaS,交付時間從幾個月縮短到幾分鐘。
基礎設施外包
使用 IaaS,本質上我們可以認為是基礎設施外包的技術。 當我們開發和運營軟件時,我們需要做的工作大致可以分為兩類:一類是針對需求需要定制的工作。另外一類是和其他公司都差不多,比較通用的工作。
基礎設施就是屬于第二種,其范圍包括物理的設備,例如運行我們機器,電路,網絡等,也包括一些通用的軟件功能,比如用戶認證。
基礎設施外包通常可以由服務提供商(SP)提供。 例如,電力由電力供應商提供,并且網絡由互聯網服務提供商(ISP)提供,他們通過 2 種模式來減低成本和提高效率:規模化和技術創新。
規模化
幾乎所有形式的基礎設施外包都通過規模化的模式來降低成本,把大量工作打包在一起批量做,成本比多帶帶一件一件做,效率大大提高。例如,AWS 可以以遠低于小公司的價格購買相同規格的服務器,因為 AWS 一次性購買成千上萬的服務器,而不是購買幾十臺服務器。 同樣,AWS 的每臺服務器運營成本遠低于自建 IDC 的公司。
技術創新
基礎設施外包通常也部分歸因于技術創新。比如 EC2,是通過硬件虛擬化的技術來實現的。在IaaS出現之前,一些IT供應商已經開始允許公司來按月租用物理服務器。顯然,EC2 的按小時租用主機的方式更具吸引力,而且,虛擬化技術可以將物理服務器細分為許多更小的,快速啟動和關閉的虛擬機(VM),這樣 IaaS 才變得可行。
基礎設施外包與 IaaS 的五大好處完全一致:
? 降低人工成本 :減少人員,減少維護基礎設施工作所需的時間;
? 降低風險 :消除了一部分對特殊技能專家的需求,并且能夠獲得及時的運營支持能力;
? 降低資源成本 :同樣功能的成本更低;
? 提高擴展的靈活性:可以訪問更多資源和不同類型的類似資源,而不會造成重大損失或浪費;
? 縮短交付周期:縮短從新想法到生產可用性的交付時間;
當然,基礎設施外包也有其缺點和局限性,我們將在后面的部分介紹。
云計算的發展
云計算的發展是從IaaS開始的,比如EC2和AWS Simple Storage Service(S3), AWS是云計算早期的推動者,緊隨其后的還有微軟、谷歌、阿里云等。當我們談論“云”時,我們通常指的是公共云,但是,我們也看到了私有云的市場發展的也不錯,比如OpenStack。
公共云之后的另外一個潮流是PaaS,Heroku是當時最受歡迎的PaaS廠商之一, PaaS層面置于IaaS之上,將操作系統(OS)添加到外包的基礎架構中,使用PaaS,您只需部署應用程序,云平臺負責操作系統安裝、補丁升級、系統級監控、服務發現等。
Heroku是公有云服務,Cloud Foundry是PaaS的一個私有云版本, 由于PaaS位于現有虛擬化解決方案之上,因此您可以在企業內部部署或者在IaaS公共云服務上部署“私有PaaS”,同時使用公共云和私有云通常被稱為混合云, 能夠在混合云環境中實現一個統一的PaaS平臺對企業特別有用。
在虛擬機之上使用PaaS的最新方式是使用容器,Docker在過去幾年中變得非常非常受歡迎,因為它可以從操作系統開始,更清楚地描述應用程序的系統需求,而管理/編排容器的云服務,通常稱為容器服務(CaaS),比如Google的Container Engine和AWS的ECS。 一些私有云的CaaS是Kubernetes和Mesos,您也可以把它們搭建在公共IaaS或者私有IaaS之上運行。
就像IaaS一樣,PaaS和CaaS都是基礎設施外包的另外一種更加高級的形式,它們和IaaS的主要不同之處是,有更高級別的抽象性,允許我們將運行應用的更多技術細節交給云平臺,因此,PaaS和CaaS帶給我們的好處,與我們之前列出的IaaS的五個好處完全一樣,所以,我們可以將所有這三個(IaaS,PaaS,CaaS)組合為計算即服務(Compute as a Service)。
Serverless時代到來
前面解釋了半天云計算的發展史,主要就是想引入主題——Serverless。它將會是云計算演進的下一個重要技術,也是另外一種形式的基礎設施外包,它同樣具有我們已經看到的云計算的五大優勢,云廠商同樣也是通過規模化和技術創新來提供這些優勢。
Serverless 并不等于 FaaS
大部分人開始了解Serverless時,會有一個誤區,以為Serverless就是FaaS,比如AWS的Lambda,Google的Cloud Function。但深入研究就會發現,Serverless實際上涵蓋了一系列技術,我們將這些技術分為兩類:Backend as a Service(BaaS)和Functions as a Service(FaaS),所以,簡單來說Serverless=BaaS+FaaS。
BaaS
BaaS就是用現成的第三方服務替換原來自己編碼實現或者自己搭建的服務器端組件,它在概念上更接近于Software as a Service(SaaS),不同之處在于SaaS通常是關于外包業務流程,比如人力資源或銷售工具,或者像Github這樣的服務技術工作者的產品。然而對于BaaS來說,實際上是將應用程序分解成更小的組件,并將其中一部分組件用第三方提供的服務來完成,這個第三方服務通常就叫做BaaS。
BaaS服務是通過API遠程調用的組件,而不是SDK,或者Library,我們通過遠程API的調用,來完成應用程序的一部分功能。這里有一個很好的例子是身份驗證,許多應用程序通過自己的代碼來實現注冊、登錄、密碼管理等功能,但是這些代碼在很多應用程序中非常相似,同樣的事情無數的公司和團隊做過了無數遍,已經非常成熟了,可以把它們抽象出來變成一個第三方公共服務再好不過,這正是Auth0和亞馬遜的Cogono等產品的目標,這兩種產品都允許任何人,不需要寫一行代碼的情況,就可以在移動應用程序和Web應用程序上實現非常完善的身份驗證和用戶管理功能。
BaaS最早的時候,在移動應用程序開發中特別受歡迎,一開始人們甚至把它叫做Mobile Backend as a Service(MBaaS),但是實際上,BaaS除了被用作移動應用的后端服務之外,還可以應用到非常多的場景,比如我們可以不需要自己搭建和維護Mysql實例,而是使用亞馬遜的RDS服務,或者可以用Kinesis替換自己搭建和管理的Kafka消息隊列,其他數據基礎設施服務包括文件系統、對象存儲和數據倉庫、語音分析、以及我們之前提到的身份驗證,這些服務都是BaaS,都可以作為一個應用的后端服務的一部分。
FaaS
Serverless的另一半是FaaS, FaaS是Compute as a Service的另一種形式,概念上容易混淆的地方在于,AWS有時候將自己的FaaS服務,Lambda,稱為Serverless Compute。
FaaS是一種構建和部署服務器端軟件的新方法,只不過粒度更細,能夠獨立的部署某一個函數,許多人認為Serverless就是FaaS,但是實際上并不完全正確。
我們通過傳統方式部署服務器端軟件時,從主機實例開始,通常是虛擬機(VM)實例或容器(參見下圖), 然后我們在主機中部署應用程序,如果主機是VM或容器,那么應用程序是一個操作系統進程, 通常我們的應用程序中的代碼實現了一些不同功能的操作,例如,Web服務提供檢索和更新資源的操作。
FaaS改變了這種部署模式(如下圖), 部署模型中少了主機實例和應用程序進程,我們只關注實現應用程序邏輯的各個操作和函數,將這些函數代碼多帶帶上傳到云供應商提供的FaaS平臺。
但是,這些函數在云服務托管的服務器進程中缺省處于空閑狀態,直到需要它們運行的時候才會被激活(如下圖), 通過配置FaaS平臺來監聽每個函數的激活事件。 當該事件發生時,FaaS平臺實例化函數,然后使用觸發事件調用它。
一旦該函數執行結束了,理論上FaaS平臺可以銷毀掉實例,不過,通常為了優化性能,會將函數實例保留一段時間,可以被下一個事件復用。
FaaS本質上是一種事件驅動的模型,除了提供托管和執行代碼的平臺之外,FaaS平臺還集成了各種同步和異步事件源,HTTP API網關就是一種同步事件源,消息總線、對象存儲或類似于(cron)的定時器就是一種異步源。
AWS在2014年就推出了Lambda,到目前為止成熟度和接受度已經獲得大幅的提高,一些公司每天在使用Lambda處理數十億的事件,到目前為止,Lambda集成了超過20種不同類型的事件源,可以支持各種不同類型的應用程序。
除了AWS Lambda之外,還有其他一些來自Microsoft,IBM,Google廠商的商業FaaS產品,正如我們之前討論的各種其他計算即服務平臺(IaaS,PaaS,CaaS)一樣,也有可以運行在私有云上開源FaaS項目,私有的FaaS領域目前比較早期,沒有絕對的領先者,一些比較活躍的項目有OpenWhisk、Fission、IronFuncions、Serverless、Nuclio等。
為什么FaaS和BaaS都叫Serverless?
從表面上看,BaaS和FaaS完全不同,BaaS是托管應用程序的一部分依賴組件,FaaS托管應用程序的代碼,那么為什么我們把它們放在一起,都叫做Serverless呢?
這里的關鍵就是不需要管理自己的服務器主機或服務器進程,完全使用Serverless架構的應用程序,將不再需要考慮服務器或者進程,應用程序的所有邏輯。無論您是自己編寫的,還是與第三方服務集成的部分,都運行在完全彈性的環境中,狀態也采用以類似彈性的形式存儲,無服務器并不意味著服務器已經消失,這只是意味著著您不再需要關心它們了。
Serverless帶給云計算的重大變化
在云計算過去十年的發展中,我們已經將應用程序的運行環境和通用組件,越來越多的外包給云廠商。Serverless也同樣符合這一趨勢,主機管理、操作系統管理、資源分配、擴展、甚至應用邏輯的整個組件,都外包給云廠商,在成本和運營效率方面獲得了顯著的提升。
但是,在應用程序架構方面,Serverless有很大的變化。之前的云計算服務,并沒有從根本上改變設計應用程序的方式,例如,當使用Docker這樣的工具時,我們在應用程序周圍放置了一個更薄的“盒子”,但它仍然是一個盒子,邏輯架構不會發生顯著的變化,在云中托管MySQL實例時,我們仍然需要考慮工作負載所需的虛擬機資源,而且仍需要考慮故障切換。
這種情況隨著Serverless而發生變化,并且是非常大的變化,FaaS本質上是和傳統架構非常不一樣的架構類型——事件驅動模型。它的部署方式更加細粒度,以及需要將狀態保存到FaaS組件之外,BaaS使我們無需編寫完整的邏輯組件,但需要將應用程序與云廠商提供的特定接口和模型集成。
那么,Serverless的應用程序架構到底有什么不同之處,它看起來到底長什么樣子? 這是我們接下來要討論的內容。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/25503.html
摘要:前端框架總是帶入后端思維,而則是把前端思維帶入了后端運維。前端同學對應該尤為激動。而帶來了進一步優化的空間。當服務器面臨攻擊重啟磁盤故障時,打開復雜的工作臺或登陸后一通操作才能恢復。 1. 引言 Serverless 是一種 無服務器架構,讓用戶無需關心程序運行環境、資源及數量,只要將精力 Focus 到業務邏輯上的技術。 現在公司已經實現 DevOps 化,正在向 Serverles...
摘要:年月,騰訊云宣布推出總價值超過億元的小程序云開發資源扶持計劃,對超過一百萬個小程序開發者提供免費資源扶持,全面助力開發者打造優秀小程序。 『 作為一個不斷發展的新興技術, Serverless 熱度的制高點已然到來。』 或許,Google Trends 所顯示的 3 年猛增 20 倍的 Serverless 搜索量,可以佐證 Serverless 在整個行業中的火爆程度。 showI...
摘要:年月,騰訊云宣布推出總價值超過億元的小程序云開發資源扶持計劃,對超過一百萬個小程序開發者提供免費資源扶持,全面助力開發者打造優秀小程序。 『 作為一個不斷發展的新興技術, Serverless 熱度的制高點已然到來。』 或許,Google Trends 所顯示的 3 年猛增 20 倍的 Serverless 搜索量,可以佐證 Serverless 在整個行業中的火爆程度。 showI...
摘要:年月,騰訊云宣布推出總價值超過億元的小程序云開發資源扶持計劃,對超過一百萬個小程序開發者提供免費資源扶持,全面助力開發者打造優秀小程序。 『 作為一個不斷發展的新興技術, Serverless 熱度的制高點已然到來。』 或許,Google Trends 所顯示的 3 年猛增 20 倍的 Serverless 搜索量,可以佐證 Serverless 在整個行業中的火爆程度。 showI...
摘要:年月,騰訊云宣布推出總價值超過億元的小程序云開發資源扶持計劃,對超過一百萬個小程序開發者提供免費資源扶持,全面助力開發者打造優秀小程序。 『 作為一個不斷發展的新興技術, Serverless 熱度的制高點已然到來。』 或許,Google Trends 所顯示的 3 年猛增 20 倍的 Serverless 搜索量,可以佐證 Serverless 在整個行業中的火爆程度。 showI...
閱讀 2784·2021-09-01 10:30
閱讀 1680·2019-08-30 15:52
閱讀 965·2019-08-29 18:40
閱讀 1116·2019-08-28 18:30
閱讀 2391·2019-08-23 17:19
閱讀 1321·2019-08-23 16:25
閱讀 2700·2019-08-23 16:18
閱讀 2977·2019-08-23 13:53