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

简介: 对企业而言,Serverless 架构有着巨大的应用潜力。随着云产品的完善,产品的集成和被集成能力的加强,软件交付流程自动化能力的提高,我们相信在 Serverless 架构下,企业的敏捷性有 10 倍提升的潜力。

头图.jpg

作者 | 杨皓然(不瞋)

对企业而言,Serverless 架构有着巨大的应用潜力。随着云产品的完善,产品的集成和被集成能力的加强,软件交付流程自动化能力的提高,我们相信在 Serverless 架构下,企业的敏捷性有 10 倍提升的潜力。本次分享我主要分为以下四个方面:

一、DevOps 的挑战以及如何降低 DevOps 实施代价?
二、为什么 Serverless 是云发展的必然结果?
三、Serverless + DevOps =?
四、实战案例分享

DevOps 的挑战

1. DevOps 的挑战

对于应用交付的整个流程而言,通常会涉及三个环节,即开发、测试和运维,而在传统的组织架构中,他们对应的也往往是三个不同的团队。这三个环节各自有自己的侧重点,但是在实际上,想要让整个应用交付过程变得顺滑高效,并且让应用在上线后保持高可用的状态,往往需要三个团队将相互之间存在的墙打破掉。

这里的墙不只是组织架构隔阂所带来的障碍,还包括三个领域关注点的不同。比如开发需要关注可测试性和可运维性,这些东西将会深刻地影响应用的架构设计和开发实现,如果开发同学没有充分考虑到代码的可测试性,那么交给测试同学就会造成很大的问题,比如如何实现故障注入和精细流控,这都需要在开发时就考虑清楚。

对于运维而言也是一样的,开发的时候也需要考虑到可运维性,比如在开发的时候就需要考虑如何在服务实际上下线的时候做到平滑且不丢失数据,同时这样的设计也需要和运维系统进行深刻的对接,这样才能非常可靠、非常安全地连接起来,提升运维的效率。

阿里内部之前很多故障也都是因为开发和运维之间在设计上面存在信息不一致导致的,比如在开发设计时会做三副本的高可靠保证,但是在运维侧则可能会认为副本所在的机器没有提供服务因此被错误下线掉。

所以,DevOps 实际上包含了两层含义,首先是将开发、测试、运维变成一个团队;其次,还需要让整个团队的心智统一,这也是 DevOps 真正的挑战。

1.png

2. DevOps 的挑战 - 开发

快速回顾一下 DevOps 每个环节所需要考虑的东西。在开发阶段,首先需要梳理业务的需求和场景,并且将需求转换为系统设计,同时需要考虑数据模型如何设计,才能够让数据库不成为单点和瓶颈。因为在阿里巴巴这样的互联网企业中,应用承载了大量的用户访问,因此需要考虑复杂均衡、容错设计、流量控制等。

如果采用了微服务架构,应用将由多个服务组成,那么还需要考虑服务管理。以上全部考虑到之后,将其转化为系统设计,最后进行开发调试以及单元测试,完成了这些之后才可以将应用交给测试环节。

2.png

3. DevOps 的挑战 - 测试

在测试时需要考虑很多方面和维度,保证软件各方面的质量。测试包括了集成测试、端到端的 E2E 测试、性能测试、压力测试、容错测试、兼容测试、破坏测试等。

3.png

4. DevOps 的挑战 - 运维

当应用通过测试之后,就产出了一个交付物,这个交付物被认为具备了可以发布的能力,后续就需要进行运维工作了,比如应用灰度发布、升级回滚、服务器上下线、监控报警、安全补丁升级、网路配置、操作审计、生产环境引流等。

4.png

5. DevOps 的挑战 - 如何降低 DevOps 实施代价?

当我们深入地看 DevOps 中所包含的这些工作项之后,其实能够感受到如果想要做一个具有弹性的、高可靠的应用,需要考虑的点是非常多的,而这些在实施了 DevOps 之后就变成了同一个团队在整个应用生命周期中需要考虑的事情了。这对于团队心智和能力的要求是非常高的。

