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


Serverless对研发效能的变革和创新文章插图
阿里云Serverless产品体系
这里做一个说明 , Serverless 计算只是阿里云 Serverless 产品中的一部分 , 除此之外还包括存储、API、分析、中间件等 。 因此 , 从这个角度来看 , Serverless 也不是一个非常新的概念 , 最早的 OSS 对象存储就是一个 Serverless 产品 , 可以看出云产品体系正在 Serverless 化 , 只不过最近几年出现了函数计算这样通用的 Serverless 计算平台 , 进而能够将 Serverless 体系产品连接起来 , 构建一个 Serverless 应用 。
Serverless对研发效能的变革和创新文章插图
三、Serverless DevOps
当有了这些 Serverless 的能力 , 那么如何将这些能力与 DevOps 结合起来呢?
简化基础设施的管理和运维
下图更多地是从如何构建高可用应用的角度来展现 。 这里将应用的模块分为四个方面:包括基础设施、运行时、数据和应用 。 基础设施层就是需要处理与机器相关的操作 , 比如故障处理 。 运行时则需要做应用资源隔离、流控等 。 数据层主要需要和数据库、缓存相关 , 比如如何设计数据库表结构 , 如何设计缓存策略 , 如何实现负载均衡 , 如何保证不会出现横向扩展瓶颈 。
在应用层 , 则需要处理与应用相关的操作 , 比如代码包的错误、配置错误、心跳异常的处理 。 下图中蓝色虚框中的部分可以完全由平台负责 , 用户可以无感知;蓝色实框则是平台帮助用户做了大量工作 , 但是还是需要用户感知和作出一定决策;红色框则代表还是需要用户自己管理的部分 。 可以看到 , 在容错方面 , 平台提供了非常强的能力 , 包括多AZ的容灾能力、快速的弹性能力、内置的流控能力以及多层次、多维度的监控报警能力 。 借助于这些能力 , 用户管理基础设施的复杂度就大大降低了 。
Serverless对研发效能的变革和创新文章插图
敏捷的应用角度流程
下图展示了应用交付的流程 , 代码通过统一管理的代码库存储和管理起来 , 再通过持续集成将其变成一个交付物 , 再将其存储到交付物仓库里面 。 交付物可以是容器镜像 , 也可以是代码包的模式 。 产出了交付物之后 , 可以自动地将其部署到测试、生产环境中去做版本部署 , 最后实现到生产环境的自动部署 。 因此这样应用交付流程的关键点在于实现高度自动化 , 而自动化的关键环节有两点:分别是基础设施即代码和环节间的自动化串联 。
Serverless对研发效能的变革和创新文章插图
自动化应用交付流水线
下图展现的是自动化应用交付流水线 , 可以看到在下面的每一个环节都需要实现很多的功能 , 而很多都是重复性工作 , 因此需要做到基础设施即代码 。
Serverless对研发效能的变革和创新文章插图
基础设施即代码
下图是基础设施即代码的展示 。 Serverless 应用模型通过声明来定义应用资源 , 能够实现标准化、自动化和可视化 。
Serverless对研发效能的变革和创新文章插图
可以为模板传入不同参数 , 可以动态生成应用运行环境 。
Serverless对研发效能的变革和创新文章插图
服务版本和灰度发布
在函数计算里面 , 应用有版本的概念 , 版本是一个不可变实体 , 因此杜绝了版本因为非预期的修改造成线上应用受损 , 阿里云通过服务版本和灰度发布避免了这样的问题 , 客户端访问应用通过别名来访问 。
Serverless对研发效能的变革和创新文章插图
Serverless工作流
阿里云提供了 Serverless 工作流方便用户将 DevOps 串联起来 , 用户可以通过配套的服务能力、工具能力快速地创建工作流 , 并且以可视化的方式展现出来 , 能够清楚地看到工作流的效果 。
Serverless对研发效能的变革和创新文章插图
自动化应用交付流水线
回顾一下当有了这些能力之后 , 如何实现自动化应用交付流水线 。 在源码阶段 , 可以实现代码质量静态检查 , 保证 CheckIn 的代码质量 。 当 CheckIn 到代码库之后 , 会自动运行单元测试 , 并且产出交付物 。 在测试的环节 , 通过与阿里云 ROS 的无缝集成能够实现自动化部署到测试环境 , 并且运行测试用例 。 这些完成之后 , 通过 ReleaseManager 可以确认部署 , 通过工作流将这些任务串联起来 , 发布到预发布环境中 , 并且进一步部署到生产环境中 , 每一个步骤都实现了自动化 , 研发效能得到了极大提升 。