DevOps 工程师实际上是做什么的?

我们之前已经讨论过许多关于DevOps和DevOps世界的最新趋势了。但是DevOps工程师到底是做什么的?

DevOps工程师以最纯粹的方式弥合了软件开发和运维团队之间的差距,以提高软件的交付率。

DevOps工程师带来了什么?

传统的软件开发流程是软件开发人员花费数周和数月编写代码,然后将代码交给QA团队进行测试,然后将最终的发布版交给运维团队去布署。所有的这三个阶段,即开发,测试,布署,之间缺乏协作。

开发者编写代码然后交给布署团队。现在由布署团队来解决代码布署过程中出现的问题,或将代码交给开发团队以修复bug。所有这些都导致软件开发过程变慢。

但是在DevOps模式下,这三个团队将不再相互隔离。大多数时候,这三个团队将合并成一个团队,工程师会在整个应用程序生命周期中工作,从开发和测试到布署到操作,并开发出一系列不限于单一功能的技能。安全团队也可以在整个应用程序生成周期中和开发和运维更紧密的合作。

为什么DevOps工程师的角色会有所不同?

DevOps工程师并不是一件新鲜事。它是一类工程师的统称,如系统工程师,自动化构建工程师,软件工程师,Linux工程师等等。

然而,DevOps工程师的工作性质因组件而异。在某些情况下,他们的工作是基础设施的自动化和维护。有些组件将他们的工作扩展到整个交付链。

DevOps工程师的角色各不相同,因为他必须通过克服传统的协作障碍与开发人员和运维人员进行协作。而且不同的组织在这个过程中会有不同的协作障碍。

DevOps工程师日常工作中最重要的两个方面

虽然DevOps工程师的角色多种多样,但是几乎所有DevOps工程师每天都会触及两件事——自动化和持续集成。

自动化

与维护基础设施相关的大多数任务仍然是手动的。公司更愿意使用传统的成熟的方法,并不是自动化的相同流程,因为它们不想冒任何风险。但事实是自动化任务将有助于加快软件的开发和布署,这意味着从客户账户到公司账户更快的现金转移。

要意识到这一点,例如,如果系统工程师的任务是每天两次手动备份所有服务器,它这是在浪费时间,因为通过编写脚本,在一些云设施中自动备份服务器可轻松实现这一点。通过自动执行备份过程,你可以让系统工程师更专注于关键问题,例如对由于某些VM问题而导致服务器关闭进行故障排除。手动执行相同操作将导致系统工程师负担过重,其效率将大幅降低。这只是一个很简单的例子来说明不转向自动化而造成的资源浪费。

DevOps可以看作是敏捷(Agile)的扩展,因为它可以降低由于开发团队,QA和布署团队之间的协作不良而可能出现的风险。DevOps通过认识到高质量软件需要包括QA和运维专家在内的所有利益相关方的持续参与和反馈的这一事实,扩展了敏捷原则的范围。

有许多事情可以通过自动化方式来完成,例如在发布时,使用新补丁更新Apache Web服务器,更新服务器上布署的开源软件的版本。

DevOps工程师可以通过创建脚本环境来自动化配置服务器的过程。你可以在一个节点上运行脚本,但如果不是数以千计的节点,则在数百个节点上运行相同的脚本将变得不切实际。脚本在这里不是可扩展的解决方案。

因此,需要以可扩展方式,跨大量节点自动化软件供应,配置管理,和应用程序布署。这就是像Chef,Puppet,和Ansible这种配置管理工具在DevOps世界中派上用场的地方。

持续集成

DevOps的另一个重要的方面是持续集成(CI),它是一种软件实践,CI允许开发人员不断更新对单个仓库的更改,从而进行自动化构建和测试。

一个持续集成系统通常包含一个监控版本控制系统的工具。每当监测到版本控制系统的更改时,持续集成系统将会自动化构建和测试应用程序。如果构建或测试未通过,系统会立即通知开发人员去解决问题。

持续集成可确保持续交付,因为所有的代码更改都会持续布署到构建阶段之后的测试和生产环境中。

使用持续集成,开发人员可以从手动任务中解脱出来,提高他们的工作效率,现在可以在CI中以自动的方式完成;由于频繁测试,错误和bug将更容易被找到和减少;可以更快速,更频繁的提供对最终用户的更新。

有多种产品和工具可以帮你在组织中实现持续集成。

有些工具可以让你在自己的网络基础架构中托管CI服务器。最流行的一个是Jenkins,它是由Sun公司的Hudson项目重新命名而来。

还有一些其它的托管CI产品,例如CircleCITravis CI,它们是完全托管在云端的。这些托管CI产品正变得越来越流行,尤其是对于小型公司或组织,因为它可以让工程师团队尽可能快速的开始持续集成。

总结

DevOps工程师扮演的最重要的角色是弥合了开发团队和运维团队之间的差距,增长软件交付率。

