写点什么

如何构建高效自主的容器云交付平台?

  • 2019-10-09
  • 本文字数:4277 字

    阅读完需:约 14 分钟

如何构建高效自主的容器云交付平台?

高效自主的容器化交付平台=敏捷工程理念 x 七牛云交付平台组件(云存储+大数据+容器云)

随着 DevOps 理念的普及,大部分公司已经尝试敏捷项目管理并取得一定的成果,但实际代码生产过程仍然是分角色的瀑布式交付,无法实时开发、实时测试、实时部署,但随着容器和大数据技术的到来,让每个企业都能拥有一套高效自主的容器化交付平台。

11 月 23 日,七牛云架构师实践日第 32 期以「容器技术的实践与分享」为主题,在成都成功举行。七牛云工程效率部负责人李倩,在会上为大家带来了题为《容器云交付平台—实现真的敏捷开发/测试/部署》的精彩分享。


大家好,简单介绍一下,我个人经历做了九年的软件开发和测试开发工作,其中包含四年技术管理经验,2014 年入职七牛在负责工程效率部,目前带领 40 人左右的团队为我们的研发团队提供质量保证,研发流程管理,持续交付平台等工程和质量服务支撑。今天就容器交付方面实践经验给大家分享一下。

七牛云的业务场景


七牛云已经成立 7 年了,现在有 6 条产品线和丰富的行业解决方案,还有一些产品内部运营和私有化项目。体量是非常大,架构上我们基本是微服务化,主要是采用 go,也有其他语言栈,这就需要提供多样性的编译和运行环境。作为一个创业公司,我们的发布要求很高,要很快的响应客户的需求。


大公司和小公司对于 to B 的服务差异在于,小公司能快速应变,考虑需求合理性快速实现,以适应客户的业务,而在大公司里可能需要一个月甚至两个月。我们发布周期一天会有十几次的发布,也会有按时按需的发布需求。另外,我们的协作难度也比较大,有 400 多个研发同时写代码,进行上线、运维。有一些还要进行后续的跟踪和反馈,质量上难以控制。做云计算本质上是在提供「水、电、煤」给各个业务,对可用性和健壮性,质量方面要求非常高,这两年我们面向行业提供完整解决方案,会涉及更多的复杂场景,其中会涉及多产品服务的组合测试,自动化测试用例数量也是非常多的,要高效的运行同时满足高业务覆盖率是非常大的挑战。

工程效率的挑战

在这样的业务场景下,按照角色总结了不同的挑战。



第一,开发同学面临多样化的编译、运行环境,自测难度高,分支合并频繁无法可靠发布。作为工程师,我们七牛要求每个人要对自己的代码负责,所以我们需要给大家提供测试的便利性以及关注代码发布质量的可控性。让开发同学有能力从保证代码的正确执行到去关注业务的正确性。


第二,质量方面,有限的测试资源,我们不可能完全模拟,我们有测试的独立机房,有限的测试环境下,怎样充分利用资源,怎样模拟更多的场景,这些都是要面对的质量问题。


在很多偏业务的公司里,测试看起来是阻碍公司快速上线但又不得不做的事情。那如何提供更快的反馈能力让 QA 同学如何更早介入、更早验证,做到实时测试,更快上线,这也是一个巨大挑战。另外,如何做到对整体质量的把握,对整个代码生产过程的质量管控都是要工程上关注的问题。


第三,运维方面,服务拆分后运维需要管理维护的服务数量级增加了数倍或者数十倍,运维架构复杂度提升,虽然服务可以独立部署,但是由于内部依赖,独立部署的微服务不可测、或者功能不能完整走通。我们虽然是拆开了部署方面提升了速度,但是拆了以后怎样保证在合的时候没有问题。面对这样的架构复杂,怎样提升运维的效果?

解决的思路


