目前很多大厂如阿里、腾讯、百度、头条、滴滴、美团等公司内部都在做DevOps,那么DevOps是什么?为什么都对其趋之若鹜?DevOps应该怎么做?
首先我们来讲讲DevOps是什么?
DevOPs是一种方法论。DevOps=Developers+Operators,即开发团队和运维团队一体化,尽可能地为公司创造更多价值。
现在流行的做法是将两个职能部门的人融合为一个职能部门,实现开发运维一体化,而早期的时候是两波人分别承担不同的职能,中期的时候是要求两波人密切配合、快速迭代,这中间的变化取决于开发模式的转变。
早期的时候是瀑布开发模型。因为互联网上涌入的网民还不多,大家的关注点是能用、能解决问题即可,所以早期在需求评审阶段产品经理给到的是完整、清晰、固定的需求,研发人员只需要根据需求在约定的时间点进行交差即可,迭代的频率或许是1月1次,也或许是1个季度1次,研发聚焦于功能开发,在功能开发完成后交付测试团队进行测试,测试团队经过反复的测试与问题修复后,交付运维团队进行上线,此后生产环境的可用性稳定性等工作全由运维负责。
这种开发模式存在的问题是需求不能快速得到验证,很有可能团队花费半年的时间开发出来的东西早已经不适合市场了,也还有种可能是在开发阶段研发需求理解不到位,等到后期验证时发现有问题再去做调整耽误整体工期。
中期的时候是敏捷开发模型。因为互联网上涌入的网民开始增多,大家的关注点开始变成好用、好玩,而此时一些有远见的人开始注意到互联网红利,投身于互联网,此时的开发模式演变成了敏捷开发模型。
敏捷开发模型面对的是频繁的需求变化,要求快速开发。比较流行的实际案例则是Scrum、XP极限编程。在新迭代(一般2-6周)开始前,产品经理将需求拆分成具体的开发任务,研发人员进行任务认领,每日站会进行任务的review,直到开发完成,发布新的可用版本。
现在最流行的是DevOps。因为互联网上涌入的网民在海量的增加(微信用户已破11亿),互联网企业的竞争也开始变得激烈,同一块蛋糕很多人来抢来分(电商领域的淘宝、京东、网易严选、拼多多、小鹅拼拼等),快速迭代产品,快速占领市场,快速占据用户心智成为了各互联网公司的目标,此时的开发模型变成了DevOps,需要持续开发、持续集成、持续测试、持续部署、持续监控,每一次代码的改动都触发一次校验,每天每时每刻都可进行新版本的上线。
那么DevOps应该怎么做呢?因为涉及到整个软件开发的生命周期,而软件的起点之一便是代码,所以常见的实现做法是从代码仓库视角入手(如Gitlab),研发人员从版本控制系统中拉取代码仓库,进行新版本的开发,功能开发完成之后,提交代码合并请求MergeRequest,在合并请求中通过gitlab.ci的yaml文件编写去触发CI校验,如代码规范检查、代码安全检查、单元测试等,CI校验通过之后进行代码合并到主干分支,触发代码编译、打包、部署流程,将生成的产物如镜像部署在预发布环境的物理机、虚拟机、容器中,经过小部分用户校验没问题后再大范围甚至全量发布。
而有的做法则是以整个服务的视觉来看待整个软件生命周期,通过流水线将开发的代码、合并代码、单元测试、编译打包、部署、集成测试、灰度发布、上线发布全串联起来。研发人员从代码仓库拉取开发分支进行开发,开发完成后通过流水线发起合并测试部署上线流程,其它的代码合并功能、编译、部署、单元测试、集成测试、灰度发布、上线发布全都是其它组件以底层的能力在去做支撑。
总体来看,在人力成本如此之高、市场竞争如此之激烈、用户需求变化如此之频繁的情况下,DevOps是大厂必须选用的一条路。
目前DevOps已日趋激烈成熟,阿里的云效、腾讯工蜂等产品不仅内部自用,而且已在公有云部署发布,越来越多的传统企业和新创企业也开始接受并实施DevOps,DevOps工程师也成为当下最炙手可热的岗位之一,对DevOps你心动了吗?心动就赶快行动吧~