Serverless 时代 DevOps 的最佳打开方式

本文涉及的产品
函数计算FC,每月15万CU 3个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 本篇内容分享了Serverless 时代 DevOps 的最佳打开方式。

分享人|竞霄

直播地址:0 基础晋级 Serverless 高手课 — Serverless 时代 DevOps 的最佳打开方式


本篇内容将通过三个部分介绍Serverless时代DevOps的最佳打开方式:

  • Ÿ   DevOps简析
  • Ÿ   Serverless简析和Serverless时代DevOps的变化
  • Ÿ   Serverless时代DevOps最佳实践


一、DevOps简析

    在传统软件开发过程中,开发和运维是极其分裂的两个环节,运维不关心代码如何运作,而开发不知道代码如何运行在服务器中。互联网公司发展迅速,往往需要快读的更迭以满足用户的差异化需求,或是应对竞对的产品策略需要产品快速迭代,通过小步快跑的方式进行敏捷开发。对于每周甚至每天发布N次的场景,高效的写作文化就显得非常重要了。DevOps就在这种情况下应运而生了。


     DevOps打破了开发人员和运维人员之间的壁垒,它重视软件开发人员即DevIT运维技术人员即Ops之间的沟通合作的文化、运动或惯例。通过自动化“软件交付“和”架构变更“的流程,来使得构建、测试、发布软件能够更加快捷、频繁和可靠。另外,它包括整个软件构建的生命周期,包括集成、测试、发布和部署,以及基础架构的管理。


DevOps工程师的工作职责主要分三个方面:

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


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

 

二、Serverless简析和Serverless时代DevOps的变化

     Serverless带给开发运维的体验有哪些变化呢?如下图所见,在传统的应用构件中,需要经历资源准备阶段、研发部署阶段和运维阶段;而Serverless应用构建的流程就简化了很多,在资源准备阶段是完全不需要准备资源的,也无需创建具体的集群,在研发阶段,只需要将业务部署上来,其他像监控、日志警告等等,都是平台提供的开箱即用的功能;运营阶段也是免运维的,用户无需关注,用户只需要关注核心业务即可。

image.png


     SAE整体解决方案,实际是互联网企业一个比较标准的系统架构,整个架构自底而上的包分为几个层次。


    首先是网关层,通常完成健全的网络路由、流量转发等系列回头策略的部分;第二个是业务系统,比如像电商、物流等,有逆向有交易等。一些核心业务逻辑在业务系统中,这个业务系统往往也是采用了像Java这种比较主流的微服务框架,既然有微服务,就需要有相应的注册中心、配置中心进行辅助发现以及配置管理。比较大型的电商系统中,都会有限流、降级和熔断的措施来应对流量激增的情况。还有一些压测混沌平台来保证整体的可能性。


     底层的应用部署有两种方式,一种是传统部署,部署到ECS上;一种是在云原生时代慢慢兴起的现在已经趋向于主流的Kubernetes部署方式。Kubernetes也是部署到ECS上的。


     以上是主题的组成部分,旁的华友一些发布系统,即如何将源码到镜像再到整个集群中进行部署的构建系统。还有监控竞购服务治理等等。这些实际上也是一个大型系统,比较标准的功能。


     下图是一个比较标准的电商系统架构,当运用到SAE上,我们可以看到,用户只需要关注业务核心系统的开发,其他的都是SAE相应的解决方案。

image.png


     首先是网关层。网关层是阿里云提供的网关功能,实际上是一个开箱即用的微服务网关,对于这些微服务的框架,我们也提供了MSE/PTSAHAS微服务事件。MSE是微服务网关以及微服务的治理功能,PTS是一个压测组件,AHAS是一个限流降级的组件。

     而下面的KubernetesIaaS照应了SAE方案的特点,无需用户关注。左侧的云效是阿里云一个商业化的CSC平台。Jenkins是业界比较主流的自建CSC平台;CloudTookit是阿里云提供的一个插件,可以进行全生命周期的管控。


    右侧是实时监控、报警、服务治理等等,可以通过阿里云提供的可观测平台,比如ARMS/SLS/云监控和Prometheus等等系列阿里云提供的开箱即用的组件。


     SAE构建高效闭环的DevOps体系,应用了开发部署和运维的整个流程。中大型企业往往都使用企业级的CICD工具/产品来实现源码到镜像再到部署的全链路的流程。而个人开发者更倾向于使用轻量级的一键部署的插件,比如上述的CloudTookit/Maven-plugin插件等。无论是通过企业级工具还是开发者工具,都很方便将应用直接部署到SAE上。他们具体的流程实际上是调用SAE提供的Open API,然后也更加友好的把这些控制台上的界面、相应的配置提升到产品中。

image.png

     Ops提供了一站式生命周期的管理,比如通用的操作:创建应用、部署应用、启动应用、停止应用和扩容等等,也是SAE提供了开箱即用的功能。


     同时SAE还提供了一些非常核心的开箱即用的高级功能,比如高可用运维提供了服务治理、性能压测和限流降级。应用诊断,可以查看应用是否存在潜在问题或是当前存在哪些异常行为。


     通过上述自动化的CICD以及一键本地部署到云端和可视化智能运维的核心特性,构建了高效闭环的DevOps体系。

 

三、Serverless时代DevOps最佳实践

部署态最佳实践:CICD

    SAE的部署方式有很多种,它支持Java主流的微服务框架,比如Spring Cloud/dubbo/HSF等,可以通过War.jar进行部署。另外还有多语言应用,如PHP/Python等等。同时也支持镜像部署,后续也提供了多元化的能力。


     除了通过控台直接部署的方式外,还支持本地部署、云效部署和自建部署三种方式。本地部署是通过CloudTookit插件的方式,可以直接一键部署到SAE上。云效是企业级的CICD平台,也是完美的和SAE的集成,云效可以从代码库种拉取对应的代码,然后进行可配置的代码检查或是代用测试。然后进行预先操作,再对代码进行编译构建,这样会产生具体生成物。Jenkins也是同理部署到SAE上。

