Serverless 时代 DevOps 的最佳打开方式

简介: 传统软件开发过程中,开发和运维是极其分裂的两个环节,运维人员不关心代码是怎样运作的,开发人员也不知道代码是如何运行的。

头图.png

 

作者 | 许成铭(竞霄)
来源 | 阿里巴巴云原生公众号

DevOps 简析

传统软件开发过程中,开发和运维是极其分裂的两个环节,运维人员不关心代码是怎样运作的,开发人员也不知道代码是如何运行的。

而对于互联网公司而言,其业务发展迅速,需要快速更新以满足用户差异化的需求或者竞对的产品策略,需要进行产品的快速迭代,通过小步快跑的方式进行敏捷开发。

对于这种每周发布 n 次甚至每天发布 n 次的场景,高效的协作文化就显得尤为重要。DevOps 就在这种场景下应运而生,它打破了开发人员和运维人员之间的壁垒。

1.jpg

DevOps 是一种重视“软件开发人员(Dev)”和“IT 运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。通过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。

1-1.jpg

 

上图是一个完整的软件开发生命周期,DevOps 运动的主要特点是倡导对构建软件的整个生命周期进行全面的管理。

DevOps 工程师的职责

  • 管理应用的全生命周期,比如需求、设计、开发、QA、发布、运行;
  • 关注全流程效率提升,挖掘瓶颈点并将其解决;
  • 通过标准化、自动化、平台化的工具来解决问题。

DevOps 的关注点在于缩短开发周期,增加部署频率,更可靠地发布。通过将 DevOps 的理念引入到整个系统的开发过程中,能够显著提升软件的开发效率,缩短软件交付的周期,更加适应当今快速发展的互联网时代。

Serverless 简析

2.jpg

上图左侧是谷歌趋势,对比了 Serverless 和微服务的关键词趋势走向,可看出随着时间变化,Serverless 的热度已经逐渐超过微服务,这说明全世界的开发人员及公司对 Serverless 非常青睐。

那 Serverless 究竟是什么?上图右侧是软件逻辑架构图,有开发工程师写的应用,也有应用部署的 Server(服务器),还有 Server 的维护操作,比如资源申请、环境搭建、负载均衡、扩缩容、监控、日志、告警、容灾、安全、权限等。而 Serverless 实际上是把 Server 的维护工作屏蔽了,对于开发者是黑盒,这些工作都由平台方支持,对业务来说只需关注核心逻辑即可。

总得来说,Serverless 架构是“无服务器”架构,是云计算时代的一种架构模式,能够让开发者在构建应用的过程中无需关注计算资源的获取和运维,降低运营成本,缩短上线时间。

Serverless 时代 DevOps 的变化

1. Serverless 的特性

3.jpg

上图左侧为 2020 年中国云原生用户调查报告中 Serverless 技术在国内的采用情况,图中显示近三成用户已经把 Serverless 应用在生产环境中,16% 的用户已经将 Serverless 应用在核心业务的生产环境,12% 的用户也已经在非核心业务的生产环境中用到 Serverless,可见国内对 Serverless 接受度较高。

上图右侧为咨询公司 O'Reilly 对全球不同地区不同行业的公司进行的调查报告结果,图中显示一马当先使用 Serverless 架构的就是 DevOps 人员。

那么当 Serverless 遇上 DevOps,会发生哪些变化呢?首先我们看一下云原生架构白皮书中对 Serverless 特性的归纳总结:

  • 全托管的计算服务  

用户只需要编写自己的代码来构建应用,无需关注同质化的复杂的基础设施的开发运维工作。

  • 通用性

能够在云上构建普适的各种类型应用。

  • 自动的弹性伸缩

用户无需对资源进行预先的容量规划,业务如果有明显的波峰波谷或临时容量需求,Serverless 平台都能够及时且稳定地提供对应资源。

  • 按量计费

企业可以使成本管理更加有效,不用为闲置资源付费。

Serverless 让运维行为对开发透明,开发人员只需关注核心业务逻辑的开发,进而精益整个产品开发流程,快速适应市场变化。而上述 Serverless 的这些特性与 DevOps 的文化理念及目标是天然契合的。

2. Serverless 开发运维体验

4.jpg