DevOps 应用交付流水线里面包含了很多环节,如何将这些环节非常流畅地串联起来,实现自动化也是非常重要的方面。

5.png

回顾了 DevOps 的挑战之后,通过阿里内部和整个业界的实践可以看到,需要通过平台和工具降低 DevOps 的复杂度。

6.png

Serverless 简介

1. 云的趋势

在介绍 Serverless 之前,首先回顾一下云的发展趋势,再来探讨为什么 Serverless 是云发展的必然结果。

在过去的十年间,云计算获得了很大的发展,其使得用户能够通过 API 的方式非常轻松地获得近乎无限的算力,而这些算力是通过虚拟机来呈现的,这样的模式存在很多的优点,它和应用原来的开发和运行环境是兼容的,这种模式能够使得传统遗留应用非常平滑地迁移到云上。

云的第一个阶段就是基础设施云化,这里就是云托管模式。基于云上的存储、网络等基础设施来构建应用,这种模式的核心价值在于资源的弹性和成本。下一个阶段中,云的体系已经远远超越了基础设施,能够看到在各个领域都出现了很多的云服务。因此,在今天需要考虑如何利用云服务的能力,以搭积木的方式来更快速地构建应用,而不是重复造轮子,这就是云原生的模式。

7.png

2. 云的产品体系正在迅速 Serverless 化

目前,主流的云计算产商的产品体系也正在迅速地 Serverless 化,这并非是对于未来的预测,而是实际正在发生的事实。下图中的数据是基于对于 AWS、微软和阿里云的产品所发布的新功能或者新服务形式的统计,可以看到绝大多数的新服务都在呈现 Serverless 化。

8.png

3. 云编程模型

云计算产生了大量的服务,在效能的角度来看,这些云服务是在更高层次抽象的 Serverless 形态,这就变得非常有意义了。如果从云编程模型的角度重新来审视云产品体系,能够看到最底层是基础设施层,这一层包含两部分,分别是 IaaS 和容器。在基础设施之上就是云原生应用操作系统,K8s 是这一层的事实标准,它能够把底层 IaaS 基础设施很好地管理起来。在操作系统之上出现了非常丰富的 API,也就是全托管的云服务体系。如果看阿里云的产品体系,就会发现了阿里云提供了丰富的产品体系,包括数据库、大数据、中间件,这些都是以 Serverless 全托管模式提供服务的。

在这样具有大量云 API 的情况下,今天的问题是如何设计一个通用的计算框架能够与这些 Serverless 的云服务、云 API 产生非常紧密的连接来帮助客户快速构建弹性、高可用应用。因此在框架层就出现了 Serverless 计算,其产生的原因最主要是需要和云 API 发生紧密的化学反应,帮助用户提升应用构建和运维效率,帮助客户构建分布式、数据化、智能化的新一代的云原生应用。

9.png

4. 云托管和 Serverless 应用差异

这里对比一下采用云托管的应用和采用 Serverless 的应用最本质的差异在哪里。对于应用而言,可以将其构建模式拆分为三层,分别是底层基础设施管理、中间的外部服务集成和上层的应用逻辑。如果采用云托管模式,实际上是在基础设施层去构建应用,应用构建的抽象层次是比较低的,因此会带来大量工作,用户自己需要整合不同的组件和服务,需要进行大量的决策和实现,交付的速度会比较慢,需要考虑很多的事情,而且在运维方面有大量的重复工作。

如果用户采用 Serverless 的模式构建应用,也就是相当于在上层 API 的方式构建应用,粘合的逻辑和基础设施管理的工作都由云服务商来承担,用户所需要整合和决策的代价比较低,所需要考虑的主要就是如何将业务逻辑和需求与云服务进行适配来构建应用。基于非常高效的云 API 来构建应用的好处在于构建的成本很低,并且能够实现按天、按小时进行交付,并且大大降低未来运维的负担。

10.png

5. 什么是 Serverless 计算?

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

11.png

6. 阿里云 Serverless 产品体系

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

12.png

Serverless DevOps

当有了这些 Serverless 的能力,那么如何将这些能力与 DevOps 结合起来呢?

