阿里云李钟:弹性计算控制系统团队的提效之路

2023 年 3 月 25 日,“城市领航之夜第一期”活动在上海举行,阿里云弹性计算控制系统技术架构负责人李钟出席了本次活动并带来了《弹性计算控制系统团队提效之路》的主题演讲,为大家详细分享了阿里云弹性计算控制系统团队所面临的挑战、如何通过技术架构提效,以及工程师文化建设等一系列内容。本文根据其演讲内容整理而成。

我从 2011 年开始就入职了阿里巴巴,主要负责 IM 服务端的工作,15 年加入了阿里云,在此期间一直负责业务的开发,2019 年担任了控制系统技术架构负责人,主要完成了阿里云弹性计算单元化架构的升级。今天的分享,我将从问题、技术架构、规范流程和工程师文化四个维度,通过弹性计算的角度以及技术和架构的角度,来分享弹性计算控制系统团队的提效之路。

从问题出发,看当前的挑战

阿里云弹性计算管控系统是一个大型的分布式系统,支持高并发和高可用,除此之外,也有自己独特的复杂度。

  • 规模大:管理全球 50 多个环境,支持 28 个公共云地域,兼容专有云技术和业务,并且已扩展到新的本地云、专属云等分布式云场景,规模非常庞大。以管理全球 50 个以上的环境为例,应用在做配置发布时需要在全球范围内变更 50 余次,这对系统的开发、运维和管理都带来巨大的挑战。
  • 业务复杂:弹性计算的产品类型不断向前发展,我们需要对每种类型都提供支持。且因为云计算底层是物理资源,业务需要对物理资源的限制进行描述和管理,因此业务逻辑也非常复杂。

在这里插入图片描述

对于阿里云而言,所有云产品都基于 ECS 构建,因此稳定性非常重要。但是系统本身还需要进行架构的升级和演进。我们要在技术演进、稳定性以及效能三者之间做到平衡。保持业务和技术的快速演进和升级,同时又要保障不出现稳定性的问题。

最后从团队的规模来看,弹性计算控制系统团队规模持续扩大,近年内已经增长近 6 倍。我们面临的挑战愈发严峻。

技术架构优先,构建效能基座

我们主张优先考虑技术架构的升级和优化来构建效能的基座。总结来说,有下面图中所示的 4 个方面。
在这里插入图片描述

首先,通过短期的方案快速解决问题。主要是三个手段,通过并发的方式投入提高速度,这也意味着会使用更多的资源;通过自动化和工具化的方式降低人力;通过引入标准化的流程来保证正确性。

短期的解决方案能够达到立竿见影的效果,为团队建立信心,让成员知道问题正在被关注和解决,促使每个人都去思考如何解决自己面临的问题,并为长期发展赢得时间。

短期方案临时解决问题之后,就要持续规划架构技术的升级,解决核心问题。这里主要包括三个方面,一是要思考问题的根本原因,从而有效的解决问题,而不是躲避问题。规划架构和技术的持续升级来根据实际情况构建高效的系统。二是坚持使用工具化、可集成、平台化的方式解决问题。保障技术升级的可持续性。最后要持续升级基础服务,中间件和基础组件,在代码不断演进的过程中,享受组件升级带来的性能和效能红利。

第三点,需要优化研发流程,使其灵活有效,避免缺少流程导致出现问题。也要避免流程过多导致系统臃肿的问题,探索新的思路,使用先进的思路和工具提效。

最后,需要不断沉淀和积累,一方面是知识体系的沉淀,同时也要注重构建可复用的系统框架和组件。下面我们重点来看上面提到的第一点,如何通过系统架构升级来构建效能的基座。

在这里插入图片描述

弹性计算管控系统负责处理的业务可以分为两个部分,一方面是要管理底层的物理资源,负责对资源的状态进行管控。另外一方面响应用户 OpenAPI 调用,来完成用户的业务请求处理。

在弹性计算控制系统之前的实现中,这两个部分是相互耦合的。既需要进行资源状态的管理,也需要实现复杂的用户业务。资源状态管理的业务逻辑变化较小,并发度高,对稳定性较为敏感。而用户业务则变化快,实现较为复杂。