下面介绍解决的思路。标准化,关于怎么样让团队更快项目迭代的内容我会省略,然后直接讲敏捷开发,关于全流程的质量保障是怎么做的。重点会讲怎么样把研发过程搬上平台,让开发过程不再是部门壁垒式的,而是真正大家在价值流动过程中看到自己的交互过程,以及提供的延展服务。智能化这块我也会省略,我们做了一些尝试,还是比较有效果的,后面会有一些数字给大家看。

标准化


首先介绍代码生产的过程。代码管理我们用的 github,做了比较完善的持续集成体系,工程师可以多次频繁的提交快速获得每一个代码片段的质量反馈,这里的反馈会包括单元测试,覆盖率合规,代码检查合规。另外 CI 过程耗时我建议 10 分钟以内,如果达不到这样的水平,要分析 UT 是不是写的有问题,是什么导致你的损耗,另外就是构建平台本身效率有没有瓶颈。这里 PR Auto Check 通过,一般情况会有一到两个人做 code review。这里我非常建议大家重视 code review,这是工程师自我提升和追求极致非常好的方式和契机。code review 通过后,合并到 Develop 分支,会自动触发平台做持续交付。成熟度高的产品,如果这个测试通过,我们配置好的 hook 流程会自动流转到待发布的状态,一般成熟度的产品会有 QA 做业务验证和测试用例补充人工触发 jira 的状态变化,这里描述的是一个功能的完整交付过程。这个过程协同几乎是同步的,issue 粒度上开发交付什么测试就可以测什么,后续平台希望支持到 pr 能直接触发持续交付,这会将自动化验证能力进一步提前,进一步缩短代码到 ship 间的距离。



这是预发布到发布的阶段,之前的功能代码都测过。Develop 合并至 master,它就可以触发持续交付面向发布的验证,对接发布平台按需进行发布。


我们协作通过什么方式做起来呢?



是用角色的 Pipelines,面向角色和触发条件,我们会定义自测、集成、发布的 Pipelines 建立交付机制。真正的敏捷是他不再需要去按照准入条件是什么,在周四还是周五测,而是我们可以随时测,每日都可以测试,可以随时去补测试用例作为自动化验证的一部分。



流程里的涉及质量保障,我们的思路是面向不同的触发条件和交付目的建立质量卡口并建立自动化验证体系收集质量数据做分析。

平台化

平台化是今天介绍的重点。这个平台我们做了一年多,中间也经历了很多过程,从不成熟的容器化到容器化的状态,到现在可以规模容器化的状态。



这是一站式研发交付平台的能力的描述,支持混合模式测试环境管理。很多人在上微服务,但其实我们的微服务不全都是一把上的,可能是一个一个来上,基本思路先从无状态的上,再上有状态和基础应用。这种方式下,如何保证质量稳定,如何保证顺利容器化,我们也想了很多的办法。我们考虑必须支持混合的模式,现在我们是支持两个完整的环境,哪些内容容器化,我们就在容器化管理;哪些没有容器化,我们就以兼容模式来做管理,这样保证环境是持续进行更新的,整个研发体系的支撑也是持续更新的。另外我们提供产品和服务级别的编排,易于管理微服务关系和依赖,能够将微服务组装成完整的产品,并构建面向角色的持续交付流水线。我们主张开发测试运维一体化,所以会统一管理渲染关系和涉及到的模版。



交付工具链。我们目前一部分产品已经切到持续交付平台 2.0 版进行容器化交付,这跟产品阶段,业务形态,复杂度都有关系,通过评估我们会逐步迁移和支持。测试框架我推荐大家用下 ginkgo,在处理分布式和并发测试的时候,执行效率非常高而且维护起来很轻量,框架本身是 go 写的。其实大家不难看到我们并没有采用很多的工具,我认为工具在于你能不能用好,并且低心智负担的衔接起来,游刃有余的把流程真正梳理清楚纳入平台。



