|Serverless 对研发效能的变革和创新( 三 )



云托管和 Serverless 应用差异
这里对比一下采用云托管的应用和采用 Serverless 的应用最本质的差异在哪里 。 对于应用而言 , 可以将其构建模式拆分为三层 , 分别是底层基础设施管理、中间的外部服务集成和上层的应用逻辑 。 如果采用云托管模式 , 实际上是在基础设施层去构建应用 , 应用构建的抽象层次是比较低的 , 因此会带来大量工作 , 用户自己需要整合不同的组件和服务 , 需要进行大量的决策和实现 , 交付的速度会比较慢 , 需要考虑很多的事情 , 而且在运维方面有大量的重复工作 。
如果用户采用 Serverless 的模式构建应用 , 也就是相当于在上层API的方式构建应用 , 粘合的逻辑和基础设施管理的工作都由云服务商来承担 , 用户所需要整合和决策的代价比较低 , 所需要考虑的主要就是如何将业务逻辑和需求与云服务进行适配来构建应用 。 基于非常高效的云API来构建应用的好处在于构建的成本很低 , 并且能够实现按天、按小时进行交付 , 并且大大降低未来运维的负担 。
|Serverless 对研发效能的变革和创新
本文插图

什么是 Serverless 计算?
Serverless计算具有四个特点:首先 , 不需要维护云计算基础设施 , 应用构建的抽象层次上升 , 变得更加高效;其次 , 能够实现实时的弹性伸缩 , 这样能够通过未来的数据驱动的负载感知算法能够实现既满足很低的延时 , 也能够实现很高的资源利用率;再次 , 计量模式提供了非常细粒度的按需的模式 , 可以实现按秒级计量 , 能够实现完全按需的付费模式 , 对于用户而言 , 资源利用率是100%;最后 , 能够实现高可用 , 将这种能力内置在平台层 。
|Serverless 对研发效能的变革和创新
本文插图

阿里云 Serverless 产品体系
这里做一个说明 , Serverless 计算只是阿里云 Serverless 产品中的一部分 , 除此之外还包括存储、API、分析、中间件等 。 因此 , 从这个角度来看 , Serverless 也不是一个非常新的概念 , 最早的 OSS 对象存储就是一个 Serverless 产品 , 可以看出云产品体系正在 Serverless 化 , 只不过最近几年出现了函数计算这样通用的 Serverless 计算平台 , 进而能够将 Serverless 体系产品连接起来 , 构建一个 Serverless 应用 。
|Serverless 对研发效能的变革和创新
本文插图

三、Serverless DevOps
当有了这些 Serverless 的能力 , 那么如何将这些能力与 DevOps 结合起来呢?
简化基础设施的管理和运维
下图更多地是从如何构建高可用应用的角度来展现 。 这里将应用的模块分为四个方面:包括基础设施、运行时、数据和应用 。 基础设施层就是需要处理与机器相关的操作 , 比如故障处理 。 运行时则需要做应用资源隔离、流控等 。 数据层主要需要和数据库、缓存相关 , 比如如何设计数据库表结构 , 如何设计缓存策略 , 如何实现负载均衡 , 如何保证不会出现横向扩展瓶颈 。
在应用层 , 则需要处理与应用相关的操作 , 比如代码包的错误、配置错误、心跳异常的处理 。 下图中蓝色虚框中的部分可以完全由平台负责 , 用户可以无感知;蓝色实框则是平台帮助用户做了大量工作 , 但是还是需要用户感知和作出一定决策;红色框则代表还是需要用户自己管理的部分 。 可以看到 , 在容错方面 , 平台提供了非常强的能力 , 包括多AZ的容灾能力、快速的弹性能力、内置的流控能力以及多层次、多维度的监控报警能力 。 借助于这些能力 , 用户管理基础设施的复杂度就大大降低了 。
|Serverless 对研发效能的变革和创新


推荐阅读