因此,我们将状态管理和业务逻辑做了分层。底层是状态管理的集群,集群逻辑简单但体量较大,比较稳定,不需要有太多的发布。而业务逻辑部分被放到上层,由 RPC 调用连接的微服务集群,整个集群类似于 ServiceMesh,服务之间的依赖非常复杂,变化也非常快,且无状态。这使得逻辑上异构的两个部分可以分隔开,解决了稳定性和高并发的问题,同时也满足业务逻辑的高效迭代。

业务逻辑层采用模块化和服务化架构,使得各个系统之间的职责较清晰,各个服务的角色可以定义。各个系统使用标准的公共 API 进行交互,使得系统耦合度降低,服务之间可以独立快速演进迭代。

另外,我们引入了事件驱动架构,通过事件模型将系统里面核心链路和非关键模块解耦,解决非关键模块对核心链路的稳定性影响问题。另外也使得系统的核心链路可以保持清晰有效,提升了系统的稳定性和性能。也使得系统的开发和迭代更加高效。

上面我们通过架构的演进和优化,解决系统快速的演进和迭代的问题,下面来看一下团队是如何通过积累和建设公共的框架和组件,使得业务开发可以事半功倍。

在这里插入图片描述

2015 年 6 月,弹性计算控制系统团队创建了 ecs-common-framework,在业务开发的过程中,将一些通用的组件积累到这个公共库中,其中包含了缓存,幂等,限流,工作流等等功能。到 2021 年,ecs-common-framework 中已经完成了近 230 多个版本的发布,为业务的开发提供了有效支持。到 2021 年,我们对其进行了模块化方式重构,并命名为 yaochi-peento-framework,目前已有多个云产品接入使用。

yaochi-peento-framework 框架由四个部分组成:

  • 基础框架:包含了分布式后端服务开发的公共组件,包括缓存,配置,幂等,序列化等。
  • 业务模块:包含了OnECS的公共业务组件,提供 OnECS 通用支持,包括 Quota,ActionTrail,Tag 等。
  • SpringBoot Stater:整个框架会基于 springboot 进行输出,是的业务方可以非常方便集成和管理。
  • 生命周期管理:提供业务域的生命周期管理,包括应用的初始化,运维等能力。

有了上述的 yaochi-peento-framework,使得业务方开发新的云产品变得非常方便。正是因为在 2015 年创建了 ecs-common-framework,写下第一行代码, 才能在 21 年进行重构和升级。yaochi-peento-framework 使得开发云产品控制系统的效率提升,并且成本大大降低。目前该模块不仅仅是在弹性计算内部使用,也被推广到弹性计算之外的其他云产品团队。
在这里插入图片描述

下面我们来介绍一下在 yaochi-peento-framework 里面,我们是如何设计和实现一个公共的组件。

公共组件方面,标准化和高可用是首要的两个的原则。组件的建设需要提供标准的 API,同时具有完备的文档描述和严谨的 Changelog 跟踪。在高并发方面,一方面只得是组件需要能支持高并发的调用,另外也需要对高并发的业务有特殊的实现,组件应该是高并发分布式系统的最佳实践总结。

另外,可插拔和可扩展也是系统非常关键的原则,弹性计算的部署架构非常复杂,要支持多种不同的部署形态,包括公共云,专有云,分布式云等。在不同环境部署时,依赖往往不一致,因此作为基础组件,需要提供可适配的能力。

yaochi-peento-framework 中的所有的组件都提供通用的 interface,并且做到可以支持多种实现。比如上面图中左边的部分所示,yaochi-pento-cache 模块提供了统一的缓存的 interface,但在同一套 interface 下支持多种缓存的实现,可以做到在不同的部署形态依赖不同的缓存实现,但因为这些缓存系统都实现了同一套 interface 来工作,因此对业务逻辑部分无感,这使得系统往前演进支持更多部署形态的时候会非常便捷。