延展服务。我们会做很多服务嵌入到工作流里,比如持续集成过程里我们服务化收集单元测试,代码审查的质量数据。在持续交付阶段则支持集成测试与覆盖率服务。测试服务我们已经延伸到了各种环境场景,比如说交互的私有云、云存储,也可以定向跑验证灰度部署成功与否。另外我们也做了 Chaos 工程尝试,会拿很多破坏性的程序,看服务是否健壮。接下来会把这些的服务能力逐步纳入新的持续交付体系。

微服务架构介绍


首先讲一下工程理念。大家一直会有疑问,微服务架构到底是什么东西?微服务到底是什么世界观?以下是我个人的看法,面对更多的场景和业务的时候,我们要处理自己团队规模的复杂度提升,系统高可用、高并发的要求,如何让更多人更为有效的开发更大体量业务的程序?大家发现微服务可以让更多的人参与到复杂体系的设计和交付上,我们根据业务架构拆分更合适的微服务通过接口约定实现高效协作。


微服务化是化零为整、化繁为简的过程,持续交付平台是提供组装和管控的能力。自动化的框架要稳定,并且自动化 Case 要能覆盖交付能力,这样可以真正到一定程度自助的持续发布、持续部署。



Spock 的整体架构不复杂,分 biz、service 和底层服务支撑。底层的 Service,我们用七牛云自己家的存储、大数据、容器云,也分别解决了不同的问题。比如说存储,我们会把交付的可用包和 log 放在云存储上做备份,用大数据产品提供实时日志分析和监控的能力。容器则是最最核心的底层,我们的容器团队提供了很稳定可靠的容器集群以及各种基础组件 app。



上图是平台工作流结果查看。右边有一个关联问题,下面会有对应的代码库以及服务内容,是一个基本的信息和构建。构建以后部署,部署会有产品信息以及部署的环境,以及经历什么样的测试,串联的项目管理、代码管理、环境管理与发布相关的所有信息、交互的管理,都会在这里去体现。



这是我们的质效系统,会去分析持续交付过程中的一些质量和效率指标,帮助我们识别质量和效率短板。这里的指标是其中一部分,这些指标是会根据每个季度,半年度,从众多量化指标中选择比较关注的急切去改善的放在这里,内部优秀团队评比和奖励也会参考质效数据,奖励也是会涉及交付链条中各个角色而不再是一个实体部门。


这里也跟大家分享下我的看法,所有的指标都不应该是评价人的绝对值,因为人的素养是多维的,不可能被完全的数字化评价,但是通过这些数据来反映一定的交付和团队协作能力,比如说返工率是一定程度体现返工和质量情况;单元测试和合规其实是代码基础质量的评估;事故反应全组对服务高可用最终努力的成果。


我们现在达到的水平是核心模块是 60% 以上,核心模块代码合规 80 分以上,持续交付通过率 85% 以上,集测覆盖率 E2E+API 达到 35% 以上,事故严重率逐 Q 下降 1 0% 以上,构建效率 2-10 分钟,缺陷解决率是 82.97%。有一部分 QA 已经从测试开发变成了开发工具或测试服务的状态。



以上是我们平台实践成果的图,增长业务比例在下降,质量水平是稳步提升的。质量平台大概是从 2016 年初开始做的,也有一些指标因为不合理被砍掉,最终从 20 多个指标到 10 个左右,最终抽取的核心指标主要是跟工程的正向促进相关的。


谢谢大家。


作者介绍:


李倩,先后主导多家 IT 企业分层自动化测试框架的落地实践,积累了大量自动化实战经验。2014 年入职七牛,从零开始构建七牛质量保证体系,推进与完善了研发体系持续交付和持续集成。先后负责存储、数据处理、直播等产品的质量把控,构建了第一支使用 go 语言为自动化框架基础支撑的质量保证团队。


本文转载自公众号七牛云(ID:qiniutek)。


原文链接:


https://mp.weixin.qq.com/s/T-MVSDsK23ITkrVu_L2-3A


2019-10-09 17:471110

评论

发布
暂无评论
发现更多内容

