- 云原生安全:攻防實踐與體系構建
- 劉文懋 江國龍 浦明 阮博男 葉曉虎
- 800字
- 2021-11-04 18:12:26
2.5 Serverless
隨著云原生技術的不斷發展,應用的部署模式逐漸趨向于“業務邏輯實現與基礎設施分離”的設計原則,而Serverless作為一種新的云計算模式,較好地履行了上述設計原則。此外,從目前云原生技術的發展脈絡來看,Serverless可謂云原生技術發展的最終階段。
2016年8月,martinfowler網站上發表的Serverless[6]一文對Serverless做了詳細闡述。簡單來說,Serverless可在不考慮服務器的情況下構建并運行應用程序和服務,它使開發者避免了基礎設施管理,如集群配置、漏洞修補、系統維護等。Serverless并非字面理解的不需要服務器,只是服務器均交由第三方管理。
Serverless通常可分為兩種實現方式,即BaaS(Backend as a Service,后端即服務)和FaaS(Functions as a Service,函數即服務),其中FaaS是Serverless的主要實現方式。簡而言之,FaaS即開發者編寫一段代碼,并定義何時以及如何調用該函數,隨后該函數在云廠商提供的服務端運行,在此過程中開發者只需編寫并維護一段功能代碼。
此外,FaaS本質上是一種事件驅動并由消息觸發的服務,事件類型可能是一個HTTP請求,也可能是一次上傳或保存操作,事件源與函數的關系如圖2-4所示。

圖2-4 FaaS事件源觸發示意圖
FaaS的典型代表為AWS Lambda,為便于理解,下述為一個簡單的Lambda Python處理函數:
import json def lambda_handler(event, context): return { 'statusCode': 200, 'body': json.dumps('Hello from Lambda!') }
可以看出,以上代碼導入了JSON Python庫并定義了一個lambda_handler函數,該函數需接收兩個參數,分別為event和context,其中event參數包含此函數收到的事件源信息,參數類型通常是Python的dict類型,也可以是list、str、int、float等類型,而context參數包含此函數相關的運行時上下文信息。
圖2-5大致展示了傳統的服務端應用部署和FaaS應用部署,當應用程序部署在物理機、虛擬機、容器中時,它實際上是一個應用進程,并且由許多不同的函數構成,這些函數之間有著相互關聯的操作,一般需要長時間在操作系統中運行;而FaaS通過抽離虛擬機實例、操作系統和應用程序進程改變了傳統的部署模式,使開發者只需關注單個函數操作,剩余基礎設施管理均由第三方托管平臺提供,當有事件觸發時函數被執行,開發者為使用的資源付費。

圖2-5 傳統服務端應用與FaaS應用部署比較圖
- Extending Symfony2 Web Application Framework
- SASE原理、架構與實踐
- INSTANT Netcat Starter
- 計算機網絡安全技術(第6版·慕課版)
- 網絡空間安全:管理者讀物
- Preventing Digital Extortion
- API攻防:Web API安全指南
- 計算機網絡安全技術研究
- 網絡用戶行為的安全可信分析與控制
- VMware vCloud Security
- 構建新型網絡形態下的網絡空間安全體系
- 網絡空間安全:拒絕服務攻擊檢測與防御
- 信息系統安全等級化保護原理與實踐
- 黑客攻防與電腦安全從新手到高手(超值版)
- Securing Network Infrastructure