關於Serverless架構及平臺選擇,你知道多少?

image

數人云近來給你們分享了不少DevOps相關文章,Serverless架構是最近兩年比較火的一個話題,它能夠幫助DevOps實踐落地,更加靈活,提升工做效率、交付速度等等。web

今天數人云就跟你們一塊兒看看Serverless架構的前世此生以及Amazon Web Services、Microsoft Azure、Google Cloud Platform、IBM Bluemix/OpenWhisk四大平臺和工具。數據庫

前言

Serverless架構在IT行業蓄勢待發,並不是沒有道理。儘管這是一個相對較新的技術,但已引發了普遍的關注,許多新技術專家指出,Serverless架構具備縮短交付時間,改善操做和安全實踐等功能,以及創造出一種革命性的付費模式——按資源消耗付費。後端

你或許已經瞭解了Serverless架構,但具體生態系統是什麼樣的,有哪些選擇?本文會給出指南,將從功能即服務(FaaS)Serverless架構的關鍵點出發,擴展到公有云和私有云的Serverless架構構特性,同時回顧構建Serverless架構的框架和工做堆棧,最後指出Serverless架構在整個雲計算裏所處的位置。瀏覽器

一切始於FaaS

聽說Serverless架構出現已經好久了,但實際始於FaaS的到來。2014年11月AWS預發佈AWS Lambda,並將FaaS劃入雲計算版圖(AWS 在2015年5月發佈Lambda通用版)。緩存

在FaaS以前,藉助GAE,Heroku,AWS Elastic,Beanstalk等是能夠運行應用程序而不去直接管理服務的。但這些計算服務沒有直接提供面向功能的執行模型或針對每次調用的計費能力,做爲代替,他們一般面向服務器或面向應用提供了彈性擴展能力。安全

繼AWS以後,其餘大型公共雲提供商開始着手創建本身的FaaS平臺。Azure Functions第一版在2016年3月發佈,隨後在11月正式發佈。Google Functions於2016年發佈預覽版以後在2017年3月發佈了beta版,但正式版的發佈時間還是未知的。像這樣的FaaS平臺還有不少。服務器

只有FaaS還不夠

FaaS做爲部署和執行平臺,提供了一種功能來執行業務邏輯的方法,自己並非特別強大,而Serverless架構的價值在於,在做爲集成功能時候,可與其餘服務一塊兒架構完整的框架。網絡

不少人認爲FaaS和Serverless是同樣的,但這兩種概念有重要的區別。架構

  • FaaS是一個計算服務,主要功能有部署、可伸縮性、執行和結算。app

  • Serverless架構屬於平臺即服務(PaaS),針對事件驅動,短暫性的工做負載。它結合了FaaS與其餘雲服務來構建複雜的系統,同時提供可伸縮性、可操做性、綜合安全性以及按使用率來計費。

Serverless架構平臺選擇

目前最有效構建Serverless架構方法是在衆多Serverless架構平臺中選擇其一,並充分利用它全部的功能,如下將列舉幾個Serverless架構平臺:

Amazon Web Services

image

亞馬遜推出了第一個FaaS的雲服務平臺——AWS Lambda。

Serverless架構平臺在很大程度上取決於能夠利用的數量和質量的功能。在AWS,功能能夠由愈來愈多的其餘服務觸發。這些功能包括S3 buckets,來自API網關HTTP請求。DynamoDB表現中的變化,消息到達SNS的話題和Kinesis streams。最近,AWS把重點放在FaaS上並集成了許多新的服務。

可使用AWS Lambda做爲物聯網後端,Alexa的新技能,對話機器人使用Lex和workflows with step functions功能。FaaS計算方法是被推到其餘執行環境裏,如亞馬遜的內容分發網絡,甚至到物聯網設備AWS Greengrass,使用功能來加強CloudFront的行爲。

與其餘分佈式系統相比,構建Serverless架構須要優秀IT運營的支持。AWS Lambda無縫集成CloudWatch、監控和日誌記錄服務。除了提供開箱即用的日誌手機和指標集合,AWS CloudWatch容許使用Lambda函數自定義操做功能。

功能能夠被觸發CloudWatch事件(能夠支持調度函數執行)CloudWatch日誌流,能夠經過社交網絡服務對應監測指標警報。

最近,X-Ray,分佈式跟蹤服務,開始支持AWS Lambda(預發佈版),這樣就能夠監視和跟蹤複雜的數據流。AWS IAM,身份和訪問控制服務,提供了一個集成和細粒度安全模型功能執行。

Microsoft Azure

image

AWS支持Serverless架構一段時間以後,Azure做爲競品正穩步發展中。Azure的功能能夠由AzureStorage blob通知HTTP(休息或webhook)請求、Azure Event Hubs事件、信息存儲隊列以及服務總線隊列或主題,或基於一個時間表進行觸發。

Azure有更加結構化配置模型的功能。它容許從內部集成函數自己,輸入和輸出綁定附加功能,極大地簡化或徹底移除所需的代碼與其餘服務。AWS的狀況與此相反,必須用SDK進行任何形式的整合。一樣,Azure也支持外部集成。例如,可經過Twillio發送短信或電子郵件使用SendGrid。

Azure的Serverless架構平臺在運行上比AWS緩慢。只有在應用程序服務計劃時纔可監視度量,這就須要再虛擬機裏運行一個函數,並管理雲租戶。這是真的Serverless架構Serverless架構嗎?

