我們之前關于 AWS 無服務器平臺的文章討論了該平臺的基本原理和挑戰以及簡單的應用程序使用案例。在本文中,我們將介紹企業如何使用 AWS 云實施具有多層架構的無服務器應用程序。
多層體系結構概述
多層體系結構也稱為 n 層體系結構。在這種體系結構中,應用程序在多個層中開發和分發。層數取決于業務需求,但三層體系結構是首選且最常用的。
此三層體系結構包括表示層、邏輯層和數據層。
用戶直接與表示層交互。邏輯層包含將用戶操作轉換為應用程序行為的代碼。數據層由保存與應用程序相關的數據的存儲組成
可以在整體式架構中使用數千臺服務器來提高應用程序的性能。這種無服務器多層體系結構模式消除了服務器管理。
以下是使用由 AWS 管理的無服務器服務的幾個好處
無需選擇、修補或管理操作系統
無需監控、橫向擴展或保護服務器
過度配置不會給基礎架構帶來風險
配置不足不會給應用程序性能帶來風險
無服務器服務
上述所有服務都會自動擴展,以支持應用程序的確切需求。
無服務器架構
表示層
在上述架構中,靜態內容托管在 Amazon S3 上,并由 Amazon CloudFront 分發。在 Amazon S3 上托管靜態網站內容是在基于服務器的基礎設施上托管內容的經濟替代方法。此外,大量數據可以存儲在 Amazon S3 中。Amazon CloudFront 是一個內容交付網絡,用于緩存靜態內容并提供動態和靜態內容,以縮短網頁加載時間并降低網絡帶寬成本。
AWS CognitoUser 池是一個用戶目錄,為應用程序用戶提供注冊和登錄選項。它還可以控制誰可以訪問Amazon API Gateway中的API
邏輯層
對于動態內容,route-53 通過 AWS WAF 將請求發送到 API 網關,并從 API Gateway Lambda 函數觸發并將數據存儲在 Amazon S3 和 DynamoDB 或 AWS Aurora 中。
將 Amazon 的 API Gateway 與 AWS Lambda 集成,使代碼函數可以直接通過 HTTPS 請求觸發。無論所需的請求量如何,API 網關和 Lambda 都會自動擴展。這兩種服務允許專注于對應用程序重要的代碼,而不是專注于實現多層體系結構的其他各個方面。
對于網絡隱私,AWS 能夠在 Amazon VPC 中創建 lambda 函數
AWS WAF 是一種 Web 應用程序防火墻,可以部署在 CloudFront 上,以保護應用程序免受 DDoS 攻擊。WAF 通過定義安全規則來允許或阻止流量。Amazon Route 53 可以通過 AWS WAF 將用戶的請求連接到 CloudFront 分配。
AWS Glue 可以根據獲取新數據集等事件運行 ETL(提取、轉換和加載)作業。在上述架構中,一旦 Amazon S3 中有新數據(日志)可用,Glue 就會運行 ETL 作業,并且這些日志將被推送到 Amazon CloudWatch,并且可以從 Amazon CloudWatch 通過 Amazon SNS 發送通知。
數據層
根據應用程序場景,AWS Lambda 會將數據存儲到 Amazon DynamoDB 或 AWS Aurora。
Amazon DynamoDB 能夠存儲可無限擴展的 NoSQL 數據庫,還提供預置和按需容量模式,以便通過指定每個工作負載的容量來優化成本。
AWS Aurora 是 MySQL 和 PostgreSQL 兼容的完全托管關系數據庫服務,專為傳統企業數據庫構建,該數據庫需要開源數據庫的性能和可用性以及成本效益。它能夠根據應用程序的需求自動啟動、關閉和擴展或縮減容量。對于不頻繁或不可預測的工作負載,這是一種經濟高效的解決方案
Amazon Athena/Amazon Redshift Spectrum 使用 AWS Glue 作為存儲和檢索表元數據的中心位置。它具有分析非結構化、半結構化和結構化數據存儲的能力。Athena 還可以生成報告,Amazon QuickSight 可以與 Athena 集成,以便輕松實現數據可視化
根據最佳實踐,所有服務都與 AWS IAM 角色相關聯。在許多情況下,可以利用此 AWS 托管服務,而不是管理典型的基于服務器的基礎設施。借助這種無服務器多層體系結構,可以輕松創建易于維護、解耦、安全、擴展且高度可用的生產應用程序組件。
審核編輯:郭婷
-
服務器
+關注
關注
12文章
9123瀏覽量
85328 -
操作系統
+關注
關注
37文章
6801瀏覽量
123285 -
AWS
+關注
關注
0文章
431瀏覽量
24355
發布評論請先 登錄
相關推薦
評論