可观测和可运维的能力也至关重要。所有组件都会有统一的可观察能力输出,全部通过 SLS(阿里云内部的日志系统),最后汇总到 Grafana 上,业务系统接入后即可马上获取到所有的观测数据。同时组件也会默认提供 opsapi 来支持运维能力。

yaochi-peento-framework 累积了系统开发中的最佳实践的组件,对该框架的复用使得新的业务和服务开发可以直接使用现有组件的能力,大大提升了应用开发的效能。

在这里插入图片描述

除了分布式系统碰到的问题之外,在弹性计算控制系统的场景里,还会有多地域管理的复杂度问题,这是因为地域管控的环境非常多(目前已经有 50 多个环境),中间件提供的控制台的能力已经无法满足我们的管理需求。使用 API,工具化和自动化的方式是唯一的选择,这里我们引入了近几年较为流行的平台工程(Platform Engineering)的概念。我们希望中间件提供 API,而不是控制台给我们,将所有 API 汇集,通过单元化的运维服务输出,然后由全局的运维服务平台整体集成。这样,运维多个地域时,不再需要切换控制台逐个操作,而只需要通过总的运品台进行管理运维即可。

运维 API 的集成能力还使得采用自动化,流程化的平台方案成为可能。

在这里插入图片描述

最后,在技术方案,我们想讨论一下中间件和基础技术组件的升级。弹性计算控制系统内部设计了一个框架和组件的升级流程。组件的引入策略,引入之后有流程进行跟踪,评判组件状态,每个组件都会有相应 owner,负责了解组件的情况,比如是否有大的 bugfix,或大的能力更新等,并按照实际需要进行主动升级。我们并不一定会对每一次更新都进行升级,但能够做到对每一版本都了如指掌。

一方面这样做是的我们可以及时了解组件或者框架在功能,安全性和性能方面的升级,能及时评估并安排升级,获得相应的红利。另外一方面,当出现相关的安全性漏洞风险,需要进行升级时,也会对相关的影响面较为了解,升级影响评估充分,风险降低。

一句话来说,有准备的升级,相比较临时评估升级,效率要更高。

规范流程制定,建立效能脉络

在这里插入图片描述

了解完技术方面的内容,我们来看一下流程。在弹性计算控制系统团队,我们的流程分为规划设计、编码测试、发布以及运维等几个阶段。

在每一个阶段,实际上我们都会有较为严格的流程,在这里,我想分享的是几个我认为较为有效的流程或者工具。

第一个是 RFC 机制,RFC 的全文是“Request For Comments”,意思是让大家来评审。规划设计阶段,RFC 是一种重要方式。我们鼓励同学记录下所有灵光一现的想法,并在日常对其进行不断补充扩大,直至它能够成为一个完整的方案,才会最终被呈上供团队进行讨论和决策,提高讨论效率,避免浪费时间。

另外在技术文档方案,但对于开发人员而言,写文档是一件极具挑战的事。因为系统在不停的变化,今天写下的文档,可能在很短的时间之后就失效了。因此,在弹性计算控制系统团队内部,我们采用的方式是让开发人员在开发的每一步都将评审和方案做到足够详尽完善,最后我们输出的是当前方案的详细技术文档,这样等于我们记录了对系统每一次变更的详细方案,新的同学并不是通过学习一个大而全的文档,而是学习系统每一次更新的方案,来了解系统的全貌。

工程师文化建设,丰富效能氛围

在这里插入图片描述

最后我们来看一下弹性计算内是如何来进行工程师文化的建设。

在考虑这个问题的时候,我也去问了一下 ChatGPT,它给的答案是“好的工程师文化应该是大家共同拥有的目标,有共同的价值思考,有共同的实践”。

在我们团队内部,为了营造良好的工程师文化,会在内部举行定期的技术分享,比如每周四晚上举行的“Hack Thursday”分享活动。另外有新的方案或有方案评审时,我们会鼓励大家做直播。不论直播效果如何,工程师准备直播的过程也是一种自我促进。

同时,我们会举办内部的技术比赛,促进工程师之间的相互交流与学习。