若是函數執行Provider-managed計算,沒有監控信息是可用的。相反,Azure提供了一組指南。它定義了函數隱式安全策略,基於輸入和輸出綁定,而不是像AWS同樣,顯示配置使用一個專用的服務。

Google Cloud Platform

image

谷歌還沒有做出谷歌雲平臺(GCP)FaaS,但它提供了一些相似於AWS和Azure的核心集成功能。能夠經過Cloud Storage觸發谷歌雲儲存功能,HTTP請求,Cloud Pub/ Sub事件,和一些Firebase events(Firebase是谷歌的mobile-back-end-as-a-service平臺)。

GCP在谷歌的Stackdriver監控服務中提供完整操做。日誌發出谷歌函數會自動存儲,在這種狀況下Stackdriver。日誌記錄和記錄的指標Stackdriver監控和質量提供了Stackdriver調試器,能夠用它來研究函數的代碼行爲。這在排除故障時很是有用。GCP的安全模型與AWS有所不一樣,然而,它尚未提供支持細粒度的安全策略。

IBM Bluemix/OpenWhisk

image

IBM Bluemix/Apache OpenWhisk都屬於PaaS平臺,相似於三大公有云雲提供商的開源FaaS/serverless。OpenWhisk是一個開源項目,具備完整的可視性FaaS功能,可擴展也可定製。運行Bluemix時,能夠在本地基礎設施或者是雲上實施Open Whisk,或做爲一個徹底管理平臺。

函數(在OpenWhisk稱爲「行動」)能夠經過HTTP請求,觸發消息Apache Kafka或Message Hub,改變Cloudant noSQL數據庫表、預知事或幾乎任何類型的外部系統,提供了一個集成建立。

從IT運營的角度來看,OpenWhisk 主要關注與函數相關的活動執行的可視化,同時也容許命令基於藉口的輪詢活動日誌。惋惜的是,指標、日誌手機和存儲還沒有公佈,安全模型不是很好定義。開發人員可能須要再沒有大量平臺支持的狀況下作管理。

Other FaaS platform choices

許多其餘產品和項目都想在Serverless架構中佔有一席之地。有些只提供FaaS與HTTP訪問(可選功能),而其餘人提供一些服務,好比消息傳遞或存儲。最開始是BaaS廠商爲有本身的服務器產品改名。幾個值得注意的點包括:

  • Iron.io是最完整的的平臺之一。它提供了一個稱爲IronWorker的FaaS,以及分佈式隊列服務(IronMQ)和緩存服務(IronCache)。

  • PubNub容許任意代,稱爲塊,在實時消息流中執行,它負責管理的可伸縮性計算堆棧。

  • Webtask.io,移動BaaS平臺,能夠運行使用任意代碼。封裝成「webtasks」和建立鬆弛機器人提供了良好的支持。

  • Hook.io,一款類似的產品,提供本身的鍵值數據存儲,以及集成與許多雲存儲服務。

你還會發現許多開源項目,提供了FaaS容器調度器。這些包括Funktion,Fission,Kubeless,Funcatron,FaaS等。

框架和工具

雖然無Serverless架構平臺聽起來不錯,但並無太多實踐經驗。這就是爲何它須要建立框架和工具。事實上,Serverless架構正在經歷爆發時期,新產品和功能紛紛出現,有不少可能性待發掘。

Serverless框架(以前的JAWS),與全部主要平臺提供者提供的集成,是當今最受歡迎的。其餘的能夠考慮包括Chalice(Python,AWS),Zappa (Python,AWS),ClaudiaJS (Node,AWS),Dawson (Node,AWS),Shep (Node,AWS),Sparta (Go,AWS),and Lambada Framework (Java,AWS)。

除了框架,能夠找到許多工具能夠構建和部署功能或Serverless架構。例如,可使用HashiCorp Terraform選擇本身的基礎設施供應商。,(如AWS CloudFormation)。其餘受歡迎的工具包括Apex, Gordon和Kappa。

適合的雲計算環境

許多技術和產品提供了PaaS和BaaS能力以前,FaaS或Serverless架構開始流行起來。有不少SaaS產品提供任何可能消耗做爲終端用戶的功能或第三方產品,能夠集成到一個應用程序或一個系統。

這些類別如今仍然相關,即便FaaS和Serverless架構進入雲計算環境。回顧一下:

  • FaaS是一個充分控制計算資源抽象服務,包括執行運行過程的代碼。

  • Serverless架構是結合了FaaS的PaaS平臺,計算與託管其餘雲服務,建立可擴展的架構,具備成本效益的操做。

  • BaaS提供後端瀏覽器或移動應用的能力。它能夠交付Serverless架構,以及一個container-as-a-service(CaaS),「基礎架構即服務」(IaaS),或其餘技術棧。

  • SaaS只是意味着任何軟件系統而不須要提供本身的基礎設施上運行它。SaaS系統能夠創建在任何技術棧上;重要的是用戶知道如何使用它。

毫無疑問,Serverless架構將這個詞用於描述全部其餘服務,可能混淆了許多人。可是不要緊,企業採用Serverless架構,業務確定會受益,並增長業務敏捷性。期待Serverless架構在IT行業經歷更大的創新。

原文連接:An essential guide to the serverless ecosystem | TechBeacon

原文做者:Rafal Gancarz

相關文章
相關標籤/搜索