博文参考总结自:https://www.kuangstudy.com/course/play/1573900157572333569
仅供学习使用,若侵权,请联系我删除!
1、什么是DevOps?
DevOps是一种思想或方法论,它涵盖开发、测试、运维的整个过程。DevOps强调软件开发人员与软件测试、软件运维、质量保证(QA)部门之间有效的沟通与协作。强调通过自动化的方法管理软件变更,软件集成,使得软件从构建到测试、发布更加快捷、可靠,最终可以按时交付软件。
上面说的就是CICD,也就是持续集成与持续部署,DevOps思想如下图所示。
公司里面开发一个项目的流程大概如上图所示:
- 公司计划一个需求
- 需求由开发人员编码实现
- 构建项目
- 测试
- 发布项目
- 部署项目
- 监控
- 运维
如果此时又来了一个新需求,这个流程又要重新走一遍,这是一个闭环,我们每天都会重复的干这些事情。如果我们只需要负责需求分析以及编码上线,构建、测试、部署…这些工作全部自动化完成,那将会十分节省我们的人力物力。
下面是公司项目开发大概得流程,看看是如何一步一步操作的:
- 用户给我们一个需求反馈
- 产品经理拿到反馈,列出一些计划,将这些计划变成需求,根据这些需求列出代办清单,代办清单里面有优先级,重要的先去执行,最后发布一个迭代的计划
- 开发拿到任务,对任何进行编码
- 将编写好的代码提交到代码仓库
- 最终将代码发布到持续集成系统里面,持续集成系统有测试环境、预发布环境、生产环境等。
- 测试就去测试系统、运维就干运维自己的事
如果这个流程智能一点的话,可以把测试和运维也一起集成到持续集成系统当中。
2、如何落地实现DevOps理念?
DevOps兴起于2019年,近年来由于云计算、互联网的发展,促进了DevOps的基础设施及工具链的发展,涌现出一大批优秀的工具,这些工具包括开发、测试、运维的各个领域,例如:GitHub、Git/svn、Docker、Jenkins、HudSon、Ant/Maven/Gradle、Qunit、JMeter等,看下图:
这么多的软件,我们如果要全部都学的话,就十分的头疼了。如果我们开发人员只需要负责开发编码,将代码提交到代码仓库,后面的流程都可以自动化去完成就好了。
完整的开发流程和技术如下:
这么多技术,我们如果每个都只学Hello World
,都得学好久,开发个十年可能才能理解每个软件有什么用,我们不用全部去学,没必要。我们只需要掌握一套主流的技术即可。
3、实践测试
我们搭建一个springboot的项目,编写一个接口,返回:hello,欢迎来到狂神说,页面被浏览n次
这句话,用redis来记录页面被浏览的次数,界面如下:
代码如下:
我们现在有一个需求,假如是要修改返回的字符串,修改为:hello,感谢大家收看,希望大家可以三连投币,页面被浏览n次
,代码如下:
我们现在只需要将代码提交到远程的代码仓库里面,等待两三分钟,页面就会自动刷新,自动化部署到服务器上,如图:
我们自动化构建工具使用的是Jenkins,他会有一个图形化界面,让我们知道现在项目部署的流程,部署到哪了:
对于我们的开发人员来说,我们只需要编码,将代码提交到远程代码仓库,后面的构建、测试、部署等都会自动化完成。
具体的流程如下:
Jenkin会有每一次的构建部署记录,方便我们查看:
4、当今大公司一定要使用DevOps
传统上在软件开发中(无论是瀑布模型还是敏捷方式,敏捷也比较传统),都由“开发团队"来构建软件。
开发团队需要与运维团队进行了大规模的"交接”运维团队负责执行一系列部署"活动,将软件代码移至生产环境,并负责维护后续的系统稳定运行。生产环境的基础设施与开发或测试不同。需要有额外检查和平衡,以确保它一切功能正常。部署是由不同的人完成的,运维团队之前从未见过或听说过任何此类软件。
DevOps这种软件开发方法,涉及到软件整个开发生命周期Ⅰ这些活动只能在DevOps中实现,而不是敏捷或瀑布流。DevOps是在较短的开发周期内开发高质量软件的首选方法,同时可以提高客户满意度。
这就是为什么顶级互联网公司选择DevOps作为其业务目标的前进方向。
- 如果你是一名开发工程师:学习DevOps,让你成为更加优秀的IT工程师
- 如果你是一名运维工程师:应用DevOps必将,简化你的工作流程,提高你的工作效率
- 如果你是一名架构师:DevOps是你在实践中必须拥有的技术能力