1. 简化基础设施的管理和运维

下图更多地是从如何构建高可用应用的角度来展现。这里将应用的模块分为四个方面:包括基础设施、运行时、数据和应用。基础设施层就是需要处理与机器相关的操作,比如故障处理。运行时则需要做应用资源隔离、流控等。数据层主要需要和数据库、缓存相关,比如如何设计数据库表结构,如何设计缓存策略,如何实现负载均衡,如何保证不会出现横向扩展瓶颈。

在应用层,则需要处理与应用相关的操作,比如代码包的错误、配置错误、心跳异常的处理。下图中蓝色虚框中的部分可以完全由平台负责,用户可以无感知;蓝色实框则是平台帮助用户做了大量工作,但是还是需要用户感知和作出一定决策;红色框则代表还是需要用户自己管理的部分。可以看到,在容错方面,平台提供了非常强的能力,包括多 AZ 的容灾能力、快速的弹性能力、内置的流控能力以及多层次、多维度的监控报警能力。借助于这些能力,用户管理基础设施的复杂度就大大降低了。

13.png

2. 敏捷的应用角度流程

下图展示了应用交付的流程,代码通过统一管理的代码库存储和管理起来,再通过持续集成将其变成一个交付物,再将其存储到交付物仓库里面。交付物可以是容器镜像,也可以是代码包的模式。产出了交付物之后,可以自动地将其部署到测试、生产环境中去做版本部署,最后实现到生产环境的自动部署。因此这样应用交付流程的关键点在于实现高度自动化,而自动化的关键环节有两点:分别是基础设施即代码和环节间的自动化串联。

14.png

3. 自动化应用交付流水线

下图展现的是自动化应用交付流水线,可以看到在下面的每一个环节都需要实现很多的功能,而很多都是重复性工作,因此需要做到基础设施即代码。

15.png

4. 基础设施即代码

下图是基础设施即代码的展示。Serverless 应用模型通过声明来定义应用资源,能够实现标准化、自动化和可视化。

16.png

可以为模板传入不同参数,可以动态生成应用运行环境。

17.png

5. 服务版本和灰度发布

在函数计算里面,应用有版本的概念,版本是一个不可变实体,因此杜绝了版本因为非预期的修改造成线上应用受损,阿里云通过服务版本和灰度发布避免了这样的问题,客户端访问应用通过别名来访问。

18.png

6. Serverless 工作流

阿里云提供了 Serverless 工作流方便用户将 DevOps 串联起来,用户可以通过配套的服务能力、工具能力快速地创建工作流,并且以可视化的方式展现出来,能够清楚地看到工作流的效果。

19.png

7. 自动化应用交付流水线

回顾一下当有了这些能力之后,如何实现自动化应用交付流水线。在源码阶段,可以实现代码质量静态检查,保证 CheckIn 的代码质量。当 CheckIn 到代码库之后,会自动运行单元测试,并且产出交付物。在测试的环节,通过与阿里云 ROS 的无缝集成能够实现自动化部署到测试环境,并且运行测试用例。这些完成之后,通过 ReleaseManager 可以确认部署,通过工作流将这些任务串联起来,发布到预发布环境中,并且进一步部署到生产环境中,每一个步骤都实现了自动化,研发效能得到了极大提升。

20.png

8. 日志收集和查询

在 Serverless 计算平台之上,原生提供了很多的日志收集和 Metric 收集能力,比如简单日志查询以及高级日志查询,能够通过日志方式为用户提供高级数据分析能力。

21.png

9. 指标收集和可视化能力

Serverless 计算平台除了提供了基本的指标视图之外,还支持自定义指标视图,用户可以通过自定义的关键词指标搜索实现与业务相关的数据分析。

22.png

当 Serverless 和 DevOps 结合之后,能够大大提升研发效能,一方面大大降低了开发团队的心智负担;另外一方面,通过工具使得整个 DevOps 流水线能够实现高度自动化。

案例分享

