一、背景
越来越多的团队使用DevOps,个人觉得原因有二,其一市场需求,从瀑布到敏捷的过程能看出市场就是需要团队响应快,小步快跑,风险低效率高,但是敏捷只解决了开发团队的问题并没有解决运维团队的问题,DevOps将开发与运维整合一体不仅团队响应更快成本也降低,不需要专门的运维团队;其二DevOps生产发展完善,完全可以落地,不是之前仅仅是感念上的操作,互联网大厂已经落地实施,比较突出的是腾讯的coding。中小公司团队实施DevOps有两种途径,第一种购买大厂的产品,大厂教你如何使用,这样简单高效,但是费用比较高花个几百万也很正常,这几百万给团队发福利难道不香吗,还有就是喜欢专业技术的开发,你只是会用并不懂背后逻辑,跳槽到个不用该产品的公司怎么办呢;第二种就是自研,其实也是DevOps一种整合,弊端就是耗时耗力,好吃就是省钱、提升自我价值。总结这部分内容就是为了自己想搭建DevOps生态的同行给一种思路或是一个参考,之所以说是一种思路是因为实施DevOps有多种方案,结合自己项目实际情况最终目的是将两个团队整合高效完成持续集成,持续发布。
二、DevOps介绍
关于这块内容的好多博客都在发表不同的见解,我从项目流程的角度简单阐述。
软件开发最开始是由两个团队组成:
开发团队由产品、研发团队组成从需求需求、设计、到系统研发部署。需要系统不停的迭代更新。
运维团队将开发团队的Code进行测试后部署上线。希望系统稳定安全运行。
这看似两个目标不同的团队需要协同完成一个软件的开发。在开发团队指定好计划并完成编码后,需要提供到运维团队。运维团队向开发团队反馈需要修复的BUG以及一些需要返工的任务。这时开发团队需要经常等待运维团队的反馈。这无疑延长了事件并推迟了整个软件开发的周期。可是这样就意味着一个完整的项目需要一个更长的周期才可以开发出最终代码。基于现在的互联网现状,更推崇敏捷式开发,这样就导致项目的迭代速度更快,但是由于开发团队与运维团队的沟通问题,会导致新版本上线的时间成本很高。这又违背的敏捷式开发的最初的目的。那么如果让开发团队和运维团队整合到成一个团队,协同应对一套软件呢?这就被称为DevOps,DevOps是一个不断提高效率并且持续不断工作的过程。
三、软件开发流程及所用工具
DevOps的方式可以让公司能够更快地应对更新和市场发展变化,开发可以快速交付,部署也更加稳定。核心就在于简化Dev和Ops团队之间的流程,使整体软件开发过程更快速。
整体的软件开发流程包括:
PLAN:研发团队根据客户的目标制定开发计划
CODE:根据PLAN开始设计、编码过程,需要将不同版本的代码存储在一个库中。
BUILD:编码完成后,需要将代码构建并且运行。
TEST:成功构建项目后,需要测试代码是否存在BUG或错误。
DEPLOY:代码经过手动测试和自动化测试后,认定代码已经准备好部署并且交给运维团队。
OPERATE:运维团队将代码部署到生产环境中。
MONITOR:项目部署上线后,需要持续的监控产品。
INTEGRATE:然后将监控阶段收到的反馈发送回PLAN阶段,整体反复的流程就是DevOps的核心,即持续集成、持续部署。
为了保证整体流程可以高效的完成,各个阶段都有比较常见的工具,如下图: