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

image.png

对企业而言,Serverless 架构有着巨大的应用潜力。随着云产品的完善,产品的集成和被集成能力的加强,软件交付流程自动化能力的提高,我们相信在 Serverless 架构下,企业的敏捷性有 10 倍提升的潜力。本次分享我主要分为以下四个方面:
一、DevOps的挑战以及如何降低 DevOps 实施代价?
二、为什么 Serverless 是云发展的必然结果?
三、Serverless+DevOps =?
四、实战案例分享

一、DevOps的挑战

DevOps的挑战

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

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

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

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

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

image.png

DevOps的挑战-开发

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

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

image.png

DevOps 的挑战-测试

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

image.png

DevOps 的挑战-运维

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

image.png

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

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

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

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

二、Serverless简介

云的趋势

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

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

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

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

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

image.png

云编程模型

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

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

image.png

云托管和Serverless应用差异

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

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

image.png

什么是Serverless计算?

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

image.png

阿里云Serverless产品体系

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

三、Serverless DevOps

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

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

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

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

敏捷的应用角度流程

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

image.png

自动化应用交付流水线

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

image.png

基础设施即代码

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

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

服务版本和灰度发布

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

image.png

Serverless工作流

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

image.png

自动化应用交付流水线

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

日志收集和查询

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

指标收集和可视化能力

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

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

四、案例分享

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

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

作者介绍:

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

 

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

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

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

相关文章

java 携带.crt证书 发送https请求

文章目录一、CURL 方式1. 普通参数2. json参数3. 跳过ssl证书校验二、安装证书1. windows2. linux三、java 请求3.1. form和json方法3.2. 跳过证书请求一、CURL 方式 1. 普通参数 curl -d "grant_typepassword&client_idSmartRest&client_secret594a27f3-4432-4…

c3p0 服务启动获取连接超时_微服务架构中的熔断、降级

微服务架构中熔断和降级是保证服务高可用的一项重要功能点,微服务区别于一体化项目的最大区别也再于熔断和降级,很多微服务项目的开发人员对熔断的理解就是当服务不可用的时候,为了让整体服务可以正常运行,需要让后续的请求直接返…

重塑APM标杆,博睿数据战略升级助力企业数字化转型

(博睿数据发布仪式) 2021年5月26日,由博睿数据举办的“服务可达 达者为先博睿数据2021年战略升级发布巡展”北京站,在北京金茂威斯汀大饭店圆满举行!本次战略升级发布巡展不仅揭开了“数据链DNA”的神秘面纱&#xff…

持续定义SaaS模式云数据仓库+数据银行

简介: 本文将介绍SaaS模式云数据仓库MaxCompute,如何助力数据银行SaaS模式云战略和一体化数据开放场景介绍。 一、云数据仓库 本章节介绍云数据仓库带来的价值及解决方案。 MaxCompute:SaaS模式企业级云数据仓库的应用场景包括广告场景-用…

2020-10-28

Kubernetes的门户-Ingress 目前Kubernetes(K8s)已经真正地占领了容器编排市场,是默认的云无关计算抽象,越来越多的企业开始将服务构建在K8s集群上。在K8s中,组件通过Service对外暴露服务,常见的包括NodePo…

centos 查找nginx_Linux下查看Nginx安装目录、版本号信息及当前运行的配置文件

Linux环境下,怎么确定Nginx是以那个config文件启动的?输入命令行: ps -ef | grep nginx摁回车,将出现如下图片:master process 后面的就是 nginx的目录。怎么查看服务器上安装的nginx版本号,主要是通过ngi…

530并行日:用超算更省心

科技兴,则民族兴;科技强,则国家强。 从“神舟”飞天、“蛟龙”入海、“天眼”遥看宇宙,到“嫦娥”奔月、“天问”探火、“量子”惊叹世界,这些世人瞩目的科技成就背后,是一代又一代的中国科技工作者前赴后继…

Flink SQL 1.11 on Zeppelin 平台化实践

简介: 鉴于有很多企业都无法配备专门的团队来解决 Flink SQL 平台化的问题,那么到底有没有一个开源的、开箱即用的、功能相对完善的组件呢?答案就是本文的主角——Apache Zeppelin。 作者:LittleMagic 大数据领域 SQL 化开发的风…