传统应用构建的流程中,DevOps 人员管理整个生命周期的步骤非常多:

  • 在资源准备阶段,要购买 ECS 进行机器初始化等系列操作;
  • 在研发部署阶段,需要把业务应用、监控系统、日志系统等旁路系统部署在 ECS 上;
  • 在运维阶段,你不仅需要运维自己的应用,还需运维 Iaas 及其他旁路的监控、日志、告警组件。

而如果迁到 Serverless,其开发体验是怎么样的呢?

  • 在资源准备阶段,不需要任何资源准备,因为 Serverless 是按需使用、按量付费的,不用关注底层 Server;
  • 在研发部署阶段,只需要将自己的业务部署到对应的 Serverless 平台上;
  • 在运维阶段,彻底做到了免运维。

可以看到,传统应用构建流程中的 Iaas 及监控、日志、告警,在 Serverless 上完全没有,它以全托管、免运维的形式展现给用户。

Serverless 时代 DevOps 的最佳实践

上文介绍的体验其实就是基于阿里云的一款 Serverless 产品——SAE 来实现的。Serverless 应用引擎(SAE)是阿里云 Serverless 产品矩阵中提供的 DevOps 最佳实践。先简单介绍一下 SAE:

1. Serverless 应用引擎(SAE)

SAE 是一款面向应用 Serverless PaaS 平台,支持 Spring Cloud、Dubbo、HSF 等主流的应用开发框架。用户可以零代码改造,直接将应用部署到 SAE 上,并且按需使用、按量付费、秒级弹性,可以充分发挥 Serverless 的优势,为用户节省闲置的资源成本。

5.jpg

 

在体验上,SAE 采用全托管、免运维的方式,用户可以聚焦于核心的业务逻辑开发,而应用的整个生命周期管理,如监控、日志、告警,这些都由 SAE 完成。可以说,SAE 提供了一个成本更优、效率更高的一站式应用托管方案,用户可以做到零门槛、零改造、零容器基础就可以享受到 Serverless 带来的技术红利。

Serverless 应用引擎(SAE)三大特点:

  • 0 代码改造:微服务无缝迁移,开箱即用,支持 War/Jar 自动构建镜像;
  • 15s 弹性效率:应用端到端快速扩容,应对突发流量;
  • 57% 降本提效:多套环境按需启停,降本且提效。

2. 构建高效闭环的 DevOps 体系

SAE 内构建了高效闭环 DevOps 体系,覆盖开发态、部署态和运维态的整个过程。

6.jpg

中大型企业一般都使用企业级的 CICD 工具(如 Jenkins 或云效)部署到 SAE,从而完成从源码到构建再到部署的整个流程。

对于个人开发者或者中小企业,更倾向于使用 Maven 插件或 IDEA 插件一键部署到云端,方便本地调试,也提升了整个的用户体验。

当部署到 SAE 之后,可以进行可视化的智能运维操作,比如高可用运维(服务治理、性能压测、限流降级等)、应用诊断(线程诊断、日志诊断、数据库诊断等)以及数据化运营。以上操作都是部署到 SAE 之后,用户可以开箱即用的现成的功能。

用户通过 SAE 可以非常方便地实现整体的开发运维流程,感受 Serverless 带来的全方位体验和效率上的提升。下面介绍几个 SAE 的最佳实践:

3. 部署态最佳实践:CI/CD

7.jpg

 

SAE 目前支持三种部署方式,分别是 War、Jar 和镜像

如果用户使用 Spring Cloud、Dubbo 或 HSF 这类应用,可以直接打包或者填写对应的 URL 地址,就可以直接部署到 SAE 上。而对于非 Java 语言的场景,可以通过镜像方式进行部署。后续我们也会支持其他的语言包以自动化构建的方式进行部署。

8.jpg

除了直接部署之外,SAE 也支持本地部署、云效部署和自建部署这三种方式

本地部署依赖 CloudToolkit 插件,对 IDEA/Eclipse 进行了支持,用户可以在 IDEA 里一键部署到 SAE 上,无需登录,方便地进行自动化操作。

云效部署是阿里云提供的企业级一体化 CICD 平台型产品,通过云效可以监听代码库的变动,如果进行 Push 操作,就会触发云效的整个发布流程。比如进行代码检查或者单元测试,在对这个代码进行编译、打包、构建,构建好后会生成对应的构建物,之后它会调用 SAE 的 API,然后执行整体的部署操作。这一整套流程也是开箱即用的,用户只需要在云效控制台上进行可视化配置就可以把整个流程串起来。

