無伺服器PHP簡介:主要功能,用例以及如何在Lambda上使用Bref入門

無伺服器計算是基於雲的執行模型,該模型使應用程序可以作為服務託管,而無需維護伺服器。

服務提供商維護伺服器上的資源分配,並根據實際使用情況向用戶收費。重點轉移到正在創建的核心應用程序上,基礎架構僅由服務提供商處理。無伺服器計算也稱為功能即服務(FaaS)。

換句話說,無伺服器PHP是通過PHP後端實現無伺服器計算的示例。

只需移至Kinsta,即可將WordPress網站的速度提高200%。
        
          今天免費遷移

在本指南中,我們將仔細研究無伺服器PHP的含義,其主要功能和優缺點,以使您更好地了解這種雲計算方法。

具體來說,我們將研究無伺服器計算的概念,用例和範圍,優缺點,帶Bref的無伺服器PHP的簡單實現以及無伺服器PHP在三大巨頭(亞馬遜,微軟和Google)中的地位。

準備?開始吧!

傳統上,您需要伺服器的硬體來在Internet上設置應用程序。伺服器(或多台)計算機將物理連接到Internet,以使某人可以訪問您的應用程序。伺服器維護是一件昂貴的事情。

接下來,託管服務的發展使網站管理員可以購買託管空間-每個伺服器可以容納多個應用程序。這降低了成本。

隨著雲計算的興起,規模經濟進一步降低了成本,因為您可以在大型遠程伺服器場上租用少量空間。實際上,無伺服器計算只允許您為使用的服務付費。在不使用時,您實際上並沒有利用雲上的任何空間或資源。

無伺服器計算簡化了軟體開發過程:它使組織可以只專註於開發,而不必擔心部署,伺服器維護和擴展。

無伺服器PHP:基礎知識

Google上「無伺服器」一詞的趨勢

Google上「無伺服器」一詞的趨勢

要部署無伺服器PHP應用程序,您應該首先探索無伺服器計算的概念。雖然無伺服器一詞在ReadWrite上於2012年首次出現在有關軟體開發的未來的文章中,但隨著2014年AWS Lambda的推出,它逐漸流行起來。

在本節中,讓我們集中討論與無伺服器計算有關的一些關鍵概念,並嘗試回答圍繞該技術的一個常見問題:它真的是「少伺服器的」嗎?

無伺服器PHP的功能

部署是一項簡單的任務,無需管理伺服器。您只需將代碼上傳到伺服器,其餘的由供應商負責。無伺服器技術使您可以使用與語言無關的功能,並且可以相互交互。

例如,如果您有一個消息傳遞應用程序,則登錄模塊可以用一種語言編碼,而更新您的狀態的功能可以用另一種語言編碼。

儘管沒有無伺服器託管仍然可以做到這一點,但交互無疑更加困難。每當動作觸發您的函數時,都會產生一個實例來處理它。

生成實例的過程可能是「熱」(使用現有實例),或者是「冷」(啟動新實例)。與傳統託管相比,此過程略有延遲,尤其是冷啟動,在傳統託管中,伺服器始終處於待機模式以處理請求。

但是,當您要處理大量請求時,無伺服器託管和傳統託管之間的情況就完全相反。無伺服器技術固有地具有可伸縮性。如果您突然需要一千個並發請求,那麼供應商將為您處理這些請求,而無需您進行任何額外的工作或配置。

無伺服器PHP真的是無伺服器的嗎?

不要讓「無伺服器」一詞使您感到困惑。這並不意味著「伺服器」不存在。當您使用無伺服器應用程序時,後台會有一台伺服器來處理您的輸入並計算必要的輸出。

從開發者的角度來看,術語「少」表示該開發者,而從不接觸伺服器的各種元素。因此,如果部署無伺服器的PHP應用程序,則雲上會運行一台實際的伺服器來滿足請求。

BaaS與無伺服器架構

儘管「無伺服器計算」沒有嚴格定義,但它也可能指的是BaaS(後端即服務)應用程序。 BaaS還指的是雲計算模型,其中伺服器操作外包給第三方,開發人員只需要專註於創建和維護軟體。

BaaS和Serverless之間的主要相似之處在於,開發人員並不專註於伺服器管理。許多組織在同一框架下提供BaaS和FaaS軟體包。

