SAE 实现应用发布全过程可观测

本文涉及的产品
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
可观测监控 Prometheus 版,每月50GB免费额度
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 本文聚焦阿里云Serverless应用引擎(SAE)用户在发布过程中的痛点,如“发布效率低、实例启动过程不透明”等问题。通过分步骤可视化解决方案,帮助用户明确问题、理解原因并最终解决,提升SAE平台使用体验。文章详细剖析了发布过程慢、信息透出不足及实例启动黑盒等痛点,并提出通过可观测、可解释和可优化的策略解决问题,同时展示了具体实现效果与后续优化规划。

1.gif


本文作者:丛霄、久氢、章进


导读:本文通过剖析阿里云 Serverless 应用引擎(以下简称 SAE ) 用户使用过程中存在的“发布过程慢,发布效率低,实例启动过程黑盒”等痛点,采取分步骤可视化的解法,帮助用户看到问题、理解问题,最后解决问题,提升使用 SAE 平台的体验。


用户痛点剖析


当业务的规模上量后,应用数量会爆炸式增长,而“应用发布”作为一个高频的操作,是业务运维人员每天会面临的操作。通过与一些 SAE 的企业级客户的交流,目前在 SAE 上的应用发布存在着以下几个痛点:


1. 应用部署的发布过程通常较慢,最快也要 5 分钟,最慢可能半小时,严重拖慢了业务开发效率。
2. 应用部署的详情透出的信息过于简单,用户想知道具体哪里慢,平台封装了部署的步骤,没有对用户透出更多有用的细节, 每次用户发布过程中盯着发布单状态变化,也只是干等,并不知道具体执行了哪些步骤。


1.png


3. 实例启动过程黑盒,实例是承担业务的核心,而每次应用变更动作,都围绕着实例展开,但目前实例的状态变化存在着可用信息不足、实时性较差等问题。


2.png


SAE 作为一款全托管的容器化应用平台,核心特性就是简化应用的部署和运维操作,给到用户简单易用,平滑顺畅的使用体验。


然而, “简单”不代表着“简化”,SAE 的客户群体和业务类型众多,平台侧封装过多意味着灵活性的丧失,平台侧暴露过多也会造成用户额外的心智负担。在同一款产品形态中同时满足多种客户多种业务的诉求,是我们在做每一个功能优化、产品设计时都需要考虑的问题。


解决方案


发现用户的痛点后,我们进行了一些思考和设计,通过可观测、可解释、可优化的解决思路,我们进行了一些优化。


可观测:看到具体的问题


如何将必要的有用信息提供给用户,既能解决用户问题,也不会造成额外的疑虑。 SAE 是应用维度的 PaaS 平台,一个应用下面管理了不同的资源。围绕实例和发布单两个核心资源,如何对资源进行可视化,让用户能直白地看到具体的每次发布、变更具体在哪个节点、步骤有问题,是可观测需要回答的。


我们对实例和发布单两个实体结构和状态流转进行了分析。


SAE 发布单是一个异步的发布流程处理引擎,用户的发布方式可以选择灰度发布或分批发布。在一个 ChangeOrder 下分为不同的 Pipeline 批次,一个 Pipeline 批次下面又分为不同的执行步骤 Task,一个 Task 又分为不同的 Stage。可以看到整体是一个树形的结构。



虽然发布单整体结构复杂, 但是我们仅将我们认为有效的信息透出给用户,对用户屏蔽了一部分的复杂性。通过统计分析,发布单步骤中耗时最长的是 Pipeline 下面的 Task,而 Task 中耗时最长的又是 “执行应用部署”这个子 Task。


所以,可观测问题的核心就是这么让用户清晰地看到:哪个 Task 耗时最长,具体耗时长在哪里?于是在发布单列表界面可以通过透出历史发布单的耗时统计数据,Task 耗时 Top 排序,能让用户清晰的看到问题所在。


4.png


而分析完“执行应用部署” Task 耗时最长后,我们又分析了具体这个步骤的耗时,就是批次发布中实例消耗的时间。所以我们捞取了每个发布批次相关联的实例,并对实例启动过程进行了可观测数据处理。


实例数据处理整体框架如下图所示:


5.png


K8s 资源数据采集


1. 通过定制化 sae-kube-eventer 组件将 ASI 集群中所有事件上报至 SLS tenant-events logstore 中,事件元数据中会包含 sae 应用 appid 等信息。
2. 通过定制化 sae-kube-exporter 组件将 ASI 集群中所有 pod 状态变化历史 yaml 完整元数据上报至 SLS sae-pod-queue logstore 中。


实例数据处理


1. 事件消费:主要是按照 SAE 应用实例级别从 SLS 日志库中查询并消费原始数据
2. 事件过滤:实例原始数据量很多,且很多事件冗余,这里会先将内置 initcontainer 以及内置 sidecar 事件过滤,并对重复事件进行聚合
3. 事件生成:针对不同类型的数据消费处理之后,根据固定的事件结构模型生成事件


可解释:理解问题在哪里


在第一步可观测完成后,用户还需要能理解问题。从可观测数据源上看,原始数据采集的是标准的 K8s Event,具有可解释性。同时,在设计上,我们通过将发布过程和实例启动过程按照时间线形式展示,能更清晰的看到不同步骤间的时间分布。


但是在 K8s 中,实例的状态变化有多种,我们通过抽取关键信息,聚合相似事件,精简实例的状态描述,按照更容易让用户理解的方式进行了可视化的展示。在实例启动耗时里,我们向用户透出了以下处理后的实例状态阶段,便于用户可以直观看到不同阶段的耗时:


