數人云|史上最全,35個平臺、框架、數據庫細說什麼是Serverless

數人云:Serverless,這個新興的技術正在逐步深刻開發領域,它爲應用提供大量基礎設施,減小開發人員的部署問題,同時它還能解決敏捷開發中,交付具備預算約束的可伸縮應用的問題。數據庫

本文將概述Serverless的發展歷史、基本概念、應用、框架和優勢。編程

爺爺,啥是虛擬機?

準備好如何回答這個問題吧,沒準幾十年後就得在飯桌上回答兒孫們,由於將來的開發人員可能永遠都不須要啓動實例,也不須要去碰大型服務器。後端

(回憶臉)虛擬機呀,就是一切開始的地方,一旦任何人在一臺獨特又普通的物理機上運行多個操做系統,就如同打開了一扇新世界的大門。api

又過了一段時間,如同亞馬遜這些老牌公司,開啓了雲計算的革命,在任何地方用一張信用卡便可用它們提供的幾近無限的虛擬機,啥?你娃說還不夠?後來又出現一頭鯨魚,那是容器的黃金時代,最開始的幾年是挺難的,由於人們得花一些時間才能真正理解這個概念,而後,而後就是Serverless了……安全

那些孩子們可不會聽這些老掉牙的嘮叨,他們都去玩虛擬現實遊戲去了,獨留你在那裏唉聲嘆氣不斷追憶。服務器

功能即服務

FaaS是理解Serverless的基礎概念,其定義爲——微信

代碼是在事件驅動的、短暫的和無狀態的環境中運行,徹底由第三方託管,本文會介紹一些AWS jargons及服務以方便閱讀和理解。網絡

  • 代碼:雖然它仍是那個代碼,但仍有細微的差異,必須將全部須要的東西打包,如:External Libraries、ZIP文件,另外功能應該有一個被稱之爲處理程序的執行入口點。
  • 事件驅動:在FaaS中,每件事都會觸發某種行爲,舉例說明,調整上傳圖片的大小,不須要寫代碼對它進行接收、存儲、從新調整大小再次存儲,能夠觸發一些代碼,每次將新文件發到S3存儲庫時,都會對圖像進行調整。還有各類事件:數據庫中插入行,觀察日誌流、在隊列中獲取新消息、甚至HTTP請求等。
  • 短暫的環境:FaaS在每次調用功能時,就會構建一個全新的環境,調用處理完成後即銷燬,雖然有點悲劇,但並不是沒有道理:第一次運行非活躍的功能是有延遲的被稱之爲冷啓動,若過多調用功能,環境可能會進行多個執行,消除冷啓動後,不會產生這個問題,另外還有成本:只按執行時間付費。
  • 無狀態:在功能調用之間沒有任何狀態,不能在本地或內存中保存信息,處理請求的全部上下關係必須保證每次執行時可用。
  • 徹底由第三方託管:無需管理服務器,截止目前,大多數Serverless廠商都提供了完整的維護服務,雖然無需搭建基礎設施,但弊端是被廠商控制和鎖定。

Serverless只需集成外部服務以及開發它們之間的接口,無需擔心服務器方面的管理,這也正是用事件驅動架構的關鍵,這段代碼應該本身寫仍是交給第三方?某個部分可否被一個事件觸發?功能是否具備正確執行所需的上下關係等等,這些問題必需要通過大量的思考和迭代實踐。架構

Serverless平臺

本文中,收集了一些公司、產品、工具以及Serverless典型的框架。能夠看到這個行業隨着時間的推移呈指數增加。因此從下圖開始,將公司分爲幾個類別:app

AWS Lambda

Lambda是AWS Serverless 推出的一個事件驅動平臺,運行代碼以響應事件和自動管理代碼所需的計算資源。

IBM Bluemix OpenWhisk

IBM OpenWhisk是一個分佈式的、事件驅動的計算服務。OpenWhisk運行應用程序邏輯,以應對事件或直接經過HTTP調用網絡或移動應用。

Google Cloud Functions

Google Cloud Functions是一個輕量級的、基於事件的異步計算解決方案,容許開發人員構建小型專用功能響應雲事件,不須要管理服務器或運行時的環境。

Azure Functions

Azure Functions是一項PaaS服務,用戶無需爲峯值用量作準備或者爲傳統的維護操做擔心。經過多種語言(例如 JavaScript、C# 和 F#)以及腳本選項(例如 Python、PHP、Bash、Batch 和 PowerShell)建立功能;一切都在基於 Web 的易用界面中實現。

Webtask

Webtask是簡單、輕量級、安全的方式獨立運行的後端代碼,可有效減小後端需求。支持可擴展性,經過多租戶系統的自定義代碼,是安全可靠的解決方案。

Serverless開源框架

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框架/庫

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的範圍以外使用。

Serverless API 框架

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應用。

Serverless 數據庫

FireBase

Firebase是一個移動平臺,能夠幫助快速開發高質量的應用,擴大用戶羣,提升收益,它由互補的功能組成,方便根據須要進行混合匹配。

FaunaDB

一個分佈式、多租戶、多模型的數據庫系統,具備強大的查詢語言。

固然,還有 Amazon DynamoDB,Google Cloud Spanner,Microsoft Azure’s CosmosDB 和其它Serverless數據庫。

Serverless 監控工具

IOpipe

高保真的度量和監控服務,容許在Amazon Lambda功能中,更好的查看的平常維護和開發Serverless應用程序。

Dashbird

Dashbird用來查看AWS Lambda的功能。能夠清楚地看到服務器棧上發生的事件。該平臺提供自動化的監控、日誌和調用數據等服務。

Serverless 安全工具

Snyk

在Serverless環境中,Snyk能夠幫助理解和保護依賴項,從查詢、修復和監控節點中已知漏洞的工具開始。

Serverless 的優勢

  • 成本:目前Serverless最大的優點是能夠下降成本,例如,在功能運行時,只須要支付從AWS中傳輸的數據,每100萬次請求大約須要0.20美圓,由於它是按需付費的,此外,服務器維護管理的費用也被下降到接近0的水平。
  • 交付時間:在集成和低成本的支撐下,交付到市場的速度快了許多倍。
  • 無限的規模:Serverless在任什麼時候間均可以處理任何數量的請求,自動伸縮內置到架構中,無需計劃和設置,不過必定要注意的是DDOS攻擊。
  • 打包和部署:再也不有分層的Dockerfile和入口,Lambda只須要一個包含代碼以及庫的ZIP文件便可,部署也是如此。

總結

在將Serverless應用到生產環境以前,不能照搬方法,還需根據自身的實際狀況作一些改變,同時還須要一個團隊,願意去面對快速發展的事物,用一些時間去學習鑽研和實踐測試。無論怎樣,已知的一些大公司如:Netflix、Localytics、VidRoll和Square Enix等公司都已應用了Serverless,這是將來的發展趨勢,正逐步進入到各個行業領域當中。

原文做者:Jonatas Baldin、Tal Kimhi
原文連接:https://cheesecakelabs.com/bl...

歡迎加小數微信:xiaoshu062討論更多serverless內容!

相關文章
相關標籤/搜索