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