移动研发 DevOps 落地实践

简介: 本文将围绕支付宝如何随着移动市场的高速发展,逐步沉淀优化出适用业务发展需求的研发效能实践。

作者:姚兰天(十镜),蚂蚁金服技术专家。

概要:传统的研发模式已经无法适应企业在数字化转型中快速迭代以及研发协同的要求,建设符合业务场景特性和有效支撑高并发、持续迭代集成需求的研发效能实践迫在眉睫。
本文将围绕支付宝如何随着移动市场的高速发展,逐步沉淀优化出适用业务发展需求的研发效能实践。

现场视频):http://t.cn/Ai9HuCNT

大家好,我是来自支付宝终端工程技术团队的十境。本文将带领大家了解支付宝移动端如何随着移动市场的告诉发展,逐步沉淀优化出适用业务发展需求的研发效能实践。

0. 背景

  • 如何解决百万级代码的极速构建?
  • 如何让上百开发者在同一个 App 上高效研发协同?
  • 如何保障代码频繁变更下的交付质量?

显然,传统的研发模式已经无法适应企业在数字化转型中快速迭代以及研发协同的要求,建设符合业务场景特性和有效支撑高并发、持续迭代集成需求的研发效能实践迫在眉睫。

1. 研发协作平台现状

关于支付宝在移动端研发平台构建的历程,首先我们先展开看看目前平台的现状,并讲述如何参考 DevOps “三步工作法” 来正向建模我们的交付价值流,以及这些活动中比较核心的分支模型,构建,持续集成等。

研发协作平台大概从 2014 年开始建设,如今支持的 iOS 和 Android 客户端代码量都已经超过 300w 行,拆分的 Bundle 数量也都在 300 个以上。我们每周的构建次数在 1.4W,安装包平均每天会灰度 2~3 次,开发测试同学达到近千人的规模。

我们支撑了蚂蚁集团支付宝、网商银行、财富、口碑等产品的交付,支持的技术栈从最开始的 Android 和 iOS,演进到厂商 SDK、小程序、IoT 及桌面应用等。在这些能力输出的下层是我们沉淀的一套研发协作流程,从需求到开发、测试、交付、及发布后的反馈闭环。

支付宝业务的飞速发展,从工具到超级 App,代码量猛增到 300W+。技术架构上,采用了模块化动态加载的技术,这就给我们提了一个问题,如何将 300+ 个 Bundle,在不同的团队里开发,集成,变成一个高质量的 App 推送到用户手机上。

2. DevOps 三步工作法

DevOps 三步工作法,第一步,我们正向价值流建模,把研发划分为 5 个阶段(需求阶段、开发阶段、测试阶段、集成阶段以及发布阶段),定义每个阶段的准入准出标准。比如需求分析的结果需要拆分到 User Story 级别,通过大家需求评审,达成一致。接着,每个阶段我们提炼出最重要的活动,比如开发阶段,开发同学每天最多的就是写代码,代码 Review,以及代码 MR/Push 后触发的自动化流水线,如编译、扫描、自动化测试等。这些阶段和每个阶段的活动以及人员之间的协作,就构成了我们交付大图的脉络,即我们常说的价值流

通过正向价值流的建模,结合团队的开发实践,便可以得到研发协作平台产品的一个信息架构图。

如上图所示,随时间演进,我们沉淀出了一套产品信息图:从最开始仅仅是安装包构建的一个在线工具,到产物管理,版本管理,架构拆分后的模块信息、模块构建管理,根据构建的产物及场景的不同,抽象出了构建配置、渠道配置、持续集成的配置,当然还有其它元数据如证书信息的配置。

我们参考了敏捷、Scrum 实践,抽象出迭代的概念来组织每个模块涉及的资源如代码仓库、需求、缺陷、任务、持续集成流水线还有最重要的团队和人员。发布定义了我们交付的产物,同时也是各团队工作集成到一起的大容器。

这是我们研发协作平台的门户首页,开发者能直观地看到自己关注项目的日常发布、迭代信息,以及每天需要解决的待办等,每个类目和我们上一页提炼的信息架构相对应。

  • 拆解「依赖配置」

