DevOps是近年来的大热词汇。为了了解DevOps,我们不妨从三个最简单的问题入手:what?Why?How?
首先,what? DevOps是什么?
DevOps,是Development和Operations两个词的组合。表面上看,似乎是把开发和运维放在一起,把两个团队合并为一个团队。实际上,这两个团队中间还有一个隐藏团队:测试。
简单来说,DevOps就是让开发、测试、运维人员更好地沟通合作,通过自动化流程来使得软件整体过程更加快捷和可靠。
第二个问题,why?为什么需要DevOps?
传统的软件开发使用的是“瀑布模型”:软件开发团队开发代码,将代码交给测试团队进行测试,然后将最终的发布版交给运维团队去部署。这三个阶段,即开发,测试,部署。
随着用户对系统的需求不断增加,软件的规模日益庞大、数据量的日益庞大,软件变得越来越复杂,瀑布式开发已无法满足,于是敏捷开发登场了。敏捷开发大幅提高了开发团队的工作效率,更快地发现问题、更新版本、交付产品给用户,也更快地得到用户的反馈、并对用户的反馈做出响应。
敏捷开发虽然大幅提升了软件开发的效率和版本更新的速度,但仅限于开发环节。运维团队与开发团队的诉求截然不同。于是开发和运维的矛盾就这么产生了:开发要快速迭代,运维要稳定为先;开发需要改变,运维排斥改变。怎么解决这个矛盾呢?
答案就是DevOps。
最后一个问题,how?怎么做到DevOps?
DevOps,字面意思看,就是Dev+Ops,那么把开发和运维两个团队合并,进行组织架构变革,是不是就达成目标了?当然不行。
要真正实现DevOps,就要求测试团队、运维团队,在项目开发初期就介入,了解开发的系统架构、设计思路、技术方法,共同制定适当的测试方案、运维方案;相应的,开发团队也会在测试初期、运维初期就参与到系统部署中,提供测试建议、系统部署的优化建议。由此可见,DevOps贯穿了软件全生命周期,而不仅限于开发阶段。
要真正实现DevOps,需要进行思想观念的转变,需要根据DevOps思想重新梳理全流程的规范和标准,使用DevOps的理念对项目进行全流程管理。同时,还需要相应的技术、工具、平台进行辅助,比如TFS提供的流水线部署工具等等。
技术层面的支持是最简单易行的,真正理解DevOps的思想内核,实现管理水平和企业文化的转变,才是DevOps落地的难点。
路漫漫其修远,唯有上下求索之。