image.png

【实操过程请点击视频观看】


部署态最佳实践:一键启停

一件启停主要适用于具有多套环境的中大型企业,这些环境有比如开发环境、测试环境、线上环境等等。对于这些测试环境往往晚上是不用的,长期保留应用实例会造成资源的闲置浪费,因此SAE提供了一件启停的功能,整体可节省成本高达三分之二。另外例如,像银行这种传统企业,会有具体的上下班实践,其他时间基本没有流量,这就成为了可预测的,在这种情况下,可以使用一键启停功能来批量启动或停止具体应用。


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

    部署态集成了阿里云内部实践的应用发布三板斧,即可灰度、可监控、可回滚,借助阿里云的最佳实践,可以完整的输入到SAE整个产品的设计中。


Ÿ    可灰度,它支持单批、分批、金丝雀等多种发布策略;支持按流浪灰度,批次间自动/手动发布,分批间隔等多种发布选项。


    可监控,是指发布过程中清晰对比不同批次基础监控与应用监控指标异动,及时暴露问题,定位变相风险。


Ÿ     可回滚,是指允许人工介入控制发布流量:异常中止,一键回滚。


部署态最佳实践:金丝雀发布

    金丝雀发布在发布过程中有多个版本:灰度版本和正常版本。部署态是把灰度版本主键扩大流量,完全替换掉线上的版本。通过这个提供金丝雀发布功能就可以不断控制流量百分比。同时提供了非常细粒度的灰度策略,比如可以通过访问参数进行具体的灰度执行行为。

image.png


部署态最佳实践:全方位可观测

     全方位可观测是指对分布式系统中任何变化都可以进行观测。当系统出现问题的时候,可以进行非常便捷的定位问题,排查问题和分析问题。而当系统平稳运行时,也可以提前评估风险预测可能出现的问题。


    可观测分为三个方面,Metrics/Tracing/Logging,支持了非常多的细分特性。比如Metrics提供了基础监控、应用监控和监控告警。Logging提供了实时日志、文件日志和事件。Tracing提供请求调用链堆栈查询,应用拓扑自动发现,常用场景的指标下钻分析,事务快照查询和异常事务和慢事务捕捉。


部署态最佳实践:在线调试

     在线调试可以在本地直接访问云端某个应用的具体实例,原理是可以为这个目标实例提供端口映射,然后借助这个能力可以安装open SSH来实现SSH远程登陆,或是SFTP上传下载功能。


部署态最佳实践:权限隔离

关于权限隔离可以参考下图左侧的应用案例。

image.png


    在以上案例的情况下,企业ASAE资源的所有者,企业B是实际是资源的使用者,B具有操作权限,比如应用发布、应用管控、自动弹性等等。同时企业A希望企业B有员工变动时无需任何权限变更,以及当AB的合作终止,A可以完全撤销对B的授权。


    以上就是典型的需要权限配置功能的案例。SAE集成了阿里云的RAM,实现了密闭空格键级别以及应用级别的访问权限的配置,或可以实现某个人或某一群人的权限配置。


部署态最佳实践:端云联调

     对于微服务场景,本地开发联调提供了端云联调的能力。端云联调是测试阶段的功能,它可以实现本地和云端应用的互调。它可以基于CouldTookit插件加跳板机实现服务订阅并注册到云端SAE内置的注册中心,这样本地的服务就可以和云端的服务互调。

image.png

    它的原理是,在云上SEA应用可以在同一个VPC中新建一个ECS代理服务器,因为VPC是用户的,所以需要用户自己来建代理服务器。通过ECS代理服务器跳板机,CloudTookit插件就会连到ECS中,再通过ECS转发到SAE上,实现端云联调的功能。CloudTookit同时会把注册中心的地址以微服务的上下文进行无感输入,然后借助这个插件和这个跳板机即可实现。

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
弹性计算 缓存 监控
课时5:云原生体系下 Serverless 弹性探索与实践(四)
课时5:云原生体系下 Serverless 弹性探索与实践(四)
|
监控 Devops Serverless
|
人工智能 监控 Devops
|
JSON 前端开发 Serverless
Serverless 时代,这才是 Web 应用开发正确的打开方式
如同 iPhone 当年颠覆了诺基亚,Serverless 的出现也带来了一种全新的、颠覆式的云开发架构模式。
213 0
Serverless 时代,这才是 Web 应用开发正确的打开方式
|
弹性计算 运维 监控
Serverless 时代 DevOps 的最佳打开方式
传统软件开发过程中,开发和运维是极其分裂的两个环节,运维人员不关心代码是怎样运作的,开发人员也不知道代码是如何运行的。
Serverless 时代 DevOps 的最佳打开方式
|
4月前
|
敏捷开发 缓存 前端开发
阿里云云效产品使用合集之前端打包时npm安装卡住一般是什么导致的
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
敏捷开发 弹性计算 持续交付
阿里云云效产品使用合集之同一个主机部署是否支持下载多个制品
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
敏捷开发 监控 Java
阿里云云效产品使用合集之Codeup WebIDE环境下,如何使用通义灵码
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之如何进行大文件的迁移
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
敏捷开发 安全 测试技术
阿里云云效产品使用合集之如何在甘特图视图中看到负责人信息
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。

热门文章

最新文章

相关产品

  • 函数计算
  • 下一篇
    DataWorks