前面提到我们通过架构拆分,团队模块化协作的方式来应对激增的业务需求。那么之所以有这张截图,是想让大家对我们的依赖配置有个直观的感受,每个模块的产物可以理解为一个 Zip 包,在某一个安装包发布中管理这样由 300 多个 Bundle 构成的一个依赖列表。我们的需求集成某种意义上就是这个依赖列表中中模块版本的升级。模块拆分也让我们的小批量快速交付成为得以践行、拥有 2 周发布一个大版本的能力。

  • 分支模型

需求管理我们可以借助 Jira、Redmine 等工具,或对接内部的项目管理平台。这里我直接从开发阶段的活动开始。

首先说下 MR,这是我们的分支模型:“基于分支开发,基于主干发布”。开发阶段基于 Master 创建迭代分支,基于迭代分支创建 Feature 分支通过 MR 方式在合并到迭代分支前,做一次 Code Review 卡点。集成阶段便可以直接基于 Master 分支创建 Bugfix 分支然后在 MR 回 Master 分支。发布阶段基于客户端版本创建 Tag。

1. 构建的定义与技术架构

接下来说说构建。我把构建定义为代码和配置经过构建工具和脚本在环境中执行而产生产物的过程。因此我们要关注这 4 个要素“代码、构建脚本、执行环境、产物管理”。代码和构建脚本由开发者提供,我们要帮忙管理的是环境和产物。比如 IoT 提个需求过来要支持他们的构建,其实就是给他们准备一个 Docker 镜像,定义好输入输出,把他们产物发布到 Maven 仓库或云存储中。

  • 构建:技术架构

理解了构建的要素,技术架构也就很明确了,上面是我们支持的构建业务类型,调度是执行的核心能力,Docker 和 MacOS 是我们涉及的环境,借助 Jenkins 来连接这些执行机器。环境管理这块主要是 Docker,Windows 对 Docker 的支持也很好,我们的 IDE 构建就用的 Windows Docker。我们有 30 多台 Mac Pro,为了更好的管理,采用 Ansible 来做一些预置和软件升级的工作。

  • 构建:Demo

这是我们的一次 Android 安装包构建,时间是 3 分钟,通过 Jenkins 的界面可以很直观的看到经历了那些步骤及耗费的时间,如果有错误也能很快定位到。

2. 自动化流水线架构设计

从构建的单项能力建设,慢慢扩展到了静态扫描、自动化测试、包大小检查,安全扫描等验证的需求。我们首先会想到持续集成流水线,我们调研了 Jenkins、Gitlab、Drone、CircleCI、TravisCI 等主流的 CI 工具,最终还是决定自研一套 CI 平台来连接公司内部的各个团队的验证服务。从这个架构图可以看出 CI 的内核是 Pipeline 流水线的定义与解析,验证执行,以及连接各服务的接入规约。上层是支持的业务类型,以及触发流水线的机制设定。

流水线也让我们不停的思考如何去更好的可视化,以及 DevOps 实践“三步工作法”中的逆向反馈设定。比如流水线编排时如何快速验证,分层分级验证,做到有效反馈。根据反馈再快速修复。

  • 自动化流水线:列表 Demo

这是我们的持续集成列表页面,选择 IOT 新业务快速试错,将扫描和冒烟测试都展示给开发测试同学,这样对代码 Push 后的一个验证有个全局认识,然后他们便可以更好的局部节点优化,比如冒烟测试要获取什么样的报告。

  • 自动化流水线:示例 Demo

这是一条流水线的详情页面,点击每个节点可以看到执行的状态和产物信息,依赖信息等。每个节点也可以选择跳过执行,或选择从失败节点重新运行,满足业务接入流水线不同阶段的使用场景。

3. 发布:健康度

接下来再介绍一些我们内部灰度发布的一些质量指标设计。这是我们在集成过后经历内灰、外灰、发布的界面,每个阶段我们会聚合各种质量和反馈信息,来帮助我们去推进每个阶段。

  • 发布质量分数

这是发布质量的一个概要信息,及灰度情况。质量分的曲线能很好的配合我们工作的节奏。虽然刚开始质量分非常难以设计,不容易全面并准确衡量,但质量分一定要有,然后不停地迭代。刚开始可以参考 Sonar 的 Quality Gates 和它的质量维度来设计。

  • 发布:质量维度

这是我们质量维度的设计,供大家参考一下。

3. 总结

