简介: 随着阿里巴巴多元化业务 20 多年的高速发展,技术体系经历了 web 时代、移动化时代、数据智能时代、云计算时代等多个重大变革。在这些变革中,开发者面对的技术体系、工具体系、知识体系也在不断进化。研发工具在其中起到了技术规模化和降本提效的关键作用。

随着阿里巴巴多元化业务 20 多年的高速发展,技术体系经历了 web 时代、移动化时代、数据智能时代、云计算时代等多个重大变革。在这些变革中,开发者面对的技术体系、工具体系、知识体系也在不断进化。研发工具在其中起到了技术规模化和降本提效的关键作用。

工具体系总览

通常企业中技术人员会按照技术工种分为前端、移动端、服务端、数据、算法、测试、运维等多个角色,这也代表着当前软件工程领域的几大技术分工。每种技术栈都有自己独有的技术发展路径和配套工具集,在阿里巴巴除了这种纵向的技术维度切分以外,还存在按照用户感知路径从前往后的横向切分。比如偏向业务侧的 no-code/low-code 编程,偏向通用侧的 pro-code 编程等。

研发工具体系发展大体分为:技术栈标准化、工具流程平台一体化、细分场景技术多样化三个主要阶段。

在一种特定技术领域发展初期或者公司刚成立之时,会出现技术框架百家争鸣,多种研发流程并行的情况,通常主流技术栈收敛是提升研发效率的第一选择。比如阿里开发中 Java 技术栈人员占比超过 50%,基于 Java 技术栈演进出的中间件、编程框架、配套工具,以及研发流程会高度耦合,形成统一研发解决方案。

解决方案的产品化会诞生一体化的工具流程平台,而此平台对企业的核心收益在于将固有流程标准化和自动化,抬升了所有技术员工的技能底线,从而提升平均人效。另一方面工具平台可以帮助企业积累可用资产,并将过程数据进行汇总分析,为管理者提供决策依据。

研发工具发展的第三阶段是与企业业务深度耦合和定制后的场景化,实现特定领域的效能突破。比如 OA 领域的无代码编程、前端智能化 P2C、服务端函数编程等。

阿里巴巴 DevOps 平台

我们通常所说的 DevOps 是计划、代码、开发、测试、发布、运维、监控的全流程,分为三大阶段:需求分析阶段、代码开发阶段、交付运维阶段,分别对应以需求为中心、以代码为中心、及以应用为中心的三个工具平台。

平台首先需要解决的是如何管理企业研发类资产的问题,通常分为知识类资产(需求、文档、设计图等)、代码类资产(程序、配置、数据等)、应用与资源类资产(实现对外服务的逻辑单元以及背后的物理资产)。其次需要记录研发过程所产生的数据,用于分析寻找提升效率的路径。

工具平台会将资产数据和过程数据沉淀到统一的数据中台之上。而串联数据的正是 DevOps 从计划到监控的标准化流程。在阿里我们称之为价值流,代表着一个业务价值从定义到实现的全过程,而这种价值交付的速度正是研发效能。

基于“云”的 DevOps 体系

当前企业上云几乎成为必选,建立 DevOps 体系的时候必须要考虑“用好云”的问题。从阿里巴巴的经验来看,“用好云”的关键是给开发和运维两种角色分别建立用云的工具切面。

运维或者 SRE 这个角色是基础设施的创建和维护者,他所关注的是大量零散的 IT 资产,如何管理这些资产,控制其生产和运维流程是最重要的。我们会选择一个基于 ITIL 或者 ITSM 的“云资源管理平台”来帮助运维人员提升管理效率,因此称之为面向“资源”的管云界面。

开发和测试所关注的是如何快速安全的将业务需求转变为线上可以被使用的服务。一个或多个服务的组合我们称之为“应用”,而应用可以运行在一系列云资源之上,因此它会变成一系列资源的逻辑归组。我们会建立应用的开发、测试、运维流程,并将这些流程配置到一个“应用管理平台”之上,这就是面向“应用”的用云界面。

在阿里巴巴,我们通过“云资源管理平台”和“应用管理平台”实现了产研人员与云的有效连接,并通过平台的流程抽象,实现了对云技术细节的屏蔽,提升了各角色用云的效率,并将企业“资源”与“应用”两种最重要的资产沉淀下来。

DevOps 工具的云原生趋势

