杭州幻熊:从一周发版一次到每日交付

通过云效解决企业代码托管和软件集成发布问题,整体发布节奏由原来一周发版1次提升为每日交付;发布时长由原来一次发布30分钟提升为2分钟;现在各个项目组完成代码评审后自动集成发布,目前有30条生产环境流水线,单次发布节省20分钟的情况下可以节省10个小时。

背景

出于对研发效能的深刻理解与共同追求,于是有了这次杭州幻熊科技与云效的对话。我们将全方位展示本次共创的过程、最终产生的效果,希望能为不同行业的创业与小微企业提供可以借鉴的经验。

杭州幻熊科技是一家根植于婚礼行业的移动互联网公司,帮助客户创造并提升品牌与消费者之间的关系。主要从事结婚新零售和产业云平台建设,旨在提供行业出色的产品,推进中国婚嫁行业的互联网化变革,重塑行业服务体系与商业文明,建立全新的婚嫁消费格局。幻熊科技旗下产品主要包括云设计系统、智能一体机、供应链云仓、移动端APP和小程序。小而精的技术团队保障产品发布的同时承担着更为重要的创新任务,其中上海分公司15人,主要从事具体产品研发,包括移动端APP、小程序和H5等;武汉分公司10人,主要从事婚礼实景VR研究和开发。

面临的问题

经过进一步接触,我们了解到为了支撑快速发展的行业业务,企业内部正在调研并准备搭建持续集成和持续交付平台。云效的出现恰好在时机上契合了企业流程升级的需求。

企业现状

流程升级首先要洞悉当前流程遇到了什么问题,找出其中影响效率与质量的关键节点,加以改进并获得良好的效果。以幻熊上海研发团队为例,研发人员共15人,其中:

  • 服务端4人,主要开发语言PHP。

  • Web前端4人,主要开发语言JS。

  • Android客户端3人,主要开发语言JAVA。

  • iOS客户端2人,主要开发语言SWIFT。

  • 测试2人,负责所有产品测试。

技术团队负责产品全栈开发,整体规模较小并且没有专职的运维人员。基于快速发展的业务,要求产品迭代速度持续加快。迭代次数增加同时加重了发布负担,发布逐渐变成了制约产品创新的瓶颈。流程升级前基本情况如下:

  • 产品迭代周期以周为单位。

  • 代码通过开源代码平台“码云”托管。

  • 版本发布以FTP+手工部署的方式进行。

  • 自建Jenkins流水线执行Android/iOS客户端构建。

企业痛点及解决方案

  • 发布流程和人员协调复杂,时间长:为了保障服务器安全,生产环境只有特定的人员可以操作。所有项目发布都需要事先协调,并等待有权发布的人员,等待和依赖发布人员需要消耗较长的时间。

  • BUG从修复到验证耗时久、效率低:测试环境通常需要频繁打包,一个BUG从修复到部署至测试环境进行验证,消耗时间较长,且多为重复性工作,已经严重影响到了开发效率。

  • 人工部署生产环境存在安全隐患:具有发布权限的开发人员身兼数职,直接通过人工执行部署不能避免误操作,给生产环境安全带来了极大的隐患。

以上是企业切身感受到的痛点,从这些问题来看恰好是云效致力于解决的问题。通过良好的分支策略、自动化的流水部署和环境管理,增强的测试与质量卡点,只需要简单的变化就可以将成熟的DevOps经验应用于企业研发流程,解决企业遇到的实实在的问题,总结下来有以下几点:

  • 增加代码评审加强开发质量。

  • 高度自动化,尽可能减少人工干预。

  • 需要快速且准确地反馈问题。

  • 加强质量管控和可视化呈现。

解决效果

小微研发团队通常不会面临复杂的开发策略与产品维护需求,其核心诉求是产品快速迭代,以满足不断变化的业务需求。引入成熟的方法快速提升研发效率,规范现有流程是最直接的方式。这是一个小变化引起大收益的典型案例,通过以下对比可以看到流程升级带来的变化:

对比项目

原来

现在

发布方式

手工发布

自动发布

正式发布频率、时长

1次/周 平均30分钟/次

随时发布 2分钟/次

代码集成频率

3~4次/日

随时集成

BUG修复完成至开始测试等待时间

平均2小时

5分钟

代码评审

无强制要求

合并请求强制评审

构建通知

无通知

自动钉钉通知

测试、生产环境管理

人工

工具自动管理

质量和效能提升:

  • 流程升级前,测试环境和生产环境部署完全依赖开发人员;流程升级后,发布几乎不占用人力,每周至少节省1.5人/日。

  • 正式发布限制解除,可以按照业务需求随时发布。

  • 代码集成频率提升,集成问题随时发现。

  • 等待测试时间缩短到5分钟,测试吞吐率提升数倍。

  • 生产环境误操作问题基本消除。