以下是BaaS與無伺服器計算之間的主要區別:

  • 組件:BaaS應用程序與傳統的應用程序相似,開發人員可能不會對其結構進行更改以適應BaaS。在無伺服器中,應用程序分為稱為功能的邏輯部分,這些功能中的每一個都響應事件並執行特定任務。
  • 可伸縮性:可伸縮性是無伺服器應用程序中的關鍵組成部分-隨著流量的增加,分配了更多的資源。儘管某些服務提供商將其作為附件提供,但它不是BaaS應用程序的必需模塊。
  • 觸發器:無伺服器應用程序是事件驅動的,這意味著特定活動在每次發生時都會觸發該應用程序。另一方面,BaaS應用程序可能像傳統應用程序一樣在後台利用資源連續運行。
  • 模塊化體系結構:在無伺服器體系結構中,應用程序的各種功能可以駐留在不同的伺服器上並在其上執行,但是由於它們的集成,它們可以無縫運行。 BaaS應用程序可能會也可能不會遵循此結構。

無伺服器PHP:用例

我們已經討論了無伺服器計算的各個方面,以及它與BaaS的不同之處。在介紹了無伺服器計算的基礎知識之後,讓我們探討一下您可能希望採用這種架構的情況。

您可能已經意識到,在無伺服器技術上託管複雜的應用程序可能不是一個好主意。但是,即使您決定不通過無伺服器的PHP部署完整的應用程序,也可以部署模塊。

在本節中,我們將討論無伺服器堆棧的兩個實現示例:資料庫和文件存儲。

無伺服器資料庫是一個按需資料庫,可讓您在需要時執行查詢。由於沒有伺服器堆棧,因此擴展很容易,並且供應商僅在您使用資源的時間內向您收費。

Amazon Aurora和Google Cloud Datastore是當今市場上無伺服器資料庫的示例。無伺服器文件存儲系統被實現為對象存儲。文件在文件系統中不被視為層次結構,而是被視為對象,其中包含文件本身及其元數據的數據。通過類似REST的API進行存儲和檢索。

IBM Cloud為您提供對象存儲服務。無伺服器應用程序的其他常見用例是API和移動後端,其設計基於小的,邏輯的,相互依賴的功能。

無伺服器PHP:優勢

在本節中,我們將探討無伺服器計算的主要優勢以及近年來它為什麼越來越受到關注的原因。

降低伺服器成本

從理論上講,與傳統託管相比,無伺服器計算可降低成本。內在原因很簡單:您在特定時間段內使用該服務,並且在空閑時間沒有維護成本。但是,如果隨著時間的推移您面臨恆定的流量,那麼採用無伺服器架構可能不會在成本上造成很大的差異。

易於部署

部署無伺服器服務不需要您設置伺服器並對其進行配置。無伺服器應用程序的部署也可以通過簡單的功能實現。創建應用程序的版本並使其在雲上可用更加容易。因此,整個部署過程更加輕鬆,高效。

可擴展性

在傳統的設置中,需要付出很多努力來擴展規模以迎合更高的流量。另一方面,當業務量增加時,服務提供商負責資源分配。因此,在部署到無伺服器體系結構時,擴展規模更容易。

無伺服器PHP:缺點

儘管無伺服器計算具有其一系列優點,但是在致力於它之前,必須先意識到其潛在的缺點。

性能

用戶使用無伺服器計算所強調的主要問題是性能下降。儘管它是事件驅動的,但它會花費數百毫秒來生成一個微實例來處理請求。

對於時間緊迫的應用程序,此延遲可能會很重要。隨著應用程序複雜性的增加,駐留在各個位置的組件會增加這種滯後。這種附加的時間滯後可能證明對用戶體驗有害。

(建議閱讀:使用Gatsby和WordPress構建網站簡介)

供應商鎖定

無伺服器架構允許您僅專註於代碼,而供應商則可以完全控制基礎架構。因此,如果您不使用伺服器,則無法更改供應商,因為遷移可能是一項艱巨的任務。

調試

供應商負責無伺服器應用程序的端到端部署。因此,開發人員必須依靠供應商提供適當的日誌進行調試。調試無伺服器應用程序以找出根本原因的過程也很困難。