随着 kubernetes、容器化、Serverless、Service Mesh 等完全基于云的技术体系逐步成为业界事实标准,云原生化成为了众多企业技术升级的目标。DevOps 工具体系需要进行升级以适应云原生的发展趋势。

Kubernetes 是云原生的代表技术,首先它从容器编排能力开始不断演化,不但实现了对底层物理资源的有效屏蔽,还发展出非常强的可编程的扩展能力。基于此能力发展出了一些列中间件、运维工具,甚至是编程框架;其次它具有面向终态的特性,这种声明式的资源运维模式与传统面向过程的运维模式有着本质区别,有机会彻底摆脱人的控制,实现无人值守的变更。因此云原生的 DevOps 工具不但需要适配云原生的技术和产品,而且要能够继承面向终态的思想,来进一步提升研发运维效率。

阿里巴巴将 GitOps/IaC 理念与云原生技术相结合,并融合传统应用管理经验产生了新一代云原生研发运维平台。相比传统模式,新平台具备以下几个特点。

应用终态运维

开发人员可以通过代码去描述应用的交付过程和运行时状态,系统根据变更内容自主决定执行策略,将应用状态逐步逼近终态。在此过程中系统可以接收用户指令或者监控数据的变化,来自主改变变更路径,确保系统安全可靠。

分层定义和管控

架构师、SRE、测试工程师、安全工程师都可以对应用的描述代码进行模块化定义,在代码上实现 import功能,引入各个角色的预定义内容和管控规则。应用负责人可以在规则允许的范围内对应用进行细节定义。这样的分层设计一方面可以减少应用定义的复杂度,另一方面可以满足企业分层管控的要求。

配置收敛统一

将包括交付流程、规则配置、配置项、资源配置等方方面面的内容,通过代码这个唯一形式来定义,可以实现运维定义的收敛,大幅降低开发理解各种云产品的复杂度。而且可以形成统一操作界面,防止不同系统不同权限策略带来的不一致风险。

变更流程一致性

任何配置的变更都简化为代码变更后,可以通过统一的 CICD 流程安全可靠地推进到生产环境。这种流程一致性可以最大程度上保障质量和控制风险,甚至可以为运维变更准备自动化测试用例。

总结

阿里巴巴的业务仍在高速发展,云的技术尤其是云原生领域也在快速成熟,不管是软件开发方法还是工具体系都需要及时应对挑战,不断地降低技术门槛,不断地提升效率,不断地降低风险。同时云原生带来的标准化和开放性,也让阿里云云研发团队有机会不断地将内部的实践产品化,通过“云效平台”对外输出,服务于广大云上开发者。期待我们的这些工具和实践可以让大家“用好云”,并与我们一起分享云所带来的效能红利。

原文链接

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

阿里巴巴 DevOps 工具体系的更多相关文章

  1. 什么是以特性为核心的持续交付|阿里巴巴DevOps实践指南

    编者按:本文源自阿里云云效团队出品的<阿里巴巴DevOps实践指南>,扫描上方二维码或前往:https://developer.aliyun.com/topic/devops,下载完整版电 ...

  2. CODING 受邀参与 DevOps 标准体系之系统和工具&技术运营标准技术专家研讨会

    2019 年 5 月 24-25 日,国内领先的一站式 DevOps 解决方案供应商 CODING 作为腾讯云的深度合作伙伴,受邀参加在成都举行的由 TC608 云计算标准和开源推进委员会主办,中国信 ...

  3. 业务驱动的全景监控体系在阿里的应用 | 阿里巴巴DevOps实践指南

    编者按:本文源自阿里云云效团队出品的<阿里巴巴DevOps实践指南>,扫描上方二维码或前往:https://developer.aliyun.com/topic/devops,下载完整版电 ...

  4. Web Scale IT 与 6 种 DevOps 工具

    新年伊始,在总结过去一年 IT 行业变化和发展的同时,不少企业更关注未来一年甚至几年的行业趋势.Gartner 于 2014 年发表了文章 Gartner Says By 2017 Web-Scale ...

  5. 实战:阿里巴巴 DevOps 转型后的运维平台建设

    导读:阿里巴巴DevOps转型之后,运维平台是如何建设的?阿里巴巴高级技术专家陈喻结合运维自身的理解,业务场景的分析和业界方法论的一些思考,得出来一些最佳实践分享给大家.   前言   “我是这个应用 ...

  6. 阿里巴巴 DevOps 转型后的运维平台建设

    原文:http://www.sohu.com/a/156724220_262549 本文转载自公众号「DevOps 时代」,高效运维社区致力于陪伴您的职业生涯,与您一起愉快的成长. 作者简介: 陈喻( ...

  7. 研发过程及工具支撑 DevOps 工具链集成

    https://mp.weixin.qq.com/s/NYm63nkCymIV3DbL4O01dg 腾讯重新定义敏捷 |Q推荐 小智 InfoQ 2020-09-03 敏捷开发奠基人 Robert C ...

  8. 一文读懂云上DevOps能力体系

    简介: 阿里云ECS自动化运维套件架构师,深度拆解云上运维能力体系建设:自动化运维等级金字塔.自动化运维的进阶模式.DevOps的基础核心.云上标准化部署三大能力-- 序言 云计算行业已经有十多年的发 ...

  9. 阿里巴巴如何进行测试提效 | 阿里巴巴DevOps实践指南

    编者按:本文源自阿里云云效团队出品的<阿里巴巴DevOps实践指南>,扫描上方二维码或前往:https://developer.aliyun.com/topic/devops,下载完整版电 ...

  10. 阿里巴巴基于应用和变更的交付模式|阿里巴巴DevOps实践指南

    编者按:本文源自阿里云云效团队出品的<阿里巴巴DevOps实践指南>,扫描上方二维码或前往:https://developer.aliyun.com/topic/devops,下载完整版电 ...

