devops之道

时间:2022-10-13 11:55:09

devops之道

什么是devops

devops是开发(dev)和运维(ops)的复合词,它允许一个团队处理从开发到测试、部署和运维的整个应用程序生命周期。devops可帮助促进开发人员、测试人员和运维人员之间的联系。

误解

开发人员和运维人员是IT领域中最重要的两大群体,他们都会参与程序开发的周期中并担任关键角色。近几年火起来的概念devops,关于这个概念很多人都有误解,误解为“由开发人员学习一堆运维人员的技能,从而能处理运维的事情,dev和ops结合成一种人员叫devops”,这种理解是错误的,开发人员应该更注重的是业务的开发,开发人员根本就不想做运维,这无疑是PUA的做法,坚决抵制,运维就要交给专业的运维做,devops这个理念是要为开发人员减去运维的工作,专心开发,这样能大大提高程序开发效率。

原始分工

devops之道

开发和运维明显是两个不同的工种,一些公司认为将表格中右边运维人员的技能强加到开发人员身上就是devops,这样只会让开发人员厌恶devops这种文化。

devops工程师

作为devops工程师,应该打造一个devops平台,将复杂的运维工作抽象为产品化的运维特征,开发人员将是这个devops平台的用户,能在不了解复杂基础设施的情况下,操作并维护程序。

devops之道

时代发展

devops之道

裸机时代

最起初的时候是没有开发运维之分的,就是个程序员,从底层的基础设施一直到顶层业务都是由同一批人处理,真正的全栈工程师。

基础设施即服务

随着云计算时代到来,以虚拟化技术为基础,软件定义基础设施变得热门,这个时候已经区分出了开发人员和运维人员了。运维人员建设并维护一套Iaas云平台,将计算资源进行池化,开发人员根据需求申请自己所需要的虚拟机,从而得到一个操作系统界面进行交互。其实就是申请到机器,自己进行部署应用,程序仍然由开发人员管理,运维人员只管虚拟机、存储、网络等正常运行,不管程序是否正常和监控。

平台即服务

随着容器技术和k8s的日益发展,软件定义基础设施的技术手段已经发挥到了极致。运维人员可以构建并维护一套paas云平台,将操作系统层面的东西从开发人员身上搬开,直接在k8s容器运行。运维人员也体验到容器技术和k8s的弹性和便捷性。

云原生平台

云原生平台是一种面向云设计应用的思想理念,充分发挥云效能,组织内部IT人员相互构建弹性可靠、松耦合、易管理、可观测的云应用系统,最终的目标就是提升软件交付效率,降低运维复杂度,不用开发人员去编写复杂的k8s声明式,其实就是傻瓜式操作,不需要理解其原理。其实devops的工作就是打造以开发人员为用户群体,让开发人员毫无障碍的使用基础设施的云原生平台。

云原生平台产品

Rancher

rancher是最原始的容器平台,相当成熟,rancher在各个层面可以集成的云原生领域工具非常丰富,rancher专注于帮助devops团队面对多集群情况下的运维和安全挑战,rancher更倾向于面向运维人员

KubeSphere

是青云的产品,除了对k8s的各种资源进行管理之外,还主打即插即拔的插件式省厅扩展能力

Rainbond

是北京好雨科技的产品,是一款主打易用性的云原生 多云管理平台

拿来用就好

对于开发人员来说,devops要做的就是,让开发人员在对容器技术一无所知的情况下可以直接从代码开始部署业务系统。总的来说,将代码提交、检测、部署等流程都集成到CI/CD流水线中,后续自动触发完成,生成检测报告,并完成代码上线部署,其他的第三方工具集由devops团队负责维护,开发人员唯一要做的就是提交代码去触发流水线,后续都是流水线自动完成。

devops之道

如何做好一个devops产品

在体验上

最关键还是要看用户的体验,开发人员就是devops的用户,开发人员完全出来编写代码外,无需其他运维操作就可以部署运行程序,devops应该屏蔽底层的运维部分,对用户是无感知的,就行你要吹电风扇,你就只是打开风扇开关就可以得到你要的凉风。而不需要其他无关的操作。

在流程上

devops本身就是一种软件工程的文化,将各个流程结合起来。需求->开发->部署->测试->bug修复->上线。devops目的是为了减去开发的负担,加快开发效率,持续迭代,持续部署。devops就是如何将这些不同流程串联起来,实现自动化,可持续化

在性能上

优先选用高性能的组件,不管是代码管理,打包,代码检测,部署,自动化测试,需求平台,都应该发挥不同组件之间的特长。比如代码管理可以选择gitlab,打包可以选择gitlab的CI/CD或者jenkins,代码检测用sonar,部署用rancher和k8s,自动化测试用metersphere,需求平台用禅道或者jira。各个组件各显示神通,但是也要考虑可开发性和关联性。