最后分享一些比较成功的案例。阿里 Serverless 计算支撑了阿里经济体小程序平台,节省了 40% 研发资源。阿里云 Serverless 支撑语雀使用函数计算实现文档等计算密集型业务,大幅度地降低了运维成本,还为石墨文档降低了 58% 的运维成本,帮助微博提升了研发效能,使得功能上线时间从原本的 2 周变为几小时。

可以看到,2020 年业界对于 Serverless 的接受度有了极大提升,同时,Serverless 的能力也变得更加普适。

作者介绍:杨皓然(不瞋),Serverless 计算负责人,2010 年加入阿里云,深度参与了阿里云飞天分布式系统研发和产品迭代的全过程。对大规模分布式计算,大规模数据存储和处理有非常深入的理解。

 

原文链接
本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/514810.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

查看mysql服务的可视化_Prometheus 监控Mysql服务器及Grafana可视化

Prometheus 监控Mysql服务器及Grafana可视化、mysql_exporter:用于收集MySQL性能信息。使用版本mysqld_exporter 0.11.0官方地址使用文档:https://github.com/prometheus/mysqld_exporter图标模板:https://grafana.com/dashboards/7362下载地…

SprinBoot 集成 Flowable/Activiti工作流引擎

文章目录一、 Flowable工作流引擎1. flow2. flowable3. cims4. RuoYi-flowable5. springboot-flowable-modeler6. flowable-diagram二、Activiti 工作流引擎2.1. RuoYi-Vue-Process2.2. RuoYi-Process2.3. ruoyi-vue-activiti2.4. activiti7-workflow2.5. JeeSite4 JFlow2.6. a…

持续定义Saas模式云数据仓库+实时分析

简介: 从实时分析的价值、场景和数据流程,以及用户对平台能力要求展开,讲述云数据仓库MaxCompute的产品能力优势 ,面对实时分析场景的能力演进要求。进而以实时分析典型场景的全数据流程处理、建模和分析的最佳实践,讲…

超 8 成软件存已知高危开源漏洞,奇安信发布《2021 中国软件供应链安全分析报告》

编辑 | 宋 慧 出品 | CSDN云计算 头图 | 付费下载于东方IC 2020年底,SolarWinds 遭受的大规模网络攻击,使得美国和多国政府在内的 18000 机构被影响。几乎每个月,软件供应链都在遭受黑客攻击。 而从软件端看,“检测发现&#xf…

前后端分离 常用工具汇总

文章目录一、数据框架1. vue2. react二、UI框架2.1. element2.2. element-plus2.3. Ant Design Vue2.4. Ant Design of React2.5. Bootstrap三、工具3.1. Fast Mock3.2. Easy Mock3.3. Mock语法/案例一、数据框架 1. vue https://cn.vuejs.org/ 2. react https://react.do…

Fluid 0.3 新版本正式发布:实现云原生场景通用化数据加速

简介: 为了解决大数据、AI 等数据密集型应用在云原生计算存储分离场景下,存在的数据**访问延时高、联合分析难、多维管理杂**等痛点问题,南京大学 PASALab、阿里巴巴、Alluxio 在 2020 年 9 月份联合发起了开源项目 Fluid。近期我们更新了0.3…

mysql 主从 跳过_mysql主从同步如何跳过错误

mysql主从同步跳过错误的方法:1、跳过指定数量的事务,代码为【mysql>SET GLOBAL SQL_SLAVE_SKIP..】;2、修改mysql的配置文件,通过【slave_skip_errors】参数来跳所有错误。本教程操作环境:windows7系统、mysql 5.6…

模拟驾驶能力输出,赋能客户提升稳定性信心

简介: 模拟驾驶能力输出,赋能客户提升稳定性信心 1.背景 我们技术服务团队经常会遇到这样的状况,随时随地收到紧急电话,开始紧张地排查问题,处理故障以及恢复服务。硬盘故障、网络不通、大量不到终态、水位高、流量激…

微服务如何拆分,能解决哪些问题?

作者 | 修冶来源 | 阿里巴巴中间件头图 | 下载于ICphoto微服务在最近几年大受欢迎,很多公司的研发人员都在考虑微服务架构,同时,随着 Docker 容器技术和自动化运维等相关技术发展,微服务变得更容易管理,这给了微服务架…