自建部署指用户的公司如果是直接通过 Jenkins 进行构建的话,也可以直接使用 SAE。Jenkins 作为开源的最大的 CICD 平台,我们也提供了有力支持,许多用户也通过 Jenkins 成功地部署到 SAE 上。

4. 部署态最佳实践:应用发布三板斧

应用发布三板斧包括:可灰度、可监控、可回滚。在阿里内部所有的变更都需要严格做到上述的“三板斧”,而 SAE 作为一款云产品,也是把阿里巴巴的最佳实践对外输出进行产品化的集成。

  • 可灰度:支持单批、分批、金丝雀等多种发布策略;支持按流量灰度,批次间自动/手动发布,分批间隔等多种发布选项;
  • 可监控:发布过程中清晰对比不同批次基础监控与应用监控指标异动,及时暴露问题,定位变更风险;
  • 可回滚:在发布过程中,允许人工介入控制发布流程,如异常中止、一键回滚。

9.jpg

10.jpg

上图为控制台截图,可以看到在部署上我们支持单批、分批和灰度三种方式进行发布。

执行发布的过程都是通过发布端进行,每个发布端都有具体的步骤,首先进行构建镜像,然后初始化环境,接着创建和更新部署配置。用户可以清晰地看到发布端当前的运行进度与状态,方便排查。

5. 运维态最佳实践:全方位可观测

SAE 提供全方位可观测,可以对分布式系统中的任何变化进行观测。当系统出现问题时,可以便捷地定位问题、排查问题、分析问题;当系统平稳运行时,也可以提前暴露风险,预测可能出现的问题。通过 SAE 用户可以对自己的应用了如指掌。

11.jpg

 

这里列举了可观测性的三个方面:Metrics、Logging 、Tracing。

  • Metrics

代表聚合的数据,SAE 提供如下基础监控指标:

1)基础监控:CPU、MEM、Load、Network、Disk、IO;
2)应用监控:QPS、RT、异常数、HTTP 状态码、JVM 指标;
3)监控告警:丰富的告警源上报、告警收敛处理、多种告警渠道触达(如邮箱、短信、电话等)。

12.jpg

 

  • Logging

代表离散的数据,提供以下功能:

1)实时日志:Stdout、Stderr 实时查看;
2)文件日志:自定义采集规则、持久化存储、高效查询;
3)事件:发布单变更事件、应用生命周期事件、事件通知回调机制。

13.jpg

  • Tracing

意味着可以按请求维度进行排查,提供如下开箱即用的功能:

1)请求调用链堆栈查询;
2)应用拓扑自动发现;
3)常用诊断场景的指标下钻分析;
4)事务快照查询;
5)异常事务和慢事务捕捉。

14.jpg

6. 运维态最佳实践:在线调试

15.jpg

 

通过 SAE 在线调试可以访问单实例的目标端口,相当于用户在本地可以直接访问云端某个应用的某个具体实例,原理是为实例提供了端口映射的 SLB,通过这个能力用户可以实现如下功能:

  • SSH / SFTP 访问实例

可以在本地通过 SSH 直接连到应用的具体的实例上,或者通过 SFTP 进行上传/下载文件。

  • Java retmote debug

相当于在 IDEA 里配置一个断点,再远程连接到对应的 SAE 的实例上,这样就可以通过断点来查看整个方法的调用站与上下文信息,对线上正在运行的应用进行诊断。

  • 其他诊断工具连接实例

其他诊断工具也可以通过在线调试的手段连接到 SAE 的实例上,进而看到 Java 的一些信息,比如堆栈或者线程等。 适用场景:针对运行时在线应用的实时观测运维及问题排查求解。

7. 开发态最佳实践:端云联调

针对微服务场景,我们提供了一个非常好用的能力:端云联调。它基于 CloudToolkit 插件+ 跳板机,可以实现

1)本地服务订阅并注册到云端 SAE 内置的注册中心;
2)本地服务可以和云端 SAE 服务互相调用。 

适用场景

1)微服务应用迁移到云端 SAE,迁移过程中的开发联调;
2)本地开发测试验证。

16.jpg