目前幻熊科技服务端程序和Web前端程序已建立近60条流水线,支持测试与生产两套环境的自动部署。由Jenkins管理的Android/iOS移动应用也正在逐步纳入流水线,全部实现自动构建和打包发布。

打出效率的组合拳

代码平台和流水线自诞生之日起,即致力于解决企业代码托管和软件集成发布问题。结合业界先进经验和阿里巴巴多年工程实践,将质量和效能融入工具,实现开箱即用的代码管理与自动化流水线。在幻熊科技的方案中,使用代码平台托管代码,使用流水线管理生产和测试的发布,通过自动触发流水线实现自动化部署,成倍提高了集成、测试、发布效率。

用代码平台增强代码管理

代码平台是一款企业级代码管理应用,提供代码托管、代码评审、代码扫描、质量检测等功能,有效保护企业代码资产,助力企业实现安全、稳定、高效的研发生产。

  1. 研发模式

通过对业务场景和研发模式梳理,采用基于主干的开发模式即可满足日常开发需求,如图:

1

2. 代码评审

利用代码平台提供的代码评审能力,设置代码合入主分支前必须评审通过,如图:运营管理后台合并记录。

1发起代码合并评审。

1强制代码评审有利于提高代码质量,帮助开发人员尽早发现问题,提高问题修复的效率。更进一步,企业还可以结合自身实际情况,启用代码静态扫描和代码规范检查。11

用流水线赋能集成与交付

流水线是一款企业级、自动化的研发交付流水线,提供灵活易用的持续集成、持续验证、持续发布功能,帮助企业高质量、高效率的交付业务。

流水线是持续交付的载体,通过构建自动化、集成自动化、验证自动化、部署自动化,完成从开发到上线过程的持续交付。通过持续向团队提供及时反馈,让交付过程高效顺畅。幻熊科技服务端程序和Web前端程序总共有近60条流水线。

流水线整体方案

1

完整的研发流程说明如下:

  • 开发人员基于dev集成分支开发,流水线输入源设置为dev集成分支。

  • 开发自测通过后,代码提交远端分支并触发集成分支流水线运行,构建完成后自动部署测试环境。

  • 测试人员收到通知执行测试验证。

  • 测试环境验证通过后,dev分支发起合并请求,开展代码评审工作。

  • 代码评审通过后合并到master发布分支。

  • 开始触发正式环境流水线运行,构建完成后部署正式环境。

  • 测试人员开展正式环境验收工作。

1. 模板化快速创建流水线

产品提供多种流水线模板,便于企业快速上手创建一条适配的流水线场景。

1

2. 可视化编排和展示

所见即所得,流水线运行过程直观展示,企业可完整看到当前流水线运行所处阶段和场景。

1

3. 在关键节点设置卡点

效能提升的同时质量问题同样值得关注,流水线支持在关键位置设置卡点,例如测试用例通过之后才能允许发布,可以在发布前添加人工审批卡点。

4. 环境部署

流水线区分测试环境和生产环境两条流水线;测试环境通过流水线的代码提交自动触发部署,整个部署过程不需要人工干预,测试人员可以进行立即验证,部署失败可快速回滚。

11

5. 钉钉消息通知

用户可以在流水线中配置钉钉群通知插件,为钉钉群自动发送流水线运行信息。

1

消息通知钉钉群流水线运行结果:

1

结语

持续交付是软件企业最需要的能力,意味着从业务需求开始到交付上线之后的端到端的过程,做好持续交付对整个研发体系意义重大。从理论上讲,通过持续交付可以满足每天、每周、或者满足业务需求的任何频度。

持续交付是DevOps最佳实践之一,利用DevOps的能力和实践可以帮助企业显著提升软件交付效能,提升工程生产力。DevOps不是趋势,是事实上都应该采用的软件研发和交付方法,它能给企业带来更高的产出,创造更大的价值。不是每个企业都需要有DevOps专家,通过成熟的研发效能工具,小微企业同样可以享受DevOps带来的收益。

作者(合作者)介绍

吴同伟,技术平台总监,负责幻熊科技所有产品线的研发管理和平台团队建设。产品主要有礼成(婚礼策划服务)、人人宴(婚宴服务)、北极熊(婚礼业智慧营销系统)、云设计系统(云渲染引擎)、智能一体机(婚宴酒店行业赋能)等。在平台内推动敏捷研发落地和DevOps转型。

张莉,前阿里巴巴云效解决方案架构师,拥有多年敏捷与持续集成工作经验,经历过通信及互联网多个行业,曾负责大麦持续交付流程建设,成功帮助飞猪、饿了么研发流程与阿里巴巴集团融合,对项目管理、持续交付过程中的痛点有深刻认识,专注于帮助中小企业提升研发效能,完成DevOps转型。

重要

本文内容非阿里云官方提供,如您发现本文档存在侵权内容或其他问题,请提供相应证明材料并在本页面内提交反馈信息,阿里云会协调或通知相关作者进行处理。