Tair持久存储系列技术解读

简介: 阿里云数据库重磅发布自研Tair持久存储系列的产品打破了传统Redis中的数据只能在易失性存储上进行读写的刻板印象,针对客户不同业务阶段的数据存储要求与服务成本考量,全新实现了持久性更强、成本更低的KV数据库。 Redis做为当今主流的…

Serverless X OpenKruise 部署效率优化之道

简介: 相信在不久的将来,SAE 的极致弹性,无论在弹性效率,弹性规模,还是智能精准等方面都会大放异彩。 作者 | 许成铭(竞霄) Serverless 作为云计算的最佳实践、云原生发展的方向和未来演进趋势…

重磅来袭 | 移动云城市峰会分论坛暨移动云TeaTalk青岛站 即将开启

随着大数据技术不断演进和应用持续深化,以数据为核心的大数据产业生态正在加速构建。6月10日,移动云城市峰会将在青岛举办。届时,“云数融通,驱动未来”分论坛暨移动云TeaTalk青岛站 也将同步重磅开启。分论坛将围绕移动云核心数据…

2020阿里云双11--0.73折起,爆款提前抢大促全攻略

2020阿里云双11大促活动于10月24日正式开启,此次双11阿里云将有哪些亮点活动,此篇文章将一网打尽。大家一定要关注,此文会一直更新到活动结束。 从活动页面来看,阿里云双11上云狂欢节活动分为三个阶段: 10月24日-10月…

linux共享软件_为什么 linux 要用 tar.gz,很少用 7z 或 zip?

因为 7z 和 zip 压缩格式都不能保留 unix 风格的文件权限,比如解压出个可执行文件要重新 chmod chown 才能恢复正常。而 tar 格式可以。而 tar 本身不提供压缩,无非就是把包括所有文件的內容和权限拼成一个文件而己,所以用另外如 gzip 格式压…

端应用研发进入云原生时代

简介: 随着技术的发展和各种用户端场景的涌现,业务前台形式变得更加多样,“面向多样化的端场景提供无缝的、一致的数字用户旅程”已经成为了新时代企业应用架构的关键目标,同时它也是当下大前端技术发展背后的核心业务牵引。基于阿…

关于卫星定位,你想知道的一切

简介: 本文将简要介绍卫星定位的原理和应用情况,方便大家对北斗、卫星定位有更多的了解。 5G和北斗,是国之重器。北斗作为卫星定位系统,目前在国际上已处于领先地位,而且已经渗透到我们工作和生活的方方面面。本文将简…

拯救运维工程师,数据链 DNA 来袭!

在《凤凰项目——一个IT运维的传奇故事》一书中讲述运维工程师的常态: A工程师:“是的,我们复制了你给的那个文件……是的,就是1.0.13版……你说那个版本是错的,这话是什么意思……什么?你什么时候把它改了…

jre for mac 删除_在 Mac 的 Docker Desktop 中运行 K8s

Docker Desktop for Mac 从 Docker Community Edition 18.06.0-ce-mac70 2018-07-25 版本起,添加了对 Kubernetes 的支持,可以方便的在 Mac 上运行一个单节点的 K8s 集群。在 Docker Desktop 的 Preferences 中的 Kubernetes 页面里,提供了一…

阳振坤:OceanBase 数据库七亿 tpmC 的关键技术

OB君:2020年9月25日,OceanBase在外滩大会举办的“数据库,新标杆,新征途”分论坛正式落幕,内容涵盖数据库的趋势探讨、分布式数据库的技术创新与行业应用,及国内数据库的发展与生态。欢迎持续关注本系列内容…

数百万台车联网设备同时在线0故障,中瑞集团的云原生探索之路 | 云原生Talk

简介: 在保持对业界趋势调度关注的同时,始终选用最适合自身的技术,这可能是中瑞能在车联网领域引领行业的重要原因之一,正如中瑞CTO所说“阿里云云原生产品体系带给我们的,不是单纯的IT工具,而是整个团队战…