这个功能的原理是需要在用户的 VPC 内,然后通过 ECS 代理服务器作为跳板机,ECS 可以和同一个 VPC 内的 SAE 应用进行互调,然后这台 ECS 通过反应代理的方式,可以与本地进行连接。

CloudToolkit 插件会在应用启动时就注入对应 SAE 注册中心的地址,以及微服务的一些上下文参数,使得用户本地的应用通过跳板机连到 SAE 的应用上,从而进行整个端云联调的过程。

作者简介

许成铭,花名:竞霄,先后参与 aPaaS 领域 EDAS 和 SAE 后端研发工作,经历云原生与 Serverless 技术趋势变革。

本文整理自【Serverless Live 系列直播】2 月 2 日场
直播回看链接:https://developer.aliyun.com/topic/serverless/practices

Serverless 电子书下载

本书亮点

  • 从架构演进开始,介绍 Serverless 架构及技术选型构建 Serverless 思维;
  • 了解业界流行的 Serverless 架构运行原理;
  • 掌握 10 大 Serverless 真实落地案例,活学活用。

原文链接

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

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

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

相关文章

2020 q5l使用手册电子版_关于2020下半年自考本科毕业生论文预答辩题目查询的通知...

一、对象:2020下半年获论文预答辩资格毕业生(名单见附件1)二、查询方法:请登录以下网址: 输入个人准考证和姓名,查询论文预答辩题目。三、相关要求1. 请将《自学考试本科毕业论文预答辩记录表》(见附件2)中个人相关信息以及预答辩…

现实版“奇异博士”?原来是这款神秘的“数学黑盒”

简介: 现实版“奇异博士”?原来是这款神秘的“数学黑盒”供稿团队:阿里云市场部在漫威电影《复联3》中,奇异博士预测到未来有1400多万种可能,而胜利却只有一种,这唯一的最优解成为他们战斗的希望。只可惜&a…

如何在Spring生态中玩转RocketMQ?

简介: RocketMQ作为业务消息的首选,在消息和流处理领域被广泛应用。而微服务生态Spring框架也是业务开发中最受欢迎的框架,两者的完美契合使得RocketMQ成为Spring Messaging实现中最受欢迎的消息实现。本文展示了5种在Spring生态中文玩转Rock…

enum 有什么好处_林卡尔|先买地板后装修的三大好处

【中华地板网】现在很多装饰公司和设计师, 提倡的装修新模式——“先定地板后装修”。 后装修并不是买完地板后再开工, 而是在开工之前, 先把地板风格、颜色、尺寸、价位定下, 然后让设计师根据地板进行其他设计。 那么这样做究竟…

华为推出业界首个分布式云原生产品:华为云UCS,持续创新,深耕数字化

华为面向ICT产业的全球年度旗舰活动——华为全联接2021拉开序幕。华为轮值董事长徐直军进行了“以持续创新加快数字化发展”的大会主题演讲。 本次大会围绕“深耕数字化”主题,探讨如何深入业务场景,把数字技术与行业知识深度结合,解决核心业…

Flink 必知必会经典课程四:Fault-tolerance in Flink

简介: 本文由 Apache Flink PMC , 阿里巴巴高级技术专家李钰分享,主要从有状态的流计算、全局一致性快照 、Flink的容错机制、Flink的状态管理 四个方面介绍 Flink 的容错机制原理。 作者 | 李钰 分享人:本文由 Apache Flink PMC , 阿里巴巴…

用云原生的思维践行云原生,华为云深耕数字化,一切皆服务

[中国,深圳,2021年9月23日] 华为全联接2021于9月23日开幕。华为轮值董事长徐直军进行了“以持续创新加快数字化发展”的主题演讲,发布业界首个分布式云原生产品——华为云UCS,即 “无处不在的云原生服务”。华为高级副总裁、华为云…

白苹果了怎么办_苹果手机出现白苹果、死机、不断重启怎么办?

小伙伴们的苹果设备是否出现过白苹果、不断重启、更新失败、卡机死机、进入了恢复模式等情况呢?小编自己的iPhoneXR就遇到过,不知道怎么操作的就进入了恢复模式,有时候手机卡机需要强制重启,遇到问题就想去外面的修理店解决一下,…

Knative 多容器支持介绍

