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