DevOps=Development(开发)+Operations(运维)。那么这个名词为什么会出现?为什么我们需要DevOps开发运维一体化?
主要是因为目前互联网时代,变化万千。早期时候,互联网不那么普及,需求没那么变化快,所以可以采取流水线的方式,可以慢条斯理地遵从软件开发->测试->部署的步骤一步一步来。可是,现在时代变了,需求每天都在变化,如果再按照之前的逻辑,就远远跟不上客户的需求,竞争这么激烈,客户哪有耐心等你一步一步来,等你测试完部署完早就凉凉了。你的产品需要跟得上如今用户需求的随机应变。自动化测试,自动化部署。从开发到上线,可以快速实现。DevOps就是这种条件下提出的。
DevOps开发运维一体化应该怎么做呢?每个企业都需要提升自己的DevOps能力,尤其是要面向多种用户、具备多样功能的应用程序,其部署周期必然会要求的更短,需要更加快速的响应。
(1)从代码角度来整个开发测试运维一体化能力。因为涉及到整个软件开发的生命周期,而软件的起点之一便是代码,所以常见的实现做法是从代码仓库视角入手(如Gitlab),研发人员从版本控制系统中拉取代码仓库,进行新版本的开发,功能开发完成之后,提交代码合并请求MergeRequest,在合并请求中通过gitlab.ci的yaml文件编写去触发CI校验,如代码规范检查、代码安全检查、单元测试等,CI校验通过之后进行代码合并到主干分支,触发代码编译、打包、部署流程,将生成的产物如镜像部署在预发布环境的物理机、虚拟机、容器中,经过小部分用户校验没问题后再大范围甚至全量发布。
(2)以整个服务的视觉来看待整个软件生命周期,通过流水线将开发的代码、合并代码、单元测试、编译打包、部署、集成测试、灰度发布、上线发布全串联起来。研发人员从代码仓库拉取开发分支进行开发,开发完成后通过流水线发起合并测试部署上线流程,其它的代码合并功能、编译、部署、单元测试、集成测试、灰度发布、上线发布全都是其它组件以底层的能力在去做支撑。
总体来看,在人力成本如此之高、市场竞争如此之激烈、用户需求变化如此之频繁的情况下,DevOps是大厂必须选用的一条路。
目前DevOps已日趋激烈成熟,阿里的云效(https://www.aliyun.com/product/yunxiao)、腾讯工蜂等产品不仅内部自用,而且已在公有云部署发布,越来越多的传统企业和新创企业也开始接受并实施DevOps,DevOps工程师也成为当下最炙手可热的岗位之一,对DevOps你心动了吗?心动就赶快行动吧~
参考:https://baike.baidu.com/item/devops/2613029?fr=aladdin
https://baijiahao.baidu.com/s?id=1676154242201588726&wfr=spider&for=pc