无服务器计算是基于云的执行模型,该模型使应用程序可以作为服务托管,而无需维护服务器。
服务提供商维护服务器上的资源分配,并根据实际使用情况向用户收费。重点转移到正在创建的核心应用程序上,基础架构仅由服务提供商处理。无服务器计算也称为功能即服务(FaaS)。
换句话说,无服务器PHP是通过PHP后端实现无服务器计算的示例。
只需移至Kinsta,即可将WordPress网站的速度提高200%。
今天免费迁移
在本指南中,我们将仔细研究无服务器PHP的含义,其主要功能和优缺点,以使您更好地了解这种云计算方法。
具体来说,我们将研究无服务器计算的概念,用例和范围,优缺点,带Bref的无服务器PHP的简单实现以及无服务器PHP在三大巨头(亚马逊,微软和Google)中的地位。
准备?开始吧!
传统上,您需要服务器的硬件来在Internet上设置应用程序。服务器(或多台)计算机将物理连接到Internet,以使某人可以访问您的应用程序。服务器维护是一件昂贵的事情。
接下来,托管服务的发展使网站管理员可以购买托管空间-每个服务器可以容纳多个应用程序。这降低了成本。
随着云计算的兴起,规模经济进一步降低了成本,因为您可以在大型远程服务器场上租用少量空间。实际上,无服务器计算只允许您为使用的服务付费。在不使用时,您实际上并没有利用云上的任何空间或资源。
无服务器计算简化了软件开发过程:它使组织可以只专注于开发,而不必担心部署,服务器维护和扩展。
无服务器PHP:基础知识
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的与众不同!查看我们的计划