最后简单总结,以上内容首先介绍了支付宝客户端研发的现状,通过 DevOps “三步工作法” 第一步正向建模工作流,梳理了需求、开发、测试、集成、发布这 5 个阶段及每个阶段的重要活动,形成价值流动的脉络图,并参考敏捷开发实践来组织我们的产品信息架构。然后重点讲述了我们的构建和持续集成流水线的设计与实现,通过流水线编排、发布阶段质量分的设计来实践 “三步工作法”的逆向反馈机制。 三步工作法。第三步持续学习和改进可以基于前 2 步的来达成。

以上介绍的支付宝移动研发 DevOps 落地实践,目前已经通过移动开发平台 mPaaS 对外输出一部分能力。

通过 mPaaS,我们针对移动端产品的研发管理,能够从产品需求准备,研发,构建,验证到集成等多个项目阶段,充分节约管理成本,提升研发效率。

随着软件研发的模式由传统的瀑布式开发逐步向敏捷开发和 DevOps 演进,变得愈来愈自动化和智能化,研发、测试、发布统一完成线上化和流程化将全面提升研发协同效率,并给企业带来更多的业务价值、

由于篇幅限制,很多技术要点我们无法一一展开,欢迎大家通过技术文档或点击“阅读原文”进一步了解 mPaaS :https://tech.antfin.com/docs/2/49549

| 活动推荐:MTSC 2019 测试开发大会

MTSC2019 第五届中国移动互联网测试开发会将于 6 月 28-29 日在北京国际会议中心举行,50+ 来自 Google,BAT,TMD 等一线互联网企业的测试大咖分享精彩议题,涵盖移动自动化测试、服务端测试、质量保障 QA、高新测试技术(AI+、大数据测试、IoT 测试)等专题。

蚂蚁金服多位技术专家将在大会上分享精彩议题,解密蚂蚁金服内部移动测试 2.0+ 演进之路、代码实时染色系统如何完成代码覆盖率检测等,期待与你交流。

往期阅读

《开篇 | 蚂蚁金服 mPaaS 服务端核心组件体系概述》

《蚂蚁金服 mPaaS 服务端核心组件:亿级并发下的移动端到端网络接入架构解析》

《mPaaS 核心组件:支付宝如何为移动端产品构建舆情分析体系?》

《mPaaS 服务端核心组件:移动分析服务 MAS 架构解析》

《蚂蚁金服面对亿级并发场景的组件体系设计》

《自动化日志收集及分析在支付宝 App 内的演进》

关注我们公众号,获得第一手 mPaaS 技术实践干货

QRCode

钉钉群:通过钉钉搜索群号“23124039”

期待你的加入~

