前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DevOps学习笔记(二)

DevOps学习笔记(二)

原创
作者头像
Act
修改2021-11-15 09:08:21
2540
修改2021-11-15 09:08:21
举报
文章被收录于专栏:Act的项目管理Act的项目管理

上篇文章学习了DevOps四大知识体系的“敏捷管理”(Scrum框架)、“精益管理”(精益看板),今天继续“持续交付”的学习。

首先还是来了解下持续交付的定义。

持续交付(英语:Continuousdelivery,缩写为CD),是一种软件工程手法,让软件产品的产出过程在一个短周期内完成,以保证软件可以稳定、持续的保持在随时可以发布的状况。它的目标在于让软件的构建、测试与发布变得更快以及更频繁,这种方式可以减少软件开发的成本与时间,减少风险。 ——摘自 百度百科

从这段定义中,可以看出持续交付的的三个特点:生产短周期、稳定发布、持续发布。

从这三个特点延申来看,整个持续交付的流程和制造业生产流水线的概念十分相似。制造业中为降低生产成本,提高产品产出速率,提升产品品质,形成了制造流水线的概念。那制造流水线是如何产生的?

图片
图片

20世纪初,美国人亨利.福特首先采用了流水线生产方法。在他的工厂内,专业化分工非常细,仅一个生产单元的工序竟然多达7882种,为了提高工人的劳工效率,福特反复试验,确定了一条装配线上所需要的工人,以及每道工序之间的距离。这样一来,每个汽车底盘的装配时间从12小时28分缩短到1小时33分,并且在整个生产线过程中,可以实时把握产品质量状态,坏品风险大大降低。

再回到信息化生产过程中,过往瀑布式管理项目中程序开发的过程从需求计划→软件代码编程→单元测试→集成测试→开发环境部署→代码发布→运维,周期一般按月计算,并且只能全部开发测试完成后才能交付用户,中间时长跨度大,业务需求变更快,往往最终的成品不能完全满足于客户需求,这就导致很多项目的失败。

如果将生产流水线与软件交付结合在一块,就有了持续交付的流水线,也就是CI/CD/CO(持续集成-持续交付-持续运营)。

图片
图片

要想持续发布除了交付流水线外,还有一个很重要的就是自动化,包括程序代码的自动化构建、自动化功能测试、自动化非功能测试、自动化部署等等。因为交付周期从年度缩短到季度,再到月度,再到周,乃至到天的交付,就意味着原来的代码提交、测试、部署工作的频度也要提升到天。原来只有在程序上线前的部署工作,要在每天内执行,势必要求大量工作的自动化升级,这样才有持续交付的可行性。

根据持续交付的理念,要想实现从代码到运营的全自动化,可借助相应的系统来管理实现。在这里介绍一下基于开源平台的软件,Git:代码版本控制,GitLab:代码仓库,Maven:Java语言构建;Nexus :制品库,JUnit :单元测试,Sonarqube :代码质量扫描,Docker :容器,Harbor :docker 镜像仓库,Jenkins :流程编排,Kubernetes :服务部署。

持续交付过程中,会通过本地开发、集成开发、测试、预发布、正式环境的持续发布快速反馈问题。通过不断反馈来提升代码质量。

本地开发人员单元测试完成后,提交代码到集成环境,则会收到集成反馈的结果;程序集成没有问题,继续向后提交到测试环境,开始对功能性和非功能性进行测试,测试缺陷将直接反馈给开发人员进行处理;测试通过后继续提交到生产环境,部署完成后,通过用户使用反馈程序运行缺陷以及系统优化需求,相应的在重新遍历整个交付流程,调优再行发布上线,达成程序代码质量的管理。

图片
图片

在了解了持续交付相关内容后,企业该如何构建部署持续交付的流水线?第一,对价值流进行建模并创建简单的可工作框架;第二,将构建和部署流程自动化,这也是效果最为明显的一步,实现构建和部署自动化可大幅缩减程序发布的周期;第三,将单元测试和代码分析自动化,有助于开展程序代码以及系统整体的质量分析;第四,将验收测试自动化;第五,将发布自动化。

图片
图片

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
持续集成
CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档