使用 Laravel 和 AWS:您需要了解的内容

使用 Laravel 和 AWS:您需要了解的内容

2024.04.19

您可能已經聽說過 Laravel,這個開源的 PHP 框架,而您可能也正在計畫將您的 PHP Laravel 應用程式帶入下一階段,以現代化您的應用。AWS 提供了許多功能來幫助組織擴展以支援數以百萬計的用戶,更不用說與雲基礎架構相關的靈活性和成本效益了。這些功能和能力是將您的應用轉變為一個高效能和高可靠性的 PHP Laravel 應用的有力推手。

在這篇文章中,我將描述如何在 AWS 上以高等級的可擴展性標準構建您的軟體即服務(SaaS)Laravel 應用程式,以幫助您了解所需的條件,並討論獲取商業價值和韌性的考量和行動項目。我們選擇 AWS 雲,因為它是最成熟的基礎設施即服務(IaaS)提供商,且使創新更為容易;然而,這些做法可以應用於任何雲平台。

我還將解釋為什麼 AWS 是擴展和成長您的 SaaS Laravel 應用程式的重要選項,並展示當前/未來的企業架構。在本系列的第二部分,我將討論 12 因素應用方法論的重要性,以及在 AWS DevOps 上架構時包含在您策略中的多個課程。

將您的 Laravel 應用遷移到 AWS 的價值

在我為公司博客撰寫的一篇文章中,我解釋了 AWS 雲採用帶來的商業利益,包括減少 IT 勞動力、預配置的服務以實現更快的實施和最小化的停機時間,由於基礎架構的可重複性和靈活性。雲是擴展 SaaS Laravel 應用程式的基本環境——在那裡,您可以將架構解耦成多個服務部分,包括雲存儲(Amazon S3 和 CDN)和自動擴展的 EC2 實例(AWS 自動擴展),並整合各種 SaaS/平台即服務(PaaS)AWS 組件,為您的現代化、雲原生應用程式。此外,如果您計劃遷移到 AWS 雲,您可以使用這個 AWS 遷移清單來為您的旅程做準備。

網路應用程式和企業需要轉型,他們需要轉向持續的變革,而雲端技術是關鍵。

我非常欣賞 AWS 的 Stephen Orban 的這句話,因為您不僅是在轉型您的應用程式;一旦登上 AWS 雲端,您將踏上一場無盡的持續創新之旅:按需付費、微服務、無伺服器等等。

Laravel 在 Docker 和微服務上的架構

在 AWS 雲端旅程中,出現了多次顛覆性的演進,其中之一就是微服務,儘管如此,我不會涵蓋微服務(Docker)的方法。作為將您的應用轉型為雲原生應用的第一步,從單體架構開始。隨著您的應用成熟和用戶基數的增加,我建議跳入 Laravel 微服務方法,即使用 Docker、AWS ECS、Kubernetes 或 AWS Fargate 來 Docker 化您的 Laravel PHP 產品。我發現許多數位代理商正在採用 AWS 雲端和 DevOps 實踐,配合 Docker/Serverless 策略,並且因為這些複雜技術而感到不知所措,這導致了項目失敗,因為他們還沒準備好進入這一階段。

避免這種情況的方法是:逐步成長。

然而,如果您的開發團隊對 Docker 和微服務有足夠的經驗,我不會猶豫以微服務架構。這將在本系列的下一篇文章中介紹,「使用 Laravel、Docker 和 AWS ECS 的微服務」。

這篇文章適合誰?

無論您是在 Godaddy/Hostgator 上啟動一個 MVP 應用程式、在 AWS 上部署 Laravel 並遵循基本原則,還是準備從數百個用戶跳躍到百萬用戶,這篇文章都適合您,並將在 AWS 上的 Laravel 架構中幫助您。

在 AWS 上針對大規模 SaaS 架構的 Laravel

那麼,讓我們首先明確您最需要什麼來擴展 AWS 上的 Laravel 應用程式。

下面的圖解展示了下一代 Laravel 應用程式應如何使用 AWS DevOps 組件的完整範圍來架構。這個 AWS 技術棧中提到的每一塊都是高度彈性、可擴展和韌性的。


AWS Laravel 架構圖解

AWS 自動擴展與負載平衡

起初,動態流量來自 AWS Route53,它將所有請求路由到應用程式負載平衡器,AWS ALB 將在一組 EC2 實例(2…N 實例)之間進行負載平衡。這個實例群應根據流量需求或 AWS CloudWatch 指標「水平」擴展。

Amazon S3 和 CloudFront CDN

所有靜態內容,包括圖片、視頻和 HTML,將托管在 Amazon S3 上,這是一個具有無限存儲和彈性的雲存儲。在 Amazon S3 前面,我們將組合 AWS CloudFront 來緩存所有靜態內容並減少帶寬成本。整合這對組件至關重要。

AWS RDS Aurora(托管數據庫服務)

數據庫數據應放在 AWS Aurora 或 RDS 上,並使用 AWS ElastiCache(Redis)進行會話管理和緩存用戶數據。這些 AWS 組件是彈性和可擴展的,這有助於設計具有最高容錯能力和韌性的 AWS 好架構框架。

Amazon VPC 和網絡

在 AWS 網絡層面,我們建議使用 AWS VPC 以及公共/私有企業網絡。遵循 PCI 和 HIPAA 實踐,應有一個 VPN 將 Laravel 應用封裝在私有 AWS 企業網絡內。還應包括 AWS VPN 連接和 OpenVPN 服務,以便訪問您的多個 Laravel 環境的私有網絡。

Route53

從 DNS 的角度來看,需要 Route53 來管理應用域、DNS 可擴展性、路由延遲以及更多功能以減少故障。

AWS Lambda

這個無服務器組件將用於異步任務和後端腳本,以最小化 AWS 自動擴展群集中的負載。

我們將在本系列的第三篇文章中詳細探索這些 AWS 組件。

可以適配於此架構的網絡應用:

相關文章