软件工程之美36讲——DevOps工程师到底要做什么事情?
软件工程之美36讲——DevOps工程师到底要做什么事情?
什么是DevOps
DevOps 可以理解为一种开发(Development)和运维(Operations)一起紧密协作的工作方式,从而可以更快更可靠的构建、测试和发布软件。
DevOps会带来哪些好处呢?
- 整个软件的构建、测试和发布过程高度自动化
DevOps 一个很重要的基础就是自动化,通过对自动化的应用,是最简单有效的打破开发和运维之间壁垒的方式。因为应用自动化后,对于运维人员来说,自动化的交付流程,减少了繁重的手工操作,自动化测试可以有效对产品质量提供很好的保障。对于开发人员来说,可以方便高频率地进行部署。如果你的团队还没有开始实施自动化,可以先从持续交付开始.
- 信息更加透明和易于测量
当采用 DevOps 的工作方式,信息更加透明,通过日志和工具,数据也可以被更好测量。比如说:可以直观看到开发到部署需要多少时间,哪个环节可以改进?当前服务运行情况如何,每分钟访问数多少,API 出错率多少?当前用户数多少,有多少新增用户?这些数据,不仅可以帮助运维更好地预警,或者是帮助开发更好地优化程序,还可以帮助业务团队更好地了解服务的运营情况。
- 培养跨职能协作的文化
DevOps 的核心文化是不同职能工种之间的紧密协作的文化。其实不仅限于开发和运维之间,就像我们之前在中讨论的,开发和测试之间也一样离不开紧密的协作。如果你的团队是在真正地实践 DevOps 的工作方式,就会积极拥抱这样的跨职能协作的文化,在日常工作中包容错误、对事不对人,能对项目的开发流程持续改进,鼓励创新。
你需要去构建自动化部署的系统,从构建、测试到部署实现高度的自动化;建立数据监控的系统,让信息透明可测量;最后要形成跨职能协作的文化。
DevOps 工程师到底要做什么事情?
-
首先,DevOps 工程师要帮助团队建立基于持续集成和持续交付工作流程。关于持续集成和持续交付,不仅仅是工具的使用,同时还是基于工具之上的一整套的交付工作流程。对于这样的工具和流程的建设,最初的时候,就是需要有专门的人,专门的时间去建立,也是 DevOps 工程师首先要去解决的问题。其次,要建立一套基于日志的监控报警的系统,以及故障响应的流程。对于线上系统,应急响应非常重要,要在故障发生后,第一时间作出响应,及时恢复生产,避免更大损失。需要能建立一套基于日志的监控报警的系统,将应用程序还有运行环境的各项数据监控起来,设置报警的阈值。当数据异常,超出阈值,就马上触发报警,然后进入应急响应的流程。对于应急响应流程,首先应该能第一时间通知最合适的人去处理,比如负责这个服务值班的开发人员,然后对于怎么第一时间恢复应该有准备,涉及跨部门协作也应该有相应的配合流程;最后对于故障应该有总结,避免类似情况再次发生。
-
然后,要构建基于云计算和虚拟化技术的基础设施。虽然并非每一个软件项目都是基于云计算或虚拟化技术来搭建的,但云计算和虚拟化技术方面的技术,其实是横跨开发和运维的,可能对于大部分开发和运维来说,都只了解其中一部分知识,这就需要有人能同时懂软件开发和云计算或虚拟化技术,或者一起协作,才能搭建出真正适合云计算或虚拟化技术的架构。构建出来基于云计算和虚拟化技术的基础设施后,对于开发人员来说,只要通过 API 或脚本即可搭建应用,对于运维来说,也只要通过脚本和工具即可管理。
-
最后,要形成 DevOps 的文化。DevOps 最核心的本质就是工作方式和协作的文化,而这样的文化需要有人引领,一点点去形成。DevOps 工程师要帮助开发和运维相互理解对方的工作,帮助开发和运维在一起协作时多沟通,相互学习。出现问题不指责,而是分析原因,共同承担责任,找出改进的方案。这些就是 DevOps 工程师要做的事情,本质上还是 DevOps 的几条基本原则:自动化、信息透明可测量、构建协作文化。