1. 资源调度中:调度器调度实例到具体节点的耗时时间
2. 实例准备中:节点初始化实例资源以及内置 init container 和内置 sidecar 容器拉取镜像、启动等平台侧耗时
3. 开始拉取镜像:用户业务主容器镜像拉取时间
4. 镜像拉取结束:成功拉取业务主容器镜像
5. 容器已创建:业务主容器创建时间
6. 容器进程已启动:业务主容器进程启动耗时
7. 实例就绪:实例已准备就绪,可以承接业务流量


可优化:能解决问题


可观测不是目标,最终目标是能帮助用户解决问题。在第二部可解释完成后,用户能清楚的看到问题,并且能区分出哪里是平台侧耗时,哪里是用户侧耗时。


针对不同阶段的问题,SAE 也提供了可优化的手段:


1. 应用部署分批部署慢:通过配置更合理的分批部署参数,可以有效减少分多批发布下的整体发布时长。



2. 拉取镜像慢:SAE 已经对平台公共镜像做了缓存,可大幅降低镜像拉取时间。而对于用户自身镜像,也提供了镜像加速能力,基于 DADI 块设备镜像存储实现按需加载,大大缩短了拉取镜像的时间。用户可以使用 ACREE 标准版或企业版镜像仓库,开启镜像加速功能。目前 SAE 镜像加速功能已经全量支持,能大大减少大镜像拉取的耗时,优化应用发布实例启动速度,用户可以按需开启。


7.png


8.png


使用文档详见:https://help.aliyun.com/zh/sae/serverless-app-engine-classic/user-guide/configure-image-acceleration

3. 实例启动慢:
3.1 使用 CPU Burst:在应用部署界面,支持配置 CPU Burst 来加速应用的启动过程,启动时能放到到实例 CPU 规格的 2 倍,对 Java 这种启动时候消耗资源的业务能有帮助。



使用文档详见:https://help.aliyun.com/zh/sae/serverless-app-engine-upgrade/user-guide/enable-cpu-burst-function?spm=a2c4g.11186623.help-menu-search-118957.d_0
3.2 Java 应用可以使用“启动加速”:


10.png


使用文档详见:https://help.aliyun.com/zh/sae/serverless-app-engine-upgrade/use-cases/sae-configure-startup-acceleration-for-a-java-application?spm=a2c4g.11186623.help-menu-search-118957.d_0


实现效果


1. 在发布单列表界面,提供了耗时统计,用户能一眼看到耗时的 Top 分布:


11.png


2. 在发布单详情界面,提供了按照时间线的不同步骤 Trace 记录,直观展示不同步骤的耗时。同时,我们区分出了“平台侧相关” 和“用户侧相关”的说明,能直接看到用户关心的部分


12.png


3. 发布正常 case ,用户可以看到发布单各阶段详细耗时


13.png

14.png


4. 镜像拉取失败 case 下,用户可以看到镜像拉取失败原因


15.png


16.png


5. 健康检查失败 case 下,用户可以看到一直健康检查失败,导致发布单失败


17.png


18.png


后续规划

应用发布和实例生命周期是 SAE 核心能力,后续 SAE 将在运行时阶段持续优化能力,围绕镜像加速、Java 应用启动、Java 运行时、实例异常诊断等领域打造核心优势,更好地帮助用户托管应用,降本增效。

相关实践学习
1分钟部署经典小游戏
本场景介绍如何使用Serverless应用引擎SAE 1分钟快速部署经典小游戏。
SAE的功能与使用入门
欢迎来到《SAE的功能与使用入门》,本课程是“云原生Serverless Clouder认证“系列中的第三阶段。课程将向您介绍阿里云Serverless应用引擎(SAE)服务相关的概念、特性与使用方式。通过课程将带您逐步深入探索Serverless世界,借助SAE服务,即使没有丰富的云计算和IT经验,也能够让开发人员在实际业务场景中便捷的掌握如何构建和部署应用程序,快速拥抱Serverless架构,将精力聚焦在应用代码和业务逻辑的实现上。 学习完本课程后,您将能够: 掌握Serverless应用引擎(SAE)的基本概念与核心优势 了解Serverless应用引擎(SAE)的核心功能 掌握使用Serverless应用引擎(SAE)的开发和部署流程 了解Serverless应用引擎(SAE)的适用场景和最佳实践  
目录
打赏
0
64
68
9
12866
分享
相关文章
Serverless 应用引擎产品使用合集之关于OSS映射目录的大小限制,如何可以跳过
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
Serverless 应用引擎产品使用合集之关于OSS映射目录的大小限制,如何可以跳过
Serverless 应用引擎产品使用合集之通过 API 调用 /tagger/v1/interrogate 时,出现unsupported protocol scheme "" 错误,如何处理
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
Serverless 应用引擎产品使用合集之在使用函数计算 FC 部署 stable-diffusion 应用时,选了 tagger 扩展插件却拿不到提示词,还报错“Error”,是什么原因
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
Serverless 应用引擎产品使用合集之如何设置能让应用定时启停
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
Serverless 应用引擎产品使用合集之需要上传多个文件,该如何处理
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
Serverless 应用引擎产品使用合集之在SAE2.0上的应用如何访问云原生数据库PolarDB MySQL版集群
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
Serverless 应用引擎产品使用合集之应用无法启动时,该如何排查
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
Serverless 应用引擎产品使用合集之SAE 2.0是否支持直接上传zip包部署
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
Serverless 应用引擎产品使用合集之一般情况下在SAE中如何关联域名
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
Serverless 应用引擎产品使用合集之在SAE 2.0中,如何区分生产环境和测试环境
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。

云原生

+关注

相关产品

  • Serverless 应用引擎
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等

    登录插画

    登录以查看您的控制台资源

    管理云资源
    状态一览
    快捷访问