大涛学长Serverless 服务选型( 二 )
Serverless 简介
维基百科对于 Serverless 有较为完备的定义 [1]:
Serverless computing is a cloud computing execution model in which the cloud provider runs the server, and dynamically manages the allocation of machine resources. Pricing is based on the actual amount of resources consumed by an application, rather than on pre-purchased units of capacity. It can be a form of utility computing.在这种计算模型下 , 给用户会带来如下收益:
Serverless computing can simplify the process of deploying code into production. Scaling, capacity planning and maintenance operations may be hidden from the developer or operator. Serverless code can be used in conjunction with code deployed in traditional styles, such as microservices. Alternatively, applications can be written to be purely serverless and use no provisioned servers at all.概念本质上是对问题域的抽象 , 是对问题域特征的总结 。 通过特征来理解概念 , 可以避免注意力集中在文字描述而非概念的价值本身 。
站在用户角度 , 我们可以抽象出 Serverless 的如下特征:
- 免运维 (服务器运维、容量管理、弹性伸缩等)
- 按资源的使用量付费
Serverless 开发模型
Martin Fowler 的这篇文章 [2] 站在架构的角度 , 对 Serverless 开发模型做了充分的阐述 , 这里做个简单的总结 , 核心围绕三点:
- Event-driven 开发模型
- 自动弹性伸缩
- OpenAPI
Event-driven 模型 , 使得 服务常驻 这种理念从必选项转变为可选项 , 可以更好应对业务请求量的变化 , 如自动弹性伸缩 。 同时服务非常驻 , 可以降低所需的资源成本和维护成本 , 加速项目迭代 。
通过文章 [2] 的两幅图可以更直观理解:
图 2
上述云产品分类可以清晰和图 1 的模型对应起来 , 用户在进行选择时 , 先整理当前业务技术所处的阶段和痛点 , 确定对云上方案的需求 , 然后再根据云厂商的产品形态做对应 , 选择适合当前阶段的服务和云产品 。
该对应关系重点是了解云产品定位是否可以长期满足业务需求 , 如:
- 业务技术目前所处的阶段是否有对应的 Serverless 产品形态
- 业务快速迭代是否会受限于云产品自身的发展
- 云产品的稳定如何
- 云产品是否可以持续为业务带来技术红利
若是云产品定位带来的限制 , 那么就需要考虑使用和业务需求定位更匹配的云产品 。 若是当前技术实现的限制 , 那么有机会和云产品共同成长 , 及时给云产品反馈 , 使得云产品可以更好满足自身的业务需求 。
推荐阅读
- InfoQServerless 实战:3 分钟实现文本敏感词过滤
- 四平学长雷军系公司再上市,你看见的大佬都是用汗水堆积出来的
- [我的第一部5G手机]只能二选一,手机超广角与多倍光学长焦镜头谁更重要?
- 『技术』Serverless 的前世今生
- DevOps■从 DevOps 到 NoOps,Serverless 技术的落地方式探讨