控件设置相对位置_惊人的Divi转换控件!

Divi的变换控件释放了许多新的设计可能你可以使用一系列新设计选项来执行惊人的设计,而到目前为止,只有在诸如Photoshop之类的图形设计程序中才可以这样操作。Divi引入了一项全新功能,该功能允许在Divi Builder中进行惊人的徒手设计&#xff…

第三代英特尔至强可扩展处理器,英特尔数据中心的“芯法宝”

作者 | 宋 慧 出品 | CSDN云计算 头图 | 付费下载于东方IC 距离英特尔发布第三代至强可扩展处理器Ice Lake的全系列产品,已经过去一个多月了。全新一代的至强处理器除了核数增加、性能提升与架构升级以外,还首次将SGX英特尔软件防护扩展技术&#xff08…

谈谈我对零售云在云原生总结与思考

简介: 云原生是零售云的最重要的技术底座,云原生是什么,会走向哪里,在零售2B交付的场景上该如何应用,怎么能够结合帮助建设零售云系列产品体系,值得我们的思考和探索,也将有效指导我们接下来几年…

oracle查看编码

select * from nls_database_parameters where parameter NLS_CHARACTERSET;

类选择器遍历赋值_利用反射实现配置表数据到类对象数据的转换

在游戏开发中,配置表是不可少的。通常我们将一个类,做成一个配置表,将配置表每列的索引都和类的字段名严格对应起来。先实例化一个类的对象,然后通过反射来遍历类中的字段,通过field.SetValue()给类的对象赋值。但是配…

人工智能如何提升大数据存储与管理效率?

简介: 通过使用AI数据存储,供应商和企业可以将存储管理提升到一个新的水平。而且,存储管理员可以找到他们目前正在努力管理的指标的解决方案。 随着大数据的大量来源以及企业可用数据量的增加,存储容量规划已成为存储管理员的问题…

wildfly10 (JBoss)如何部署SSL证书

文章目录1. 证书下载2. 证书配置2. 效果验证项目用的wildfly-10.1.0.Final。需要用到SSL证书,把部署过程记录下来,以供参考。1. 证书下载 本文的证书申请都来自阿里云。 1.首先把你的域名做好解析。 2.从阿里云上下载申请的SSL证书,类型选择…

奇点云集聚数据中台优势,加速企业数智化升级

作者 | 寇雪芹 出品 | CSDN云计算 头图 | 下载于视觉中国 近日,以“应云而生 原力觉醒”为主题的 StartDT Day 数据技术大会在杭州举办。会上,奇点云发布了最新的数据技术战略“跨平台、云原生、自主可控”、云原生数据中台 DataSimba R3.0、消费者数字…

2020-10-29

简介: 世上没有免费的午餐,微服务技术让 IT 系统变得更敏捷、更健壮、更高性能的同时,也带来了架构复杂度的提升。对于开发者而言,要想更好的驾驭微服务架构,需要解决持续集成、服务发现、应用通信、配置管理、流量防护…

状态码202_至少 10 个 HTTP 状态码

HTTP状态码(英语:HTTP Status Code)是用以表示网页服务器超文本传输协议响应状态的3位数字代码。HTTP状态码 HTTP状态码总的分为五类:1开头:信息状态码2开头:成功状态码3开头:重定向状态码4开头…

玩转 IntelliJ IDEA 2020

文章目录一、基础软件集成配置系列1. 常用快捷键2. IDEA 配置JDK项目应用 JDK3. IDEA 配置 Maven4. IDEA 配置 TOMCAT5. IDEA配置 Git6. IDEA配置的导入导出7. IDEA控制台输出乱码8. IDEA注释模板9. IDEA xml模板10. IDEA 高效开发11. SpringBoot 集成 MyBatisPlus 模板12. Spr…

CSDN 独家对话阿里云贾扬清、华先胜等大咖,剧透阿里云原生技术密码

新一轮科技革命和产业变革正重塑全球发展格局,以云计算为代表的新一代信息技术相互渗透,成为数字经济智能和创新发展新引擎。过去 12 年,人们对云计算的讨论从原来的“为什么上云”,到“为什么不上云”,再到如今探索“…