無伺服器PHP:Lambda上的Bref入門

在探索了無伺服器架構之後,我們現在將看到通過無伺服器服務部署PHP應用程序所需的內容。

您可能已經猜到了,無伺服器應用程序的部署是特定於供應商的。因此,本文試圖解決Amazon AWS上無伺服器PHP應用程序的實現。 Bref(法語中的簡介)是Composer軟體包,它允許您通過Lambda在AWS上部署PHP應用程序。

Bref不斷發展,因此您可能應該檢查Bref的成熟度矩陣,以評估將應用程序移植到無伺服器體系結構是否是一個好主意。

使用Bref的無伺服器PHP的先決條件

首先,轉到Amazon AWS並創建一個帳戶。您將需要它來部署您的應用程序。接下來,您需要安裝無伺服器框架來管理您的部署。

npm install -g無伺服器

接下來,在AWS上生成您的公鑰-私鑰對,並在本地配置無伺服器框架。

無伺服器配置憑據–provider aws –key – 秘密

接下來,通過Composer安裝Bref:

作曲者需要bref / bref

在部署之前,您需要安裝Composer的依賴項。

composer install –prefer-dist –optimize-autoloader –no-dev

使用Bref在無伺服器PHP上創建Hello World應用程序

為了使用Bref創建一個簡單的hello world應用程序,我們將編寫一個由事件觸發並返回字元串「 Hello World」的函數。

首先,您必須包含Bref的autoload.php腳本,然後使用其lambda函數。如果要從上下文訪問數據,則可以選擇聲明一個上下文變數。

需要__DIR __。’/ vendor / autoload.php’;
lambda(函數($ event){
 返回「 Hello world」);
});

該功能就緒後,您需要創建一個serverless.yml配置文件。這是Bref指南中的基本配置文件。

服務:應用
提供者:
 名稱:aws
 運行時:提供
插件:
 -./vendor/bref/bref
功能:
 你好:
 處理程序:index.php
 層數:
 -$ {bref:layer.php-73}

當您運行以下命令時,Bref會自動創建此配置文件。

供應商/ bin / bref初始化

現在您已經準備好函數和配置,可以使用無伺服器包的invoke命令調用該函數以檢查它是否按預期運行:

無伺服器調用-f hello

這是有關使用AWS的sam命令行工具在本地部署無伺服器應用程序的指南。項目準備就緒後,可以使用無伺服器部署命令來部署它。使用–verbose選項可獲取部署過程的詳細信息:

無伺服器部署

無伺服器PHP的其他部署選項

AWS Lambda上的Bref PHP是一個受歡迎的選擇。但是,無伺服器PHP應用程序還有其他一些選擇。

由Laravel在2019年7月推出的Vapor是AWS Lambda上用於Laravel的無伺服器部署平台。 Vapor將您的Laravel應用程序轉換為單個lambda函數。儘管Azure無伺服器不正式支持PHP,但是您仍然可以使用此部署示例嘗試一下。

隨著數周的過去,無伺服器PHP越來越受到關注。但是到底是什麼呢?真的是伺服器「少」了嗎?它是如何工作的?在這份深入的指南中,獲得所有這些(以及更多)問題的答案! ☁️?

點擊鳴叫

摘要

這是您應從無伺服器PHP指南中刪除的關鍵方面:

  • 在考慮將無伺服器PHP用於應用程序之前,請確保您完全了解什麼是無伺服器計算,其優缺點。
  • 將應用程序移植到無伺服器PHP框架時,應考慮三個主要因素。考慮應用程序的複雜性,組件的時間緊迫性以及將來的可伸縮性。
  • 無伺服器PHP仍然是相當新的市場。在完全致力於Bref之前,請確保對其中一個供應商進行了Bref的試用。

當無伺服器變得非常流行時,它還需要深入了解該技術如何利用它。

對於所有其他情況,使用諸如Kinsta之類的託管WordPress主機可以極大地簡化您的工作流程。

如果您喜歡這篇文章,那麼您會喜歡Kinsta的WordPress託管平台。加速您的網站,並從我們經驗豐富的WordPress團隊獲得24/7支持。我們基於Google Cloud的基礎架構專註於自動擴展,性能和安全性。讓我們向您展示Kinsta的與眾不同!查看我們的計劃

相關文章