整车级虚拟标定:降本增效

DevOps和数字孪生

汽车产业 虚拟汽车

人工智能 | 经典卷积网络模型解析:深度学习中的里程碑

测吧(北京)科技有限公司

测试

Final Cut Pro for Mac(fcpx视频剪辑) v10.6.10中文版

Geek_幻墨成诗

Final Cut Pro下载 Final Cut Pro中文版 Final Cut Pro破解版 Final Cut Pro教程 Final Cut Pro

超赞!让vue开发效率翻倍的工具分享

秃头小帅oi

Vue 前端

井然有序 | AIRIOT智能安防系统解决方案

AIRIOT

物联网 智能安防

屏幕截图工具 Snagit mac 2023.2.4中文版

iMac小白

谷歌访问助手(谷歌浏览器插件)Mac中文版

Geek_幻墨成诗

谷歌访问助手

人工智能 | Bug预测新纪元:基于迁移学习的创新应用

测吧(北京)科技有限公司

测试

数仓实践丨常量标量子查询做全连接导致整体慢

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 华为云GaussDB(DWS)

[开源更新]企业级身份管理和访问管理系统、为数字身份安全赋能

小狗围观科幻

云边协同的RTC如何助力即构全球实时互动业务实践

ZEGO即构

边缘计算 实时音视频 MSDN 云边协同 音视频质量

人工智能:亲手打造的强化学习模型征服游戏世界

测吧(北京)科技有限公司

测试

Reallusion Cartoon Animator for Mac(2D动画设计制作软件) v4.51.3511.1完美激活版

mac

苹果mac Windows软件 Reallusion 2D动画设计制作软件

Ableton Live 12 for Mac(音乐制作工具)激活版

iMac小白

人工智能 | 无参照模型预测技术:提升模型性能和应用体验的新思路

测吧(北京)科技有限公司

测试

Office 2019 v16.78.3激活工具(office2019套件)

Geek_幻墨成诗

Office 2019下载 Microsoft Office 2019

如何有效的进行 E2E

优测云服务平台

测试 测试技术

软件测试/人工智能|PyCharm常用快捷键指南

霍格沃兹测试开发学社

人工智能 | 引领未来,掌握图像目标检测:PyTorch带您探索智能时代

测吧(北京)科技有限公司

测试

软件测试 | 引领未来,掌握模型驱动技术的人工智能革命

测吧(北京)科技有限公司

测试

用 LangChain 搭建基于 Notion 文档的 RAG 应用

Zilliz

Milvus Zilliz AIGC langchain rag

第16届中国R会议暨2023X-AGI大会开幕,和鲸科技分享ModelOps在数据科学平台中的实践与应用

ModelWhale

R语言 数据科学 算法模型 ModelOps 计算平台

人工智能 | 计算机视觉迁移学习:开启智能化视野的大门

测吧(北京)科技有限公司

测试

Pixea Plus for Mac(高效图片浏览器)v5.2激活版

iMac小白

和鲸科技与国科环宇建立战略合作伙伴关系,以软硬件一体化解决方案促进科技创新

ModelWhale

软件 服务器 算力 大模型 计算平台

软件测试/人工智能|教你轻松掌握Python输入与输出

霍格沃兹测试开发学社

自然语言处理技术原理解析

测吧(北京)科技有限公司

测试

Photoshop 2024(ps2024最新)v25.1激活版

Geek_幻墨成诗

Photoshop 2024破解版 Photoshop2024下载

Photoshop 2020 for mac(PS2020)v21.2.5中文激活版

Geek_幻墨成诗

Photoshop 2024破解版 Photoshop2020

Unity3D 导出的apk进行混淆加固、保护与优化原理(防止反编译)

“降本增效”才是选择低代码开发的主旋律

互联网工科生

软件开发 低代码开发 JNPF

如何构建高效自主的容器云交付平台?_文化 & 方法_李倩_InfoQ精选文章