当前位置: 主页 > 建站知识 > 软件开发

应用软件开发开发-DevOps/CD系统的实际应用与理解的理解

发布时间:2023-06-20 09:13   浏览次数:次   作者:佚名

最近读了一些关于DevOps的文章,然后结合自己公司的CI/CD系统,加上自己对docker的实际应用与理解,整理了这篇文章,就当做是自己的笔记,然后记录下来分享给大家,希望对大家在软件开发流程的理解上有一些帮助。

首先现解释一下什么是DevOps:DevOps不是一套系统,也不是一套工具集,DevOps是一种方法论,是人们在长期的软件开发过程中总结出来的一系列基本原则,遵循这套原则我们就很容易实现敏捷的软件开发。其中所用到的工具我们可以自行选择,其仅仅是为实现这些原则提供支持。

下图我们看一下软件开发过程中所涉及的部门和各部门所负责的工作:

应用软件开发开发_开发应用 英语_android应用商店开发

开发应用 英语_应用软件开发开发_android应用商店开发

接下来介绍DevOps中两个重要概念:

CI:(Continuous intergration),持续集成,研发团队的成员经常集成他们的工作,通常情况下每个成员每天至少会提交一次他们的工作,这就说明每天会有多次集成工作。每次集成我们都有通过自动化的工具构建、验证代码,以便尽早发现代码中的错误

CD:(Continuos deployment),持续交付,通过自动化的构建、测试和部署循环来快速的交付高质量的产品,某种程度上它代表着一个开发团队的工程化程度。

应用软件开发开发_android应用商店开发_开发应用 英语

如何具体实施上面两个概念呢?一般来说就是要尽可能多的使上图软件开发的各个环节实现自动化,我们公司使用的CI/CD工具是Jenkins,这也是我所了解的大多数公司使用的CI/CD工具。Jenkins是一套开源的、自成体系的自动化工具,而且Jenkins允许编写自定义插件,借助Jenkins我们能自动构建代码,并实现单元测试、集成测试的自动化,并且能通过编写插件分担一些QA部门的测试工作。

DevOps要求解决的另一个问题:开发人员与运维人员之间的混乱之墙

如果你置身于软件开发的现场,你会听见开发人员对测试人员和运维人员说的最多的一句话就是:这个在我的环境中运行正常啊!你的环境有问题吧!造成这种现象的根本原因是在软件的整个生命周期中需要维护多套环境:研发人员需要有自己的开发环境,测试人员需要测试环境、UAT环境,线上还有生产环境、预生产环境。要想让我们的开发敏捷起来,则必须要保持这些环境的一致性,包括:代码、配置文件、资源文件、安装脚本、运行时库、初始化数据等等。

开发应用 英语_应用软件开发开发_android应用商店开发

另外根据一项统计:

在只需手工运行5条命令的情况下,环境成功部署的概率就已跌至86%。

如需手工运行55条命令,环境成功部署的概率将跌至22%。

应用软件开发开发_android应用商店开发_开发应用 英语

如需手工运行100条命令,环境成功部署的概率将趋近于0(仅2%)!

一颗神奇的银弹:docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

android应用商店开发_应用软件开发开发_开发应用 英语

借助docker再加上Jenkins和gerrit(当然并不要求一定是这些工具,我们完全可以找到许多别的相应的替代工具),我们可以搭建一套如下的系统:

应用软件开发开发_开发应用 英语_android应用商店开发

如果在辅助以ansible、docker cd或者别的编排工具,部署步骤实现脚步化、自动化,各个部门各环境的就可以实现一键部署了。这样我们就能大大减少个部门互相甩锅的情况应用软件开发开发,并且在部署过程中减少了人工的参与。当版本需要升级和回滚时我们只需要替换docker容器即可,并不需要考虑运行时库的版本与依赖,借助docker我们就能实现一处构建,处处运行的美好愿景。另外借助docker我们可以实现系统的模块化部署,各个模块除接口以外不存在别的依赖关系,一个模块运行出错、奔溃不至于影响整个系统的运行,并且能迅速启动备份容器替换奔溃模块。

文章就暂时先写到这儿吧应用软件开发开发,如对文章内容有更多兴趣记得跟作者留言哟。

版权声明:文章版权归北京蓝沧科技有限公司所有,未经允许擅自使用文章着,违者必究。