虽然DevOps工程师的角色因组织而异,但有两个常见的方面:自动化和持续集成。

DevOps 工程师实际上是做什么的的更多相关文章

  1. DevOps工程师到底做些什么?

    我们之前已经听到很多谈论DevOps和DevOps世界的最新趋势的事情,但是就DevOps工程师本身,到底干些什么呢? 在最纯粹的存在形式上来说,DevOps工程师是为了加快开发和运营团队之间的交付效 ...

  2. DevOps 工程师成长日记系列五:部署

    原文地址:https://medium.com/@devfire/how-to-become-a-devops-engineer-in-six-months-or-less-part-5-deploy ...

  3. DevOps 工程师成长日记系列四:打包

    原文地址:https://medium.com/@devfire/how-to-become-a-devops-engineer-in-six-months-or-less-part-4-packag ...

  4. DevOps 工程师成长日记系列三:版本

    原文地址:https://medium.com/@devfire/how-to-become-a-devops-engineer-in-six-months-or-less-part-3-versio ...

  5. DevOps 工程师成长日记系列二:配置

    原文地址:https://medium.com/@devfire/how-to-become-a-devops-engineer-in-six-months-or-less-part-2-config ...

  6. DevOps 工程师成长日记系列一:必备知识与技能组合

    原文地址:https://medium.com/@devfire/how-to-become-a-devops-engineer-in-six-months-or-less-366097df7737 ...

  7. 优秀DevOps工程师必会的33个面试题

    DevOps面试问题 01 您能告诉我们DevOps和Agile(敏捷)之间的根本区别吗? 答:尽管DevOps与敏捷方法(这是最流行的SDLC[Software Development Life C ...

  8. 2020年DevOps工程师入门指南

    DevOps兴起于2010年代,到现在DevOps已经在行业中拥有了一席之地,并在继续发展壮大. 有兴趣成为一名DevOps工程师吗?如果想要成为一名DevOps工程师,需要做到以下五点: 要有开发者 ...

  9. DevOps工程师的成长路线图

    DevOps工程师的成长路线图 我们推崇的是 Reducing the gap between Devs and Operation teams. 来自kamranahmedse you built ...

随机推荐

  1. Spring IOC容器基本原理

    2.2.1 IOC容器的概念IOC容器就是具有依赖注入功能的容器,IOC容器负责实例化.定位.配置应用程序中的对象及建立这些对象间的依赖.应用程序无需直接在代码中new相关的对象,应用程序由IOC容器 ...

  2. idea中@Data标签getset不起作用

    spring cloud中使用@Data标签,不用手动添加get set方法,但是如果项目中其他类中使用getset方法,如果报错,原因是idea中没有添加Lombok插件,添加上插件便可以解决.截图 ...

  3. 【RL-TCPnet网络教程】第24章 RL-TCPnet之网络控制报文协议ICMP

    第24章     RL-TCPnet之网络控制报文协议ICMP 本章节为大家讲解ICMP(Internet Control Message Protocol,网络控制报文协议),通过前面章节对TCP和 ...

  4. Dubbo+zookeeper构建高可用分布式集群(二)-集群部署

    在Dubbo+zookeeper构建高可用分布式集群(一)-单机部署中我们讲了如何单机部署.但没有将如何配置微服务.下面分别介绍单机与集群微服务如何配置注册中心. Zookeeper单机配置:方式一. ...

  5. JS中的特殊类别注意区分

    undefined和null 在JavaScript中存在这样两种原始类型:Null与Undefined. 这两种类型常常会使JavaScript的开发人员产生疑惑,在什么时候是Null,什么时候又是 ...

  6. Java数据结构和算法 - 哈希表

    Q: 如何快速地存取员工的信息? A: 假设现在要写一个程序,存取一个公司的员工记录,这个小公司大约有1000个员工,每个员工记录需要1024个字节的存储空间,因此整个数据库的大小约为1MB.一般的计 ...

  7. 优化之XML组件

    可在XML Parser 组件和XML Source定义中删除非project group,因为不需为这些非project group分配内存,但需要维护主键外键约束 ________________ ...

  8. 【mysql】Date和String的互相转换(DATE_FORMAT & STR_TO_DATE)

    1.Date  ——>  String 使用的函数:DATE_FORMAT(date,format)     date:需要转换的日期       format:格式化的样式 format样式整 ...

  9. Python -- socket 实现服务器之间的通信

    现在需要做一个分布式课程设计(简单小游戏),三个人小组合作完成. 我需要设计一个登录注册服务器,接收来自网关服务器(消息中间件)的用户登录注册消息请求,然后生成访问数据库服务器的消息,发送给数据库服务 ...

  10. ADO.NET五大对象详解

    Connection 连接对象 用于对数据库的连接操作.传入的参数为连接字符串. Commamd 命令对象 用于执行对数据库的操作 ,传入的参数可以为连接字符串或存储过程,也必须传入连接对象的实例. ...