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


Serverless对研发效能的变革和创新文章插图
来源:微信公众号:杨皓然(不瞋)@阿里巴巴中间件
出处:;mid=2247490741 --tt-darkmode-bgcolor: #131313;">对企业而言 , Serverless 架构有着巨大的应用潜力 。 随着云产品的完善 , 产品的集成和被集成能力的加强 , 软件交付流程自动化能力的提高 , 我们相信在 Serverless 架构下 , 企业的敏捷性有 10 倍提升的潜力 。本次分享我主要分为以下四个方面:
一、DevOps的挑战以及如何降低 DevOps 实施代价?
二、为什么 Serverless 是云发展的必然结果?
三、Serverless+DevOps =?
四、实战案例分享
一、DevOps的挑战
DevOps的挑战
对于应用交付的整个流程而言 , 通常会涉及三个环节 , 即开发、测试和运维 , 而在传统的组织架构中 , 他们对应的也往往是三个不同的团队 。 这三个环节各自有自己的侧重点 , 但是在实际上 , 想要让整个应用交付过程变得顺滑高效 , 并且让应用在上线后保持高可用的状态 , 往往需要三个团队将相互之间存在的墙打破掉 。
这里的墙不只是组织架构隔阂所带来的障碍 , 还包括三个领域关注点的不同 。 比如开发需要关注可测试性和可运维性 , 这些东西将会深刻地影响应用的架构设计和开发实现 , 如果开发同学没有充分考虑到代码的可测试性 , 那么交给测试同学就会造成很大的问题 , 比如如何实现故障注入和精细流控 , 这都需要在开发时就考虑清楚 。
对于运维而言也是一样的 , 开发的时候也需要考虑到可运维性 , 比如在开发的时候就需要考虑如何在服务实际上下线的时候做到平滑且不丢失数据 , 同时这样的设计也需要和运维系统进行深刻的对接 , 这样才能非常可靠、非常安全地连接起来 , 提升运维的效率 。
阿里内部之前很多故障也都是因为开发和运维之间在设计上面存在信息不一致导致的 , 比如在开发设计时会做三副本的高可靠保证 , 但是在运维侧则可能会认为副本所在的机器没有提供服务因此被错误下线掉 。
所以 , DevOps 实际上包含了两层含义 , 首先是将开发、测试、运维变成一个团队; 其次 , 还需要让整个团队的心智统一 , 这也是DevOps 真正的挑战 。
Serverless对研发效能的变革和创新文章插图
DevOps的挑战-开发
快速回顾一下DevOps每个环节所需要考虑的东西 。 在开发阶段 , 首先需要梳理业务的需求和场景 , 并且将需求转换为系统设计 , 同时需要考虑数据模型如何设计 , 才能够让数据库不成为单点和瓶颈 。 因为在阿里巴巴这样的互联网企业中 , 应用承载了大量的用户访问 , 因此需要考虑复杂均衡、容错设计、流量控制等 。
如果采用了微服务架构 , 应用将由多个服务组成 , 那么还需要考虑服务管理 。 以上全部考虑到之后 , 将其转化为系统设计 , 最后进行开发调试以及单元测试 , 完成了这些之后才可以将应用交给测试环节 。
Serverless对研发效能的变革和创新文章插图
DevOps 的挑战-测试
在测试时需要考虑很多方面和维度 , 保证软件各方面的质量 。 测试包括了集成测试、端到端的 E2E 测试、性能测试、压力测试、容错测试、兼容测试、破坏测试等 。
Serverless对研发效能的变革和创新文章插图
DevOps 的挑战-运维
当应用通过测试之后 , 就产出了一个交付物 , 这个交付物被认为具备了可以发布的能力 , 后续就需要进行运维工作了 , 比如应用灰度发布、升级回滚、服务器上下线、监控报警、安全补丁升级、网路配置、操作审计、生产环境引流等 。
Serverless对研发效能的变革和创新文章插图
DevOps 的挑战-如何降低 DevOps 实施代价?
当我们深入地看 DevOps 中所包含的这些工作项之后 , 其实能够感受到如果想要做一个具有弹性的、高可靠的应用 , 需要考虑的点是非常多的 , 而这些在实施了 DevOps 之后就变成了同一个团队在整个应用生命周期中需要考虑的事情了 。 这对于团队心智和能力的要求是非常高的 。
DevOps 应用交付流水线里面包含了很多环节 , 如何将这些环节非常流畅地串联起来 , 实现自动化也是非常重要的方面 。
Serverless对研发效能的变革和创新文章插图
回顾了 DevOps 的挑战之后 , 通过阿里内部和整个业界的实践可以看到 , 需要通过平台和工具降低 DevOps 的复杂度 。