最后,我们还推行了一项名为 feature marke 的工作,会将一些探索性的、重要但不紧急的工作作为员工平时的赛马项目,同时也作为实习生项目,调动实习生思考和探索的积极性,也得到了良好的效果。
在这里插入图片描述

最后我们来看一下高能效团队的展望。

首先我们需要拥抱云原生技术,因为现在很多软件工程和架构的创新都是基于云原生的技术来完成的,虽然弹性计算是一个 IaaS 层的基础服务,但是我们也需要积极采用云原生的技术,就像编译系统一样,实现自举能力。

另外一个就是人工智能技术,主要是下面的几个方案:

  • 首先,可以帮助进行知识系统的建设,文档的生成和维护等;
  • 其次,可以通过人工智能来进行编码辅助;
  • 第三是可以通过 AI 来实现智能技术支持;
  • 最后,我们也希望能够利用 AI 帮助团队做决策,但想要利用人工智能辅助架构和技术设计,前提是先让人工智能理解我们的技术和数据。

阿里云李钟:弹性计算控制系统团队的提效之路

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

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

相关文章

树莓派声控小车

树莓派声控小车 一、实验方案设计 声控小车的实现方案由三部分组成:①语音识别指令;②控制小车;③语音识别指令直接控制小车。 1.语音识别指令 识别声音利用百度AI开放平台的语音识别功能。由于搭配的麦克风和可识别音频的采样率不同&…

