數人云:Serverless,這個新興的技術正在逐步深刻開發領域,它爲應用提供大量基礎設施,減小開發人員的部署問題,同時它還能解決敏捷開發中,交付具備預算約束的可伸縮應用的問題。數據庫
本文將概述Serverless的發展歷史、基本概念、應用、框架和優勢。編程
準備好如何回答這個問題吧,沒準幾十年後就得在飯桌上回答兒孫們,由於將來的開發人員可能永遠都不須要啓動實例,也不須要去碰大型服務器。後端
(回憶臉)虛擬機呀,就是一切開始的地方,一旦任何人在一臺獨特又普通的物理機上運行多個操做系統,就如同打開了一扇新世界的大門。api
又過了一段時間,如同亞馬遜這些老牌公司,開啓了雲計算的革命,在任何地方用一張信用卡便可用它們提供的幾近無限的虛擬機,啥?你娃說還不夠?後來又出現一頭鯨魚,那是容器的黃金時代,最開始的幾年是挺難的,由於人們得花一些時間才能真正理解這個概念,而後,而後就是Serverless了……安全
那些孩子們可不會聽這些老掉牙的嘮叨,他們都去玩虛擬現實遊戲去了,獨留你在那裏唉聲嘆氣不斷追憶。服務器
FaaS是理解Serverless的基礎概念,其定義爲——微信
代碼是在事件驅動的、短暫的和無狀態的環境中運行,徹底由第三方託管,本文會介紹一些AWS jargons及服務以方便閱讀和理解。網絡
Serverless只需集成外部服務以及開發它們之間的接口,無需擔心服務器方面的管理,這也正是用事件驅動架構的關鍵,這段代碼應該本身寫仍是交給第三方?某個部分可否被一個事件觸發?功能是否具備正確執行所需的上下關係等等,這些問題必需要通過大量的思考和迭代實踐。架構
本文中,收集了一些公司、產品、工具以及Serverless典型的框架。能夠看到這個行業隨着時間的推移呈指數增加。因此從下圖開始,將公司分爲幾個類別:app
Lambda是AWS Serverless 推出的一個事件驅動平臺,運行代碼以響應事件和自動管理代碼所需的計算資源。
IBM OpenWhisk是一個分佈式的、事件驅動的計算服務。OpenWhisk運行應用程序邏輯,以應對事件或直接經過HTTP調用網絡或移動應用。
Google Cloud Functions是一個輕量級的、基於事件的異步計算解決方案,容許開發人員構建小型專用功能響應雲事件,不須要管理服務器或運行時的環境。
Azure Functions是一項PaaS服務,用戶無需爲峯值用量作準備或者爲傳統的維護操做擔心。經過多種語言(例如 JavaScript、C# 和 F#)以及腳本選項(例如 Python、PHP、Bash、Batch 和 PowerShell)建立功能;一切都在基於 Web 的易用界面中實現。
Webtask是簡單、輕量級、安全的方式獨立運行的後端代碼,可有效減小後端需求。支持可擴展性,經過多租戶系統的自定義代碼,是安全可靠的解決方案。
LeverOS
一個開源雲平臺,簡化了複雜的基礎設施和微服務框架,功能強大,便於開發人員後期開發。
Funktion(Fabric8 / RedHat)
爲Kubernetes實現了基於事件的Lambda樣式編程模型。Funktion的一個子集被稱爲RedHat「fabric8.io」。
Fission.io
Kubernetes Serverless框架,專一於開發者的生產力的提升。
OpenLambda
OpenLambda是Apache Serverless項目,基於Linux容器。OpenLambda的目標之一是探索Serverless計算的新方法。通過嘗試發現OpenLambda還爲時過早,不得不作一些修改和調整工做。
Iron.io
Iron.io開發了一個框架,用於事件驅動的計算和運行Serverless應用,近期已經開源。專一於交付調用API實現負載均衡和消息隊列的靈活性,肯定在何處部署現有的內部安全流程做業處理。
Kubeless (By Bitnami)
Kubernetes原生的Serverless Framework。
Openwhisk (By IBM)
IBM OpenWhisk運行應用程序邏輯,以應對事件或直接經過HTTP調用網絡或移動應用。OpenWhisk是開源項目,管理(服務)版本稱爲IBM Bluemix。
Serverless Inc
Serverless框架,容許部署自動伸縮,pay-per-execution、事件驅動的功能,不受限於公有云、私有云、混合雲。Serverless Inc目前支持AWS Lambda,Apache OpenWhisk,微軟Azure,擴展以支持其餘雲提供商。
Stdlib
做爲FaaS庫StdLib提供了一種簡單的方法來建立、分發和發現Web服務。
SPARTA
SPARTA轉換一個二進制文件註冊lambda函數進入一組獨立可尋的AWS Lambda功能。此外,SPARTA微服務做者提供一個機會來知足其餘要求,好比在AWS執行自定義,額外的基礎設施需求,監控和報警信息。
Stackhut (nstack)
StackHut將代碼轉變成雲API。編寫業務邏輯,而無論理服務器邏輯,Python和JavaScript在雲中轉化爲可伸縮的API,方便任意集成。
Gestalt (Galactic Fog)
Gestalt是一組微服務框架,能夠幫助公司構建面向將來的雲原生應用。框架由三個主要的元數據層組成,負責跟蹤和管理全部IT資源,基礎架構層是一個可插入的容器和Lambda管理引擎,集成層是一套現成的微服務,旨在解決最多見的企業集成問題。
Effe
用來構建Serverless的開源架構,可運行在單個Lambda的功能上。
APEX
Apex能夠輕鬆地構建、部署和管理AWS Lambda功能。經過節點可以使用由AWS Lambda(如Golang)所不支持的語言,js shim注入到構建中,爲測試功能、回滾部署、查看度量、跟蹤日誌、鏈接到構建系統以及更多的功能提供了各類工做流相關工具。
Distribyte
Distribyte的目標是引入Serverless的優點,容許應用程序在計算調用之間無縫地存儲數據,並將數據添加到Mix Unlocks中,也能夠在現有的Serverless的範圍以外使用。
Multicolour
REST API生成器,目標是爲公司節省90%的成本和開發API的時間,鏈接功能很是強大,即便是Node.JS生態系統中最成熟的框架也沒法匹敵。
Deployd
經過提供知足複雜應用程序需求的重要功能,使構建API變得簡單。
Kong
可擴展的開源API層(API網關,或API中間件)。能夠在任何RESTful API上運行,經過插件擴展,這些插件提供了核心平臺以外的額外功能和服務。
TYK
一個快速、可擴展和開源API網關,提供了一個API管理平臺,有API網關、API分析和API管理儀表板。
API Umbrella
位於API以前的代理,能夠無縫地添加諸如API Key、速率限制和對任何API的分析等功能。
Fusio
開放源碼的API管理平臺,能夠幫助構建和管理REST API。提供了全部工具快速構建不一樣數據源的API,同時能夠自定義建立響應。
Kappa
命令行工具,可讓AWS Lambda更容易部署、更新和測試功能。開發Lambda功能有不少步驟,Kappa在試圖解決這個問題。
Zappa
能夠輕鬆地讓全部的Python WSGI應用在AWS Lambda + API網關上構建和部署,將其看做Python應用的「Serverless」Web託管。這意味着無限擴展、零宕機、零維護、以及當前部署成本的一小部分。
Zapier
Zapier的自定義代碼操做容許擴展Zapier的平臺,使用Web上最經常使用的廣泛的編程語言:Javascript作任何事情,運行代碼響應Zapier支持的任何觸發。
Stamplay
一個基於API的開發平臺,受權Web開發人員在記錄的時間內構建和發佈全功能且基於雲的Web應用。
FireBase
Firebase是一個移動平臺,能夠幫助快速開發高質量的應用,擴大用戶羣,提升收益,它由互補的功能組成,方便根據須要進行混合匹配。
FaunaDB
一個分佈式、多租戶、多模型的數據庫系統,具備強大的查詢語言。
固然,還有 Amazon DynamoDB,Google Cloud Spanner,Microsoft Azure’s CosmosDB 和其它Serverless數據庫。
IOpipe
高保真的度量和監控服務,容許在Amazon Lambda功能中,更好的查看的平常維護和開發Serverless應用程序。
Dashbird
Dashbird用來查看AWS Lambda的功能。能夠清楚地看到服務器棧上發生的事件。該平臺提供自動化的監控、日誌和調用數據等服務。
Snyk
在Serverless環境中,Snyk能夠幫助理解和保護依賴項,從查詢、修復和監控節點中已知漏洞的工具開始。
在將Serverless應用到生產環境以前,不能照搬方法,還需根據自身的實際狀況作一些改變,同時還須要一個團隊,願意去面對快速發展的事物,用一些時間去學習鑽研和實踐測試。無論怎樣,已知的一些大公司如:Netflix、Localytics、VidRoll和Square Enix等公司都已應用了Serverless,這是將來的發展趨勢,正逐步進入到各個行業領域當中。
原文做者:Jonatas Baldin、Tal Kimhi
原文連接:https://cheesecakelabs.com/bl...
歡迎加小數微信:xiaoshu062討論更多serverless內容!