在AWS無伺服器架構上實施應用程式介面

PetterLiu發表於2024-07-18

本文介紹了在 AWS 無伺服器架構上實現 RESTful API 的過程。它詳細概述了架構、資料流和可使用的 AWS 服務。本文還介紹了無伺服器架構與傳統方法相比的優勢。

什麼是無伺服器架構?
無伺服器架構,又稱無伺服器計算或功能即服務,是一種軟體設計方法,允許開發人員在不管理底層基礎設施的情況下構建和執行應用程式。雲服務提供商負責管理和擴充套件雲基礎設施,包括配置伺服器以執行應用程式、資料庫和儲存。

無伺服器架構的重要性

  1. 企業只需為其使用的計算資源(如請求數量、執行時間和消耗的資源)付費,因此沒有硬體或軟體的前期成本。這樣就無需為閒置的基礎設施付費,從而大大節省了成本。
  2. 無伺服器架構可根據工作負載自動擴大或縮小規模。這可確保應用程式能夠處理不同水平的流量。
  3. 每個功能都可以獨立擴充套件,確保根據需求有效分配資源。
  4. 無伺服器架構非常適合事件驅動型應用,即透過 HTTP 請求、資料庫更改或訊息佇列更新等特定事件觸發功能。

用於實施的 AWS 服務


以下 AWS 服務可用於 REST API 的實施。下面的列表列出了 AWS 服務及其在應用程式介面實施中的用途。

路由 53
Route53 可用於域名註冊、DNS 路由、流量、流量管理、健康檢查和監控。

API 閘道器
使用 API Gateway 可在任何規模上建立、釋出、維護、監控和保護 REST API。

可在 API 閘道器下建立 HTTP 方法(GET、POST、PUT、DELETE、PATCH、OPTION)。這些方法可以整合到相應的前端控制器 Lambda 函式中。

image

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 再將響應傳送給客戶端。

image

資料流步驟

  1. 使用者向帶有有效授權標頭(如 JWT 標記、API 金鑰等)的 API 發出 HTTP 請求。
  2. 路由 53 會將請求轉發到 API 閘道器,API 閘道器會被網路應用程式防火牆攔截。
  3. 網路應用程式防火牆配置了不同的規則,以保護應用程式免受網路攻擊。如果防火牆檢測到任何此類惡意請求,它會立即阻止該請求,否則就會將其轉發到 API 閘道器。
  4. 與 API Gateway 一起配置的 Lambda Authorizer 會攔截請求,並對使用者請求進行驗證和授權。如果使用者被授權訪問底層資源,請求將被轉發到前端控制器 lambda。
  5. 前端控制器 lambda 會將請求委託給相應的服務 lambda 函式。
  6. 根據業務邏輯,服務 lambda 會處理請求並向客戶端返回相應的響應。
  7. 在處理請求時,服務 lambda 函式可以呼叫下游 REST API 或資料庫。服務 lambda 函式還可以監聽 SNS 佇列或訂閱 SNS。
  8. 身份和訪問管理(IAM)服務用於為資源定義角色,併為這些角色提供訪問許可權。
  9. 所有資源都會將應用程式日誌推送到 CloudWatch,用於監控和故障排除。

典型用例

  1. 無伺服器架構可用於需要實時處理資料的事件驅動型應用,如資料流或通知處理。
  2. 微服務可以在無伺服器架構上獨立、隔離地實施和部署,以獲得更好的可擴充套件性。
  3. 處理預定任務的應用程式可以在無伺服器架構上實施和部署,並可根據特定時間觸發。
  4. 成本是關鍵因素的所有用例都可以採用無伺服器架構。

基礎設施調配和部署

在企業中,除了用於開發和測試目的的生產環境外,還有多個可用環境。在不同的環境中建立同一套資源並手動跟蹤配置更改是一項具有挑戰性的任務,而且可能會引入錯誤。為了解決這個問題,可以使用 Terraform(基礎設施即程式碼)。Terraform 有助於將資源從一個環境複製到另一個環境。此外,它還能跟蹤基礎設施的狀態。 任何 CI/CD 工具(如 Jenkins 或 GitLab)都可以使用 Terraform 自動進行部署。

結論


總之,利用 AWS 無伺服器架構開發 REST API 在可擴充套件性、成本效益和易管理性方面具有多重優勢。透過採用無伺服器方法,開發人員可以更加專注於構建強大的 API,而無需管理伺服器的開銷。AWS Lambda 的事件驅動模型可實現無縫擴充套件,確保您的 API 能夠高效處理不同的工作負載。



今天先到這兒,希望對雲原生,技術領導力, 企業管理,系統架構設計與評估,團隊管理, 專案管理, 產品管理,資訊保安,團隊建設 有參考作用 , 您可能感興趣的文章:
構建創業公司突擊小團隊
國際化環境下系統架構演化
微服務架構設計
影片直播平臺的系統架構演化
微服務與Docker介紹
Docker與CI持續整合/CD
網際網路電商購物車架構演變案例
網際網路業務場景下訊息佇列架構
網際網路高效研發團隊管理演進之一
訊息系統架構設計演進
網際網路電商搜尋架構演化之一
企業資訊化與軟體工程的迷思
企業專案化管理介紹
軟體專案成功之要素
人際溝通風格介紹一
精益IT組織與分享式領導
學習型組織與企業
企業創新文化與等級觀念
組織目標與個人目標
初創公司人才招聘與管理
人才公司環境與企業文化
企業文化、團隊文化與知識共享
高效能的團隊建設
專案管理溝通計劃
構建高效的研發與自動化運維
某大型電商雲平臺實踐
網際網路資料庫架構設計思路
IT基礎架構規劃方案一(網路系統規劃)
餐飲行業解決方案之客戶分析流程
餐飲行業解決方案之採購戰略制定與實施流程
餐飲行業解決方案之業務設計流程
供應鏈需求調研CheckList
企業應用之效能實時度量系統演變

如有想了解更多軟體設計與架構, 系統IT,企業資訊化, 團隊管理 資訊,請關注我的微信訂閱號:

image_thumb2_thumb_thumb_thumb_thumb

作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。 該文章也同時釋出在我的獨立部落格中-Petter Liu Blog。

相關文章