【譯】Serverless架構 - 5

原文:html

https://martinfowler.com/arti...前端

API網關

clipboard.png

咱們以前提到的FaaS部分是一個「API網關」。API網關是一個將路由/端點定義在配置中的HTTP服務器,而且每個路由都與FaaS功能關聯。當一個API網關接到請求時他負責找到匹配的路由配置並調用對應的FaaS功能。一般API網管容許將http請求參數映射成FaaS函數功能的入參。API網關將FaaS函數的結果返回到http response,並將其返還給原始調用者。git

Amazon Web Services有它本身的API網關,其餘的供應商也提供相似的能力。github

在路由請求之上API網關通常也會提供驗權,輸入校驗,響應碼映射等功能。你的第六感可能會想這是否是個好主意,若是是的話先等等 - 咱們會在後面考慮這些。web

一個API網關+FaaS的場景就是用Serverless的方式建立一個http前端的爲服務,其具備來自FaaS函數功能的擴展,管理和其餘優勢。服務器

目前API網關的工具不太成熟,因此使用API網關定義的應用是勇敢者的遊戲。微信

工具

上面關於API網關工具不成熟的評論實際適用於全部Serverless FaaS。可是也有例外 - 一個例子是Auth0 Webtask (https://webtask.io/) 在其工具中將Developer UX放在首位。 Tomasz Janczuk (https://twitter.com/tjanczuk) 在最近Serverless的行業會議中作了一個很好的展現。併發

開源

Serverless FaaS應用的一個主要好處是提供一個透明的生產運行時環境,因此如今開源與這個世界沒什麼關聯,例如Docker和容器。將來咱們或許能夠看到一個主流的的FaaS/API網關平臺實現能夠運行在一個開發人員的工做站上。 IBM的OpenWhisk(https://developer.ibm.com/ope...)是個實現的例子,看看它或另外一個實現是否能接受是頗有趣的。框架

除了運行時實現,已經有一些開源工具和框架來幫助定義,部署和在運行時進行協助。例如Serverless框架(https://github.com/serverless...)讓API網關+Lambda的實現更容易,它比AWS上最初提供的更好。less

另外一個例子是Apex(https://github.com/apex/apex) - 一個‘輕鬆構建,部署,管理AWS Lambda功能’的項目。一個有趣的地方是他容許你開發一些Amazon不支持Lambda功能的語言,例如Go。

什麼不是Serverless?

到目前爲止我將Serverless定義成一個主意的組合 - 「Backend as a Servie」和「Function as a Service」。併發掘了一下第二個的能力。

在咱們開始進入很是重要的優勢和缺點以前,我想花點時間在定義上,或至少定義下什麼不是Serverless。我看到有些人(包括前段時間的我)對這些事很困惑,因此我想值得花點時間討論下。


本文來自微信公衆號「麥芽麪包」,id「darkjune_think」轉載請註明。長按圖片識別二維碼關注。

相關文章
相關標籤/搜索