目前常见的业界产品有AWS Lambda、Google Cloud Functions、Azure Functions、IBM OpenWhisk、阿里云函数计算。随着容器技术,IoT,5G,区块链等技术的快速发展, 技术上对去中心化,轻量虚拟化,细粒度计算等技术需求愈发强烈,而Serverless必将借势迅速发展。
价值及影响
- 低成本:运营成本和开发成本
- 真正的按需付费
- 高横向扩展
- 只需要传统5%~15%的计算能力
- NoOps
应用场景
- 事件驱动及响应式架构
- IoT物联网场景中低频需求
- 请求对及时响应需求不强
- 固定时间触发计算资源利用低的的业务
- 流量突发场景
- 跨云和混合云
- 边缘计算
- 代码运行周期短,长的不适合
不同风格的Serverless
Serverless技术有几种不同的版本。尽管AWS Lambda被视为启动这一运动的特定技术,但其他供应商提供了减少运营开销的平台。Serverless产品通常分为两种:
- 后端即服务(BaaS)-BaaS提供了Serverless方法来处理诸如存储,身份验证和用户管理之类的事情。
- 功能即服务(FaaS)-FaaS平台以离散的“功能”单元运行代码,并根据需要调用它们。
Serverless的API
最终用户可以使用API网关之类的云基础架构来构建可根据需要调用的整个服务,而不必不断监听。云提供商会将传入的请求路由到正确的Serverless功能,该功能将完成工作并将响应写回最终用户。
这样就可以开发仅在使用时才收费的API,并且可以通过最小的更改大规模扩展。 Slobodan Stojanovic和Aleksandar Simovic的书《使用Node.js的Serverless应用程序》提供了一个示例,说明了为什么要对API使用Serverless:
要了解Serverless,请考虑一下洗衣机。洗衣服的设备听起来像是一个疯狂的起点,但是如今拥有一台服务器类似于拥有一台洗衣机。每个人都需要干净的衣服,最合乎逻辑的解决方案似乎是购买洗衣机。但是大多数时候,洗衣机都插上电源,什么也不做。最多每周使用5到15个小时。服务器也是如此。大多数情况下,您的普通应用服务器只是在等待接收请求,什么也不做。
Serverless存储
传统上,管理Web应用程序的数据存储一直是操作应用程序中最困难的部分之一,而数据库管理有时看起来像是一门绝技。但是,Serverless数据存储(如Firebase和Aurora)的引入使开发人员不必担心优化实例类型,执行备份以及其他可操作的数据库问题。
相反,云提供商将为最终用户处理托管数据存储的事宜。提供者经常具有按需付费的计费模型。默认情况下,数据存储速度很快,并且通常具有吸引开发人员的灵活性,例如缺少预定义的架构。
Serverless云事件
在云环境中,应用程序在诸如Amazon Web Services之类的平台中诞生并终生存在。这与更“传统”的应用程序形成对比,这些应用程序可能旨在在自营数据中心的通用商品硬件上运行。由于基于云的应用程序在更高的抽象级别上运行,因此它们也可以与“事件”一起使用,这些事件可以通知最终用户抽象化基础架构中正在发生的事情,从而避免了从较低层次的文件系统中找出问题的负担。蜜蜂。当工程师需要对云平台上发生的事件做出反应时,Serverless才真正发挥作用。作为提高云事件效率的一个示例,开发人员可能希望在将新文件推送到S3存储桶时执行某些操作,例如修改其尺寸并将新文件发布到其他地方。
通过将云提供商的本机抽象用于这些事件,可以大大减轻开发和部署负担。这允许具有创造性的新架构,这些架构可以很好地扩展,甚至可以编织到大数据转换管道中。可以在Peter Sbarski的AWS上的Serverless架构中找到使用S3事件的示例。
其他Serverless用例
Symphonia的联合创始人Mike Roberts在接受采访时说,Serverless还具有其他用例。例如,可以被建模为一组异步“实时”(即比人类感知的速度更快)事件的任何系统都可以受益于使用Serverless快速响应所有这些事件。对于请求模式不一致的用例,例如webhooks,这可能会派上用场。 Webhook可能不会经常触发,但是当它发生时,让Serverless功能执行工作而不是服务器上的进程来全天候保留计算能力可能会为企业带来巨大的成本和运营节省。
公司喜欢尝试Serverless的一个领域是操作和与呼叫相关的自动化。警报,自动缩放,响应用户消息的聊天机器人,以及所有这些都适合于非对称调用的工作环境,这些工作很有用,但由于并不直接面向最终用户,因此可以进行试验。一旦证明这些系统成功,公司可能会更愿意推出面向用户的服务
何时使用Serverless
新的开始
改变人生,没有什么捷径可言,这条路需要自己亲自去走一走,只有深入思考,不断反思总结,保持学习的热情,一步一步构建自己完整的知识体系,才是最终的制胜之道,也是程序员应该承担的使命。
《系列学习视频》
《系列学习文档》
《我的大厂面试之旅》
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!
构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!**