本文介紹了在 AWS 無服務(wù)器架構(gòu)上實(shí)現(xiàn) RESTful API 的過程。它詳細(xì)概述了架構(gòu)、數(shù)據(jù)流和可使用的 AWS 服務(wù)。本文還介紹了無服務(wù)器架構(gòu)與傳統(tǒng)方法相比的優(yōu)勢(shì)。
什么是無服務(wù)器架構(gòu)?
無服務(wù)器架構(gòu),又稱無服務(wù)器計(jì)算或功能即服務(wù),是一種軟件設(shè)計(jì)方法,允許開發(fā)人員在不管理底層基礎(chǔ)設(shè)施的情況下構(gòu)建和運(yùn)行應(yīng)用程序。云服務(wù)提供商負(fù)責(zé)管理和擴(kuò)展云基礎(chǔ)設(shè)施,包括配置服務(wù)器以運(yùn)行應(yīng)用程序、數(shù)據(jù)庫和存儲(chǔ)。
無服務(wù)器架構(gòu)的重要性
- 企業(yè)只需為其使用的計(jì)算資源(如請(qǐng)求數(shù)量、執(zhí)行時(shí)間和消耗的資源)付費(fèi),因此沒有硬件或軟件的前期成本。這樣就無需為閑置的基礎(chǔ)設(shè)施付費(fèi),從而大大節(jié)省了成本。
- 無服務(wù)器架構(gòu)可根據(jù)工作負(fù)載自動(dòng)擴(kuò)大或縮小規(guī)模。這可確保應(yīng)用程序能夠處理不同水平的流量。
- 每個(gè)功能都可以獨(dú)立擴(kuò)展,確保根據(jù)需求有效分配資源。
- 無服務(wù)器架構(gòu)非常適合事件驅(qū)動(dòng)型應(yīng)用,即通過 HTTP 請(qǐng)求、數(shù)據(jù)庫更改或消息隊(duì)列更新等特定事件觸發(fā)功能。
用于實(shí)施的 AWS 服務(wù)
以下 AWS 服務(wù)可用于 REST API 的實(shí)施。下面的列表列出了 AWS 服務(wù)及其在應(yīng)用程序接口實(shí)施中的用途。
路由 53
Route53 可用于域名注冊(cè)、DNS 路由、流量、流量管理、健康檢查和監(jiān)控。
API 網(wǎng)關(guān)
使用 API Gateway 可在任何規(guī)模上創(chuàng)建、發(fā)布、維護(hù)、監(jiān)控和保護(hù) REST API。
可在 API 網(wǎng)關(guān)下創(chuàng)建 HTTP 方法(GET、POST、PUT、DELETE、PATCH、OPTION)。這些方法可以集成到相應(yīng)的前端控制器 Lambda 函數(shù)中。
WAF
AWS WAF(網(wǎng)絡(luò)應(yīng)用程序防火墻)可幫助您防范常見的網(wǎng)絡(luò)攻擊和僵尸程序,這些攻擊和程序會(huì)影響可用性、破壞安全性或消耗過多資源。我們可以將 WAF 與 API 網(wǎng)關(guān)關(guān)聯(lián)起來,以過濾惡意請(qǐng)求。
通過 WAF,我們可以配置以下內(nèi)容:
網(wǎng)絡(luò) ACL - 確定允許流量的規(guī)則和規(guī)則組
自定義規(guī)則 - IP 設(shè)置匹配條件、字符串和 regex 匹配條件、地理匹配條件、基于速率的規(guī)則
僵尸控制
Lambda
用于授權(quán)的 Lambda 函數(shù)
Lambda 授權(quán)器將調(diào)用者的身份作為輸入,并將 IAM 策略作為輸出返回。使用 Lambda 授權(quán)器實(shí)現(xiàn)自定義身份驗(yàn)證和授權(quán)。
經(jīng)過身份驗(yàn)證和授權(quán)的 Lambda 會(huì)向 API Gateway 返回兩種策略:
允許
拒絕
用于業(yè)務(wù)邏輯的 Lambda 函數(shù)
用于實(shí)現(xiàn)業(yè)務(wù)邏輯、調(diào)用其他 lambda 函數(shù)、下游服務(wù)和數(shù)據(jù)庫的 Lambda 函數(shù)。
其他 AWS 服務(wù)
CloudWatch - 使用 AWS CloudWatch 監(jiān)控應(yīng)用程序,并存儲(chǔ)日志、儀表板和警報(bào),這些也可用于創(chuàng)建報(bào)告和主動(dòng)監(jiān)控。
SQS 和 SNS - 使用 AWS SQS 存儲(chǔ)異步消息,使用 SNS 向 lambda 函數(shù)推送通知。
Dynamo DB 或 RDS - 應(yīng)用程序數(shù)據(jù)庫
IAM - 身份和訪問管理服務(wù),用于定義角色和 AWS 資源訪問權(quán)限
VPC、子網(wǎng)、安全組 - VPC 在安全網(wǎng)絡(luò)中隔離 AWS 資源,子網(wǎng)劃分 VPC 的組織,安全組使用防火墻規(guī)則控制流量。
架構(gòu)和數(shù)據(jù)流
下面的架構(gòu)圖描述了所使用的 AWS 服務(wù)集、數(shù)據(jù)流以及與其他服務(wù)的集成。
在高層,客戶端向亞馬遜 API 網(wǎng)關(guān)發(fā)送 HTTP 請(qǐng)求,從而觸發(fā) AWS Lambda 函數(shù)。Lambda 函數(shù)處理請(qǐng)求,必要時(shí)與其他 AWS 服務(wù)交互(如用于數(shù)據(jù)存儲(chǔ)的 DynamoDB),然后將響應(yīng)返回給 API Gateway,API Gateway 再將響應(yīng)發(fā)送給客戶端。
數(shù)據(jù)流步驟
- 用戶向帶有有效授權(quán)標(biāo)頭(如 JWT 標(biāo)記、API 密鑰等)的 API 發(fā)出 HTTP 請(qǐng)求。
- 路由 53 會(huì)將請(qǐng)求轉(zhuǎn)發(fā)到 API 網(wǎng)關(guān),API 網(wǎng)關(guān)會(huì)被網(wǎng)絡(luò)應(yīng)用程序防火墻攔截。
- 網(wǎng)絡(luò)應(yīng)用程序防火墻配置了不同的規(guī)則,以保護(hù)應(yīng)用程序免受網(wǎng)絡(luò)攻擊。如果防火墻檢測(cè)到任何此類惡意請(qǐng)求,它會(huì)立即阻止該請(qǐng)求,否則就會(huì)將其轉(zhuǎn)發(fā)到 API 網(wǎng)關(guān)。
- 與 API Gateway 一起配置的 Lambda Authorizer 會(huì)攔截請(qǐng)求,并對(duì)用戶請(qǐng)求進(jìn)行驗(yàn)證和授權(quán)。如果用戶被授權(quán)訪問底層資源,請(qǐng)求將被轉(zhuǎn)發(fā)到前端控制器 lambda。
- 前端控制器 lambda 會(huì)將請(qǐng)求委托給相應(yīng)的服務(wù) lambda 函數(shù)。
- 根據(jù)業(yè)務(wù)邏輯,服務(wù) lambda 會(huì)處理請(qǐng)求并向客戶端返回相應(yīng)的響應(yīng)。
- 在處理請(qǐng)求時(shí),服務(wù) lambda 函數(shù)可以調(diào)用下游 REST API 或數(shù)據(jù)庫。服務(wù) lambda 函數(shù)還可以監(jiān)聽 SNS 隊(duì)列或訂閱 SNS。
- 身份和訪問管理(IAM)服務(wù)用于為資源定義角色,并為這些角色提供訪問權(quán)限。
- 所有資源都會(huì)將應(yīng)用程序日志推送到 CloudWatch,用于監(jiān)控和故障排除。
典型用例
- 無服務(wù)器架構(gòu)可用于需要實(shí)時(shí)處理數(shù)據(jù)的事件驅(qū)動(dòng)型應(yīng)用,如數(shù)據(jù)流或通知處理。
- 微服務(wù)可以在無服務(wù)器架構(gòu)上獨(dú)立、隔離地實(shí)施和部署,以獲得更好的可擴(kuò)展性。
- 處理預(yù)定任務(wù)的應(yīng)用程序可以在無服務(wù)器架構(gòu)上實(shí)施和部署,并可根據(jù)特定時(shí)間觸發(fā)。
- 成本是關(guān)鍵因素的所有用例都可以采用無服務(wù)器架構(gòu)。
基礎(chǔ)設(shè)施調(diào)配和部署
在企業(yè)中,除了用于開發(fā)和測(cè)試目的的生產(chǎn)環(huán)境外,還有多個(gè)可用環(huán)境。在不同的環(huán)境中創(chuàng)建同一套資源并手動(dòng)跟蹤配置更改是一項(xiàng)具有挑戰(zhàn)性的任務(wù),而且可能會(huì)引入錯(cuò)誤。為了解決這個(gè)問題,可以使用 Terraform(基礎(chǔ)設(shè)施即代碼)。Terraform 有助于將資源從一個(gè)環(huán)境復(fù)制到另一個(gè)環(huán)境。此外,它還能跟蹤基礎(chǔ)設(shè)施的狀態(tài)。 任何 CI/CD 工具(如 Jenkins 或 GitLab)都可以使用 Terraform 自動(dòng)進(jìn)行部署。
結(jié)論
總之,利用 AWS 無服務(wù)器架構(gòu)開發(fā) REST API 在可擴(kuò)展性、成本效益和易管理性方面具有多重優(yōu)勢(shì)。通過采用無服務(wù)器方法,開發(fā)人員可以更加專注于構(gòu)建強(qiáng)大的 API,而無需管理服務(wù)器的開銷。AWS Lambda 的事件驅(qū)動(dòng)模型可實(shí)現(xiàn)無縫擴(kuò)展,確保您的 API 能夠高效處理不同的工作負(fù)載。
今天先到這兒,希望對(duì)云原生,技術(shù)領(lǐng)導(dǎo)力, 企業(yè)管理,系統(tǒng)架構(gòu)設(shè)計(jì)與評(píng)估,團(tuán)隊(duì)管理, 項(xiàng)目管理, 產(chǎn)品管理,信息安全,團(tuán)隊(duì)建設(shè) 有參考作用 , 您可能感興趣的文章:
構(gòu)建創(chuàng)業(yè)公司突擊小團(tuán)隊(duì)
國際化環(huán)境下系統(tǒng)架構(gòu)演化
微服務(wù)架構(gòu)設(shè)計(jì)
視頻直播平臺(tái)的系統(tǒng)架構(gòu)演化
微服務(wù)與Docker介紹
Docker與CI持續(xù)集成/CD
互聯(lián)網(wǎng)電商購物車架構(gòu)演變案例
互聯(lián)網(wǎng)業(yè)務(wù)場(chǎng)景下消息隊(duì)列架構(gòu)
互聯(lián)網(wǎng)高效研發(fā)團(tuán)隊(duì)管理演進(jìn)之一
消息系統(tǒng)架構(gòu)設(shè)計(jì)演進(jìn)
互聯(lián)網(wǎng)電商搜索架構(gòu)演化之一
企業(yè)信息化與軟件工程的迷思
企業(yè)項(xiàng)目化管理介紹
軟件項(xiàng)目成功之要素
人際溝通風(fēng)格介紹一
精益IT組織與分享式領(lǐng)導(dǎo)
學(xué)習(xí)型組織與企業(yè)
企業(yè)創(chuàng)新文化與等級(jí)觀念
組織目標(biāo)與個(gè)人目標(biāo)
初創(chuàng)公司人才招聘與管理
人才公司環(huán)境與企業(yè)文化
企業(yè)文化、團(tuán)隊(duì)文化與知識(shí)共享
高效能的團(tuán)隊(duì)建設(shè)
項(xiàng)目管理溝通計(jì)劃
構(gòu)建高效的研發(fā)與自動(dòng)化運(yùn)維
某大型電商云平臺(tái)實(shí)踐
互聯(lián)網(wǎng)數(shù)據(jù)庫架構(gòu)設(shè)計(jì)思路
IT基礎(chǔ)架構(gòu)規(guī)劃方案一(網(wǎng)絡(luò)系統(tǒng)規(guī)劃)
餐飲行業(yè)解決方案之客戶分析流程
餐飲行業(yè)解決方案之采購戰(zhàn)略制定與實(shí)施流程
餐飲行業(yè)解決方案之業(yè)務(wù)設(shè)計(jì)流程
供應(yīng)鏈需求調(diào)研CheckList
企業(yè)應(yīng)用之性能實(shí)時(shí)度量系統(tǒng)演變
如有想了解更多軟件設(shè)計(jì)與架構(gòu), 系統(tǒng)IT,企業(yè)信息化, 團(tuán)隊(duì)管理 資訊,請(qǐng)關(guān)注我的微信訂閱號(hào):
作者:Petter Liu
出處:http://www.rzrgm.cn/wintersun/
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。
該文章也同時(shí)發(fā)布在我的獨(dú)立博客中-Petter Liu Blog。



浙公網(wǎng)安備 33010602011771號(hào)