网站设计哪家最好,个体商户建自己的网站做销售,便宜的seo网络营销推广,西安最新传染病简介#xff1a; 对企业而言#xff0c;Serverless 架构有着巨大的应用潜力。随着云产品的完善#xff0c;产品的集成和被集成能力的加强#xff0c;软件交付流程自动化能力的提高#xff0c;我们相信在 Serverless 架构下#xff0c;企业的敏捷性有 10 倍提升的潜力。 作…简介 对企业而言Serverless 架构有着巨大的应用潜力。随着云产品的完善产品的集成和被集成能力的加强软件交付流程自动化能力的提高我们相信在 Serverless 架构下企业的敏捷性有 10 倍提升的潜力。 作者 | 杨皓然不瞋
对企业而言Serverless 架构有着巨大的应用潜力。随着云产品的完善产品的集成和被集成能力的加强软件交付流程自动化能力的提高我们相信在 Serverless 架构下企业的敏捷性有 10 倍提升的潜力。本次分享我主要分为以下四个方面
一、DevOps 的挑战以及如何降低 DevOps 实施代价 二、为什么 Serverless 是云发展的必然结果 三、Serverless DevOps 四、实战案例分享
DevOps 的挑战
1. DevOps 的挑战
对于应用交付的整个流程而言通常会涉及三个环节即开发、测试和运维而在传统的组织架构中他们对应的也往往是三个不同的团队。这三个环节各自有自己的侧重点但是在实际上想要让整个应用交付过程变得顺滑高效并且让应用在上线后保持高可用的状态往往需要三个团队将相互之间存在的墙打破掉。
这里的墙不只是组织架构隔阂所带来的障碍还包括三个领域关注点的不同。比如开发需要关注可测试性和可运维性这些东西将会深刻地影响应用的架构设计和开发实现如果开发同学没有充分考虑到代码的可测试性那么交给测试同学就会造成很大的问题比如如何实现故障注入和精细流控这都需要在开发时就考虑清楚。
对于运维而言也是一样的开发的时候也需要考虑到可运维性比如在开发的时候就需要考虑如何在服务实际上下线的时候做到平滑且不丢失数据同时这样的设计也需要和运维系统进行深刻的对接这样才能非常可靠、非常安全地连接起来提升运维的效率。
阿里内部之前很多故障也都是因为开发和运维之间在设计上面存在信息不一致导致的比如在开发设计时会做三副本的高可靠保证但是在运维侧则可能会认为副本所在的机器没有提供服务因此被错误下线掉。
所以DevOps 实际上包含了两层含义首先是将开发、测试、运维变成一个团队其次还需要让整个团队的心智统一这也是 DevOps 真正的挑战。 2. DevOps 的挑战 - 开发
快速回顾一下 DevOps 每个环节所需要考虑的东西。在开发阶段首先需要梳理业务的需求和场景并且将需求转换为系统设计同时需要考虑数据模型如何设计才能够让数据库不成为单点和瓶颈。因为在阿里巴巴这样的互联网企业中应用承载了大量的用户访问因此需要考虑复杂均衡、容错设计、流量控制等。
如果采用了微服务架构应用将由多个服务组成那么还需要考虑服务管理。以上全部考虑到之后将其转化为系统设计最后进行开发调试以及单元测试完成了这些之后才可以将应用交给测试环节。 3. DevOps 的挑战 - 测试
在测试时需要考虑很多方面和维度保证软件各方面的质量。测试包括了集成测试、端到端的 E2E 测试、性能测试、压力测试、容错测试、兼容测试、破坏测试等。 4. DevOps 的挑战 - 运维
当应用通过测试之后就产出了一个交付物这个交付物被认为具备了可以发布的能力后续就需要进行运维工作了比如应用灰度发布、升级回滚、服务器上下线、监控报警、安全补丁升级、网路配置、操作审计、生产环境引流等。 5. DevOps 的挑战 - 如何降低 DevOps 实施代价
当我们深入地看 DevOps 中所包含的这些工作项之后其实能够感受到如果想要做一个具有弹性的、高可靠的应用需要考虑的点是非常多的而这些在实施了 DevOps 之后就变成了同一个团队在整个应用生命周期中需要考虑的事情了。这对于团队心智和能力的要求是非常高的。
DevOps 应用交付流水线里面包含了很多环节如何将这些环节非常流畅地串联起来实现自动化也是非常重要的方面。 回顾了 DevOps 的挑战之后通过阿里内部和整个业界的实践可以看到需要通过平台和工具降低 DevOps 的复杂度。 Serverless 简介
1. 云的趋势
在介绍 Serverless 之前首先回顾一下云的发展趋势再来探讨为什么 Serverless 是云发展的必然结果。
在过去的十年间云计算获得了很大的发展其使得用户能够通过 API 的方式非常轻松地获得近乎无限的算力而这些算力是通过虚拟机来呈现的这样的模式存在很多的优点它和应用原来的开发和运行环境是兼容的这种模式能够使得传统遗留应用非常平滑地迁移到云上。
云的第一个阶段就是基础设施云化这里就是云托管模式。基于云上的存储、网络等基础设施来构建应用这种模式的核心价值在于资源的弹性和成本。下一个阶段中云的体系已经远远超越了基础设施能够看到在各个领域都出现了很多的云服务。因此在今天需要考虑如何利用云服务的能力以搭积木的方式来更快速地构建应用而不是重复造轮子这就是云原生的模式。 2. 云的产品体系正在迅速 Serverless 化
目前主流的云计算产商的产品体系也正在迅速地 Serverless 化这并非是对于未来的预测而是实际正在发生的事实。下图中的数据是基于对于 AWS、微软和阿里云的产品所发布的新功能或者新服务形式的统计可以看到绝大多数的新服务都在呈现 Serverless 化。 3. 云编程模型
云计算产生了大量的服务在效能的角度来看这些云服务是在更高层次抽象的 Serverless 形态这就变得非常有意义了。如果从云编程模型的角度重新来审视云产品体系能够看到最底层是基础设施层这一层包含两部分分别是 IaaS 和容器。在基础设施之上就是云原生应用操作系统K8s 是这一层的事实标准它能够把底层 IaaS 基础设施很好地管理起来。在操作系统之上出现了非常丰富的 API也就是全托管的云服务体系。如果看阿里云的产品体系就会发现了阿里云提供了丰富的产品体系包括数据库、大数据、中间件这些都是以 Serverless 全托管模式提供服务的。
在这样具有大量云 API 的情况下今天的问题是如何设计一个通用的计算框架能够与这些 Serverless 的云服务、云 API 产生非常紧密的连接来帮助客户快速构建弹性、高可用应用。因此在框架层就出现了 Serverless 计算其产生的原因最主要是需要和云 API 发生紧密的化学反应帮助用户提升应用构建和运维效率帮助客户构建分布式、数据化、智能化的新一代的云原生应用。 4. 云托管和 Serverless 应用差异
这里对比一下采用云托管的应用和采用 Serverless 的应用最本质的差异在哪里。对于应用而言可以将其构建模式拆分为三层分别是底层基础设施管理、中间的外部服务集成和上层的应用逻辑。如果采用云托管模式实际上是在基础设施层去构建应用应用构建的抽象层次是比较低的因此会带来大量工作用户自己需要整合不同的组件和服务需要进行大量的决策和实现交付的速度会比较慢需要考虑很多的事情而且在运维方面有大量的重复工作。
如果用户采用 Serverless 的模式构建应用也就是相当于在上层 API 的方式构建应用粘合的逻辑和基础设施管理的工作都由云服务商来承担用户所需要整合和决策的代价比较低所需要考虑的主要就是如何将业务逻辑和需求与云服务进行适配来构建应用。基于非常高效的云 API 来构建应用的好处在于构建的成本很低并且能够实现按天、按小时进行交付并且大大降低未来运维的负担。 5. 什么是 Serverless 计算
Serverless 计算具有四个特点首先不需要维护云计算基础设施应用构建的抽象层次上升变得更加高效其次能够实现实时的弹性伸缩这样能够通过未来的数据驱动的负载感知算法能够实现既满足很低的延时也能够实现很高的资源利用率再次计量模式提供了非常细粒度的按需的模式可以实现按秒级计量能够实现完全按需的付费模式对于用户而言资源利用率是 100%最后能够实现高可用将这种能力内置在平台层。 6. 阿里云 Serverless 产品体系
这里做一个说明Serverless 计算只是阿里云 Serverless 产品中的一部分除此之外还包括存储、API、分析、中间件等。因此从这个角度来看Serverless 也不是一个非常新的概念最早的 OSS 对象存储就是一个 Serverless 产品可以看出云产品体系正在 Serverless 化只不过最近几年出现了函数计算这样通用的 Serverless 计算平台进而能够将 Serverless 体系产品连接起来构建一个 Serverless 应用。 Serverless DevOps
当有了这些 Serverless 的能力那么如何将这些能力与 DevOps 结合起来呢
1. 简化基础设施的管理和运维
下图更多地是从如何构建高可用应用的角度来展现。这里将应用的模块分为四个方面包括基础设施、运行时、数据和应用。基础设施层就是需要处理与机器相关的操作比如故障处理。运行时则需要做应用资源隔离、流控等。数据层主要需要和数据库、缓存相关比如如何设计数据库表结构如何设计缓存策略如何实现负载均衡如何保证不会出现横向扩展瓶颈。
在应用层则需要处理与应用相关的操作比如代码包的错误、配置错误、心跳异常的处理。下图中蓝色虚框中的部分可以完全由平台负责用户可以无感知蓝色实框则是平台帮助用户做了大量工作但是还是需要用户感知和作出一定决策红色框则代表还是需要用户自己管理的部分。可以看到在容错方面平台提供了非常强的能力包括多 AZ 的容灾能力、快速的弹性能力、内置的流控能力以及多层次、多维度的监控报警能力。借助于这些能力用户管理基础设施的复杂度就大大降低了。 2. 敏捷的应用角度流程
下图展示了应用交付的流程代码通过统一管理的代码库存储和管理起来再通过持续集成将其变成一个交付物再将其存储到交付物仓库里面。交付物可以是容器镜像也可以是代码包的模式。产出了交付物之后可以自动地将其部署到测试、生产环境中去做版本部署最后实现到生产环境的自动部署。因此这样应用交付流程的关键点在于实现高度自动化而自动化的关键环节有两点分别是基础设施即代码和环节间的自动化串联。 3. 自动化应用交付流水线
下图展现的是自动化应用交付流水线可以看到在下面的每一个环节都需要实现很多的功能而很多都是重复性工作因此需要做到基础设施即代码。 4. 基础设施即代码
下图是基础设施即代码的展示。Serverless 应用模型通过声明来定义应用资源能够实现标准化、自动化和可视化。 可以为模板传入不同参数可以动态生成应用运行环境。 5. 服务版本和灰度发布
在函数计算里面应用有版本的概念版本是一个不可变实体因此杜绝了版本因为非预期的修改造成线上应用受损阿里云通过服务版本和灰度发布避免了这样的问题客户端访问应用通过别名来访问。 6. Serverless 工作流
阿里云提供了 Serverless 工作流方便用户将 DevOps 串联起来用户可以通过配套的服务能力、工具能力快速地创建工作流并且以可视化的方式展现出来能够清楚地看到工作流的效果。 7. 自动化应用交付流水线
回顾一下当有了这些能力之后如何实现自动化应用交付流水线。在源码阶段可以实现代码质量静态检查保证 CheckIn 的代码质量。当 CheckIn 到代码库之后会自动运行单元测试并且产出交付物。在测试的环节通过与阿里云 ROS 的无缝集成能够实现自动化部署到测试环境并且运行测试用例。这些完成之后通过 ReleaseManager 可以确认部署通过工作流将这些任务串联起来发布到预发布环境中并且进一步部署到生产环境中每一个步骤都实现了自动化研发效能得到了极大提升。 8. 日志收集和查询
在 Serverless 计算平台之上原生提供了很多的日志收集和 Metric 收集能力比如简单日志查询以及高级日志查询能够通过日志方式为用户提供高级数据分析能力。 9. 指标收集和可视化能力
Serverless 计算平台除了提供了基本的指标视图之外还支持自定义指标视图用户可以通过自定义的关键词指标搜索实现与业务相关的数据分析。 当 Serverless 和 DevOps 结合之后能够大大提升研发效能一方面大大降低了开发团队的心智负担另外一方面通过工具使得整个 DevOps 流水线能够实现高度自动化。
案例分享
最后分享一些比较成功的案例。阿里 Serverless 计算支撑了阿里经济体小程序平台节省了 40% 研发资源。阿里云 Serverless 支撑语雀使用函数计算实现文档等计算密集型业务大幅度地降低了运维成本还为石墨文档降低了 58% 的运维成本帮助微博提升了研发效能使得功能上线时间从原本的 2 周变为几小时。
可以看到2020 年业界对于 Serverless 的接受度有了极大提升同时Serverless 的能力也变得更加普适。
作者介绍杨皓然不瞋Serverless 计算负责人2010 年加入阿里云深度参与了阿里云飞天分布式系统研发和产品迭代的全过程。对大规模分布式计算大规模数据存储和处理有非常深入的理解。 原文链接 本文为阿里云原创内容未经允许不得转载。