简介: 微服务和容器化带来了将应用程序分解成可重复使用的小型单元的诉求,这些单元通常作为单独的进程运行,或者在单独的容器运行。 Kubernetes的Pod模型允许用户创建一个部署单元,该单元可以打包多个容器作为应用程序的单个实例。…

GitHub Action + ACK:云原生 DevOps 落地利

简介: 据信通院《中国 DevOps 现状调查报告(2020年)》显示,63% 的企业已经实践落地 DevOps,采用持续交付流水线打通开发、测试、部署和运维多个环节。但是依然有 20% 的企业反馈实践 DevOps 复杂,自建 Jenk…

win7硬盘安装工具_如何重装电脑安装Win7 系统?最简单,最便捷的办法,值得收藏...

没有U盘、没有光盘怎么安装Win7系统?最简单、最方便的就是用硬盘安装了。在保证能进入系统的前提下,本地硬盘安装Win7系统,能够让你快速体验新的Win7系统。一、安装前准备保证能够正常进入系统;下载Win7系统:64位&…

网络架构优化--云企业网典型场景分析for客户

简介: 网络架构优化--云企业网典型场景分析for客户1. 背景描述 客户从传统的高速通道迁移到云企业网,加入云企业网的VPC,VBR默认全通,但是实际业务场景需要更严格的策略做选择性放通。此外,由于测试账号没有实际专线和…

五个问题,三大策略,手把手教你定制App性能监控方案

作者:友盟U-APM团队 Why? 为什么要做应用性能监控? 首先,我们要知道应用性能监控具体指什么?以及目的: 监控是一套完整的“监视报警”的系统。对于像我们这样的App开发者来说,应用性能监控是衡量App的第…

c++ 打印条码_金蝶盘点机PDA仓库条码管理之——外购入库扫码开单操作

优势点:收到供应商送货后,仓管员手持盘点机PDA现场将需要入库的商品按顺序扫描一遍,即可自动生成电脑软件金蝶里的【外购入库单】,避免仓管员往返电脑费时费事,和人工手工电脑录单效率低容易出错的问题,从而…

我在架构设计和代码开发中的一些常用原则

简介: 在日常的开发和设计过程中,大家对技术设计上的一些问题往往会面临很多的选择,不同的人会有不同的选择。本文介绍的就是我在工作中遇到的一些问题而总结和使用到的一些常用原则。 不管我一生中取得了多大的成功,其主要原因都…

坚持自主创新,凌波微步完成数千万A轮融资,加速半导体产业

随着5G、互联网、大数据、人工智能以及汽车电子等新技术、新产品的广泛应用,半导体产业已成为国民经济的基础性支撑产业。它是支撑经济社会发展,保障国家安全的战略性、基础性和先导性产业,其发展程度是衡量一个国家科技发展水平的核心指标之…

当程序员具备了抽象思维

简介: 若想捉大鱼,就得潜入深渊。深渊里的鱼更有力,也更纯净。硕大而抽象,且非常美丽。 作者:张建飞 若想捉大鱼,就得潜入深渊。深渊里的鱼更有力,也更纯净。硕大而抽象,且非常美丽…

平板电脑连接投影仪_交互式触控幼教白板如何与平板进行连接-微幼科技

现代智慧教学中离不开智能产品的辅助,电脑、平板就是其中之一。然而这两种电子产品的显示屏尺寸太小,并不能用于多人教学中。而55寸甚至上百寸幼教白板的出现,则可以解决多人互动教学的问题。那么,交互式触控幼教白板如何与平板进…

搭载了HarmonyOS 2的华为nova9,有哪些眼前一亮的功能?

9月23日,华为正式发布了nova9系列手机。作为年轻人的鸿蒙影像旗舰,nova9系列搭载了面向万物互联时代的HarmonyOS 2,沿袭nova品牌的年轻潮美基因,聚焦年轻人群的影像社交需求,在外观、影像、快充等多方面带来了创新突破…

谈AK管理之进阶篇 - 如何有效控制云上[最后一把密钥]的风险?

简介: 上一期“谈AK管理之基础篇”,我们讲了如何规范的进行访问密钥生命周期管理。通过分出不同权限的阿里云RAM子账号,将不同的权限分给不同的用户,这样一旦子账号泄露也不会造成全局的信息泄露。但是,由于子账号在一…