随机推荐

  1. CAST电子部单片机方向授课——串口通信 预习文档

    CAST电子部单片机方向授课--串口通信 预习文档 课前小准备 安装串口调试助手 第一步:进入Microsoft Store 第二步:在Microsoft Store中搜索 "串口调试助手& ...

  2. 3DCAT+上汽奥迪:打造新零售汽车配置器实时云渲染解决方案

    在 5G.云计算等技术飞速发展的加持下,云渲染技术迎来了突飞猛进的发展.在这样的背景下,3DCAT应运而生,成为了业内知名的实时云渲染服务商之一. 交互式3D实时云看车作为云渲染技术的一种使用场景,也 ...

  3. Linux快速入门(一)Linux基础知识

    我的环境:Ubuntu(后面涉及到的Linux均为Debian系列) Linux不同发行版的包管理方式 (1)Redhat系列:Redhat系列的包管理方式采用的是基于RPM包的YUM包管理方式 (2 ...

  4. 记录--实现一个鼠标框选的功能,要怎么实现和设计 api?

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 前两年在一家做电商的公司做了一个需求:鼠标框选商品卡片,开始拖拽的时候合成一个然后改变位置,页面上有几千个所以还要结合虚拟列表.当时 ...

  5. Java freemarker 模板生成word动态表格

    1.新建一个word文档 2.把调整完的word另存为xml格式: 3.使用文本编辑器打开 4.xml格式化XML 在线格式化 | 菜鸟工具菜鸟工具-XML 在线格式化..https://c.runo ...

  6. spring boot @Scheduled 单线程的问题

    package com.lxw.lxwDemo; import org.springframework.scheduling.annotation.EnableScheduling; import o ...

  7. UE4中的C++编程简介

    对官方文档的学习链接 利用UE创建一个C++基类 在编辑器中可以选择父类,根据这个父类我们可以创建一个基类用于后续的蓝图类制作. 以Actor父类为例创建基类,其头文件会包含一个构造函数,一个Tick ...

  8. Typora基础使用教程

    Typora基础使用教程(入门级) 安装和激活 安装 typora任意地方搜索下载即可 激活 百度网盘链接链接:https://pan.baidu.com/s/1WKig_3-hkDZTRjS1rgG ...

  9. 初学 FSMC - 扩展外部SRAM(一)

    1. SRAM控制原理 ​ STM32控制器芯片内部有一定大小的SRAM及FLASH作为内存和程序存储空间,但当程序较大,内存和程序空间不足时,就需要在STM32芯片的外部扩展存储器了. STM32F ...

  10. 初学STM32 CAN通信(一)

    # 初学STM32 CAN通信(一) 1. CAN协议简介 ​ CAN是控制器局域网络(Controller Area Network)的简称, 是国际上应用最广泛的现场总线之一 ,近年来,它具有的高 ...