简介:PHP 作为一个开发群体的很大的语言其应用范围相当广泛,Serverless 的理念和 PHP 语言的理念都是让开发者最大精力集中在自己的业务价值。那么 PHP 遇见 Serverless 会迸发出哪些火花呢?
各位 PHPer,Serverless 正当时作者 | 西流
PHP 的应用范围相当广泛,尤其是在网页程序的开发上, 根据最新 维基百科 显示,2013 年 4 月的统计资料,PHP 已经被安装在超过 2 亿 4400 万个网站和 210万 台服务器上。而根据 W3Techs 的报告,截至 2021 年 9 月, 有 78.9% 的网站使用 PHP。 所以 PHP 是世界第一语言至少在 Web 开发领域并不是戏称。
而在技术选型上, PHP 主要采用的是 LAMP(全称是linux + apache + mysql + php) 或者 LNMP (全称是 linux + nginx + mysql + php), 这种成熟稳定的技术框架推动 PHP web 开发生态的繁荣和商业上的成功。
在传统的开发模式中, 开发者自己需要安装维护各种软件的安装、维护升级:
1、如果您是一个企业用户, 如果业务体量变大或者为了生产环境的稳定和可用性, 使用负载均衡是一个必然的选项:
即此时, PHP 开发者或者线上运维的同学关心的事情多了起来:
- 每个增加的生产机器都需要重新安装一遍相关软件, 做相同的 nginx 配置以及 php-fpm 的配置, 以及维护每个生产机器的安全更新
- 假如开发的应用需要一个新的扩展, 可能需要人肉每台机器去增加扩展
- 负载均衡器随着业务的变更升配, 后面一台 Worker 机器挂掉了, 如何做运维处理
- 业务的波峰波谷怎么应对才能让资源的利用率提高
- ...
2、如果您是项目组开发成员比较多的企业用户,能不能不需要给每个人配置一个安装的 NLP 的 Linux 机器作为开发测试机器(或者多人共享一个机器)?
3、如果您是一个学生或者准备学习 PHP 开发,本地只有 Windows 电脑, 能不能直接近乎免费的方式获取 LNP(Linux+Nginx+PHP) 的环境用来学习呢?
带着这些问题, 我们去探索一下 Serverless 是如何解决这些痛点的。
PHP 遇见 Serverless 1、什么是 ServerlessServerless = Faas (Function as a service) + Baas (Backend as a service), 我们简单通过两个图快速了解相关概念:
1)传统模式
2)Serverless 模式
图中的 1,2 就是第三方 BaaS 服务, 4,5 就是自定义函数逻辑的 FaaS, 通过这个对比, 我们能快速得到 FaaS 的特性和好处:
- 只需要专注业务代码开发, 编写对应的逻辑即可
- 极致弹性伸缩, 无需管理服务器
- 按量付费,每次调用按毫秒计费
- ...
本文后续讨论的 Serverless 主要指的是 FaaS, 如下示意图, 几行代码编写完毕, 保存到云厂商的 FaaS 平台, 就完成了一个弹性高可用的 Web API。
在讲 PHP 之前, 我们可以先看看 Serverless 在前端领域如火如荼的发展:
1)Backend For Frontend(BFF)in Serverless 来提高生产力
- 前端开发者全栈化
- 提高开发效率,减少前端和后端接口同学的沟通联调时间, 后端同学只需要做好原子的接口的稳定性和可靠性即可, 数据的聚合直接由前端同学通过 BFF 实现。
2)当 SSR 遇上 Serverless,轻松实现页面瞬开
- 借助于函数即服务(FaaS)的能力,不需要再去搭建传统的 Node 应用,一个函数就可以变成一个服务,开发者可以更纯粹的关注于业务逻辑。
- FaaS 以函数为单位的形式以及弹性机制,为 SSR 应用带来了天然的隔离性和动态修复能力,可以更好的避免页面间的交叉污染,或一些边界的异常场景对应用带来致命性的伤害。
- 无需运维、按需执行、弹性伸缩这些特性,大大降低了 SSR 应用对开发者的门槛。
PHP 作为一个开发群体的很大的语言, 各大云厂商的 FaaS(比如阿里云的函数计算, AWS 的 Lambda, 腾讯的 SCF 等)都推出了对 PHP 语言的支持, phper 面对前端领域的 Serverless 技术革新实践, 应该不遑多让。以阿里云函数计算为例, 有很多 PHP 的开发者有了很多有趣的实践:
- 直接使用 gd 或者 ImageMagick 扩展, 实现弹性高可用的图片、水印等各种 CPU 密集型 API
- 直接使用 ffmpeg + 性能型实例 + 异步有状态调用完成视频剪辑合成等音视频处理业务
- 使用 HTTP 触发器实现的函数, 埋点到广告平台, 快速实现高可用的买量业务
- 直接将之前基于框架(如 ThinkPHP)实现的 web API 直接迁移到 FaaS 平台,不用再担心宕机和运维问题了
- ...
虽然 FaaS 很好地解决了 phper 如下问题:
- 新业务或者开发新的 web API
- 存量业务中, 有些 CPU 密集型或者弹性要求很高的 API 单独抽离出来 FaaS 化
但是传统的开发模式或者存量业务,对开发者有一定的上手和改造成本,比如某 Faas 厂商 PHP Runtime 编程接口示例:
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?