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. 感恩节活动中奖名单 i春秋喊你领礼物啦!

    上周我们组织的感恩节活动,得到了小伙伴们积极踊跃的回复,看到你们这么真诚的留言,我们也是满满的感动,在众多留言中,我们选出了八位幸运用户,让我们一起恭喜获奖的小伙伴们吧. 恭喜以上8位幸运的小伙伴,我 ...

  2. 全面盘点当前Android后台保活方案的真实运行效果(截止2019年前)

    本文原作者“minminaya”,作者网站:minminaya.cn,为了提升文章品质,即时通讯网对内容作了幅修订和改动,感谢原作者. 1.引言 对于IM应用和消息推送服务的开发者来说,在Androi ...

  3. iOS学习——图片压缩到指定大小以内

    一.图片压缩简述 在我们开发过程中,有可能会遇到拍照.或者从相册中选择图片,要么单选或者多选,然后上传图片到服务器,一般情况下一张图片可能3-4M,如果类似微信朋友圈上传9张图片大约是 35M左右,如 ...

  4. HBase之CF持久化系列(续1)

    这一节本来打算讲解HRegion的初始化过程中一些比较复杂的流程.不过,考虑前面的博文做的铺垫并不够,因此,在这一节,我还是特意来介绍HBase的CF持久化.关于这个话题的整体流程性分析在博文< ...

  5. 我的.gitignore下配置。存在这里一下。日后有空研究研究!

    .DS_Storenode_modules/dist/yxxt/npm-debug.log*yarn-debug.log*yarn-error.log* # Editor directories an ...

  6. Python—day13 迭代器、迭代器对象、for循环对象、生成器、枚举对象

    一.迭代器 1.迭代器概念: 器:包含了多个值的容器 迭代:循环反馈(一次从容器在取出一个值) 迭代器:从装有多个值的容器在一次取出一个值 ls=[3,5,7,1,9] 遍历:被遍历的对象必须是有序容 ...

  7. ASP.NET Core 2.0 MVC - 获取当前登录用户信息

    一.前言 上篇实战完成后,没想到会有那么多的圈友给了那么多的支持,甚至连只是作为代码仓储的git上也给了一些小星星,真的感觉很惶恐啊,哈哈哈,毕竟代码写的很烂啊.由于上一篇只是大概说了下项目,所以准备 ...

  8. solr索引报错(java.lang.OutOfMemoryError:GC overhead limit exceeded)

    配置文件修改如下: <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3 ...

  9. Chapter 4 Invitations——16

    While I was sitting there, looking everywhere but at the car in front of me, I heard a knock on my p ...

  10. JDK源码分析(10)之 Hashtable 相关

    本文的目的并不是让你对Hashtable更加了解,然后灵活运用:因为Hashtable的一个历史遗留的类,目前并不建议使用,所以本文主要和HashMap对比,感受同样功能的不同实现,知道什么是好的代码 ...