目录
相关文章
|
5天前
|
运维 安全 Devops
构建高效稳定的云基础设施:DevOps与容器化技术融合实践
在数字化转型的浪潮中,企业对于IT基础设施的要求越来越高,不仅需要快速响应市场变化,还要确保系统的稳定与安全。本文深入探讨了如何通过融合DevOps文化和容器化技术来构建一个高效、稳定且易于管理的云基础设施。通过实际案例分析,阐述了持续集成/持续部署(CI/CD)流程的优化、自动化测试、监控以及日志管理等关键环节的实施策略,旨在为运维专业人员提供一套切实可行的解决方案。
35 3
|
5天前
|
运维 Kubernetes Devops
构建高效可靠的云基础设施:DevOps与容器化技术融合实践
【2月更文挑战第30天】 在当今快速迭代和竞争激烈的软件开发领域,传统的IT运维模式已难以满足业务发展的需要。本文将探讨如何通过整合DevOps文化和容器化技术,构建一个既高效又可靠的云基础设施。文章首先回顾了DevOps的核心理念及其对运维工作流的影响,接着深入讨论了容器化技术的优势和挑战,并提出了一套结合两者的实施方案。最后,通过案例分析展示了该方案在实际环境中的应用效果和潜在益处。
|
4天前
|
运维 Kubernetes Devops
构建高效稳定的云基础设施:DevOps与容器化技术融合实践
【5月更文挑战第15天】 在当今的云计算时代,企业为了保持竞争力,不断寻求提高软件交付速度和服务质量的方法。本文将探讨如何通过结合DevOps原则和容器化技术来构建一个既高效又稳定的云基础设施。文章首先介绍了DevOps的核心概念及其如何促进开发与运维的协作,然后详细阐述了容器化技术如何优化应用部署和运行环境。最后,通过一个实际案例分析,展示了这种融合策略在提升自动化水平、加快部署速度以及增强系统稳定性方面的具体成效。
|
5天前
|
运维 监控 Devops
构建高效稳定的云基础设施:DevOps与容器化技术融合实践
【5月更文挑战第14天】 在当今快速迭代的软件发展环境中,传统的IT运维模式已难以满足业务需求。本文探讨了如何通过DevOps文化和容器化技术的融合来构建一个高效且稳定的云基础设施。文中不仅分析了DevOps的核心理念及其对于提升运维效率的影响,还深入剖析了容器化技术如Docker和Kubernetes在自动化部署、弹性伸缩及微服务架构中的关键作用。此外,文章还将分享一系列实践经验,帮助读者理解如何在实际工作中将DevOps与容器化技术有效结合,以支持业务的敏捷性和可靠性。
18 2
|
5天前
|
运维 Kubernetes Devops
构建高效稳定的云基础设施:DevOps与容器化技术融合实践
【5月更文挑战第14天】 随着云计算的普及和企业数字化转型的深入,构建一个高效、稳定且能快速响应市场变化的云基础设施已成为众多组织的技术战略核心。本文将探讨如何通过DevOps文化和容器化技术的结合,实现自动化运维流程,提升服务部署效率,确保系统的可扩展性和高可用性。我们还将分析面临的挑战及解决方案,并展示在实际案例中的应用成果。
6 0
|
5天前
|
安全 Devops 测试技术
深入了解阿里云云效DevOps:构建高效软件开发实践
阿里云云效DevOps,集成CI/CD与自动化测试,提升开发效率。支持持续集成确保代码质量,自动化测试加速交付,多环境及灰度发布保障安全可靠性。助团队构建高效开发实践,增强竞争力。
19 1
|
5天前
|
运维 Kubernetes Devops
构建高效自动化运维体系:DevOps与容器化技术融合实践
【5月更文挑战第6天】随着企业IT架构的复杂化以及快速迭代的市场需求,传统的运维模式已难以满足高效率和高质量的交付标准。本文将探讨如何通过结合DevOps理念和容器化技术来构建一个高效的自动化运维体系,旨在实现持续集成、持续部署和自动化管理,提升系统的可靠性、可维护性和敏捷性。
|
5天前
|
运维 Kubernetes Devops
构建高效稳定的云基础设施:DevOps与容器化技术融合实践
【5月更文挑战第1天】 随着云计算的普及和企业数字化转型的加速,传统的IT运维模式已无法满足快速迭代和高可用性的要求。本文探讨了如何通过DevOps文化和容器化技术的融合来构建一个高效、稳定且可扩展的云基础设施。文章首先回顾了DevOps的核心理念及其对运维工作的影响,随后详细介绍了容器化技术的基本概念、优势以及在现代云环境中的关键作用。接着,文中以一系列真实案例为基础,分析了将DevOps与容器化相结合时所面临的挑战和解决方案,并提出了一套实施框架。最后,文章总结了这种融合实践对提高运维效率、加快产品上市速度和保障系统稳定性的积极影响,同时对未来的技术趋势进行了展望。
|
5天前
|
Kubernetes Devops Docker
构建高效稳定的云基础设施:DevOps与容器化技术融合实践
【4月更文挑战第30天】 在当今快速迭代和持续交付的软件发展环境中,传统的IT运维模式已不足以满足企业对效率和稳定性的双重需求。本文将深入探讨如何通过整合DevOps理念和容器化技术来构建一个既高效又稳定的云基础设施。文中不仅阐述了DevOps的核心原则、流程自动化的重要性以及容器化技术的基础知识,还提供了一个详细的实施案例,帮助读者理解这两种技术如何协同工作,以支持复杂的应用程序部署和管理。
|
5天前
|
运维 Devops 持续交付
构建高效稳定的云基础设施:DevOps与容器化技术融合实践
【4月更文挑战第30天】 随着云计算的普及和企业数字化转型的深入,传统的IT运维模式已无法满足快速迭代和高可用性的要求。本文将探讨如何通过融合DevOps理念和容器化技术,构建一套高效、稳定且易于管理的云基础设施。文章首先概述了DevOps的基本概念及其在现代IT管理中的重要性,接着介绍了容器化技术的核心组件和优势,最后详细阐述了如何整合这两种技术以提高系统的稳定性和自动化程度,实现持续集成和持续部署(CI/CD),并通过真实案例分析展示了该融合策略的有效性。

热门文章

最新文章