当我获取了文心一言的体验资格,立刻重复了和李彦宏发布会一样的问题,看看文心一言有没有进步(或者是“退步”?

当我获取了文心一言的体验资格,立刻重复了和李彦宏发布会一样的问题,看看文心一言有没有进步(或者是退步? 引言文心一言申请方法测试结果文学创作《三体》的作者是哪里人?可以总结一下三体的核心内容吗?如果…

年终反思潮!李彦宏:“马化腾说的问题,百度也都有……”

整理 | 朱珂欣 出品 | CSDN程序人生(ID:coder_life) 到了年末,难免少不了“年终总结”、“反思潮”,互联网的“大佬”们怎能落下? 前段时间,马化腾在 2022 年内部员工大会上,谈及…

谷歌一雪前耻!全新PaLM 2反超GPT-4,办公全家桶炸裂升级,Bard史诗进化

来源:新智元 【导读】新版PaLM 2超强进化,办公全家桶Workspace全面升级,Bard全面增强、所有人可用……可以看出,这届I/O大会,谷歌是真的憋出不少大招。 谷歌I/O 2023大会,仿佛又给谷歌的支持者们打了一针强…

阿里巴巴取消 CTO 一职;近半数微软员工担心被 AI 抢饭碗;Flutter 3.10 发布|极客头条

「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews) 一分钟速览新闻点&…

图灵奖得主杨立昆炮轰ChatGPT:五年内就没人用了

近日,图灵奖得主杨立昆现身芒克辩论会,他表示,每一项科技都会伴随风险,但 AI 会屈从于人类并服务人类。“ChatGPT 并没有真正理解现实世界,因为它们都是纯粹的文本训练,而人类的大部分知识与文本或语言无关…

微信流量主小程序源码万能工具箱+完整搭建教程

微信流量主小程序源码系统万能工具箱小程序源码,自带流量主广告位功能,新手小白即可快速上手,带完美搭建教程。 微信流量主小程序源码系统春哥万能工具箱小程序源码源码下载地址:春哥技术博客

代码随想录第二天| 977.有序数组的平方 、 209.长度最小的子数组、 59.螺旋矩阵II

977.有序数组的平方 977. 有序数组的平方 - 力扣(LeetCode) 代码随想录 (programmercarl.com) 1.暴力解法 class Solution:def sortedSquares(self, nums: List[int]) -> List[int]:for i in range(len(nums)):# nums[i] pow(nums[i], 2)nums[i] *…

【AIGC】大模型协作系统 HuggingGPT 深度解析

欢迎关注【youcans的 AIGC 学习笔记】原创作品 【AIGC】大模型协作系统 HuggingGPT 深度解析 1. 摘要2. 前言3. HugginGPT 大模型协作系统3.1 任务规划3.2 模型选择3.3 任务执行3.4 响应生成 4. HugginGPT 测试案例4.1 实验条件的设置4.2 定性的实验结果4.2.1 任务之间存在资源…

chatgpt赋能python:Python访问控制

Python访问控制 Python是一种非常流行的编程语言,它具有很多优点,其中包括易学、易用、可读性高等等。但是,在编写Python代码时,访问控制是一个很重要的话题。访问控制可以帮助您保护您的代码,并防止非授权用户访问和…

chatgpt赋能python:Python访问网络路径的SEO指南

Python访问网络路径的SEO指南 在当今互联网时代,访问网络路径是一项极为常见的技能。Python作为一种高效、灵活的编程语言,也可以用于访问网络路径。本文将为大家详细介绍Python访问网络路径的方法和技巧,并介绍如何通过优化Python代码来提升…

如何建立一个网站——p1

这里就说一下我是怎么做出来的, 1,首先要去阿里云或者腾讯云申请一个云服务器,如图 有免费适用的云服务器,一般就是两三个月的体验时间。 申请好服务器后,就要用到宝塔了,去搜索宝塔面板 进入这里下载好…

开源免费的多数据库工具Chat2DB

Chat2DB v1.0.11使用 当前使用的版本为1.0.11,目前已经更新到2.0.1版本。 一.Chat2DB介绍 Chat2DB 是一款开源免费的多数据库客户端工具。 能够将自然语言转换为SQL,也可以将SQL转换为自然语言。 支持windows、mac本地安装,也支持服务器端…

chatgpt赋能python:Python的就业前景——解析云计算与Python的结合

Python的就业前景——解析云计算与Python的结合 Python是一种高级编程语言,具有高度的可读性和简洁性,并已成为Web和大数据的主流语言之一。Python广泛应用于数据科学,机器学习,Web开发,游戏开发和金融等领域&#xf…

win10系统安装tensorflow

win10系统安装tensorflow 1 打开conda的cmd,用conda建个名字为tensorflow的毛坯房,并且这个毛坯房以后用到的唯一装修工具是python3.8。输入: conda create -n tensorflow python3.82 查看创建的虚拟环境 conda info --envs3 进入这个毛坯房…

【CAN卡通信的下位机-STM32cubeIDE-hal库+STMF4xx+数据发送和接收+中断接收方式+基础样例(2)】

【CAN卡通信的下位机-STM32cubeIDE-hal库STMF4xx数据发送和接收中断接收方式基础样例2】 1、概述2、实验环境3.1 问题描述3.2 问题已解4、自我尝试与努力(1)在网上查照相关配置文章,进行配置对比。(2)对比st的官方样例例程。(3)请教大佬,帮忙查看代码和…

使用langchain及llama_index实现基于文档(长文本)的相似查询与询问

文章目录 1. 引言2. 简介3. 带关键字的查询方案4. 不带关键字的总结询问5. 实现代码 1. 引言 在调用ChatGPT接口时,我们常常受到4096个字符(token)的限制。这种限制对于处理长文本或者需要对文档进行相似查询和询问的场景来说是一个挑战。然…

老胡周刊QA微信机器人(基于ChatGPT)

背景 先做个介绍吧,老胡的信息周刊是我从2021-08-16创立的周刊,截止到目前(2023-05-29)将近两年时间,目前已经有92期周刊,中间基本没有断更过,一共发布资源统计如下: 🎯 项目 288🤖 …

利用qt实现机器人可视化界面,并在界面上控制机器人各个关节运动

本工程借助于clion配置的qt环境,同时依赖eigen tinyxml2等开源库,也借鉴了博客上一些文章,具体哪些忘记了,十分抱歉。本工程仅供参考。机械臂模型为史陶比尔官网的TX2-60L-HB。可以去那下载对应的stp文件。 最终图: 通…

宝塔教程AI创作系统搭建详细教程

一、前言 众所周知,宝塔Linux面板是提升运维效率的服务器管理软件,经过200多个版本的迭代,功能全,少出错且足够安全,已获得全球百万用户认可安装。 优势: 使用宝塔前: 手工输入命令安装各类软…