自从DevOps概念在市场上推出以来,其使用呈上升趋势。世界各地的企业已经张开双臂开始接受这个开放式的软件开发方法。由于在全球范围内被接受,企业提供了许多亟待填补并且有吸引力的DevOps相关工作机会。很多公司正在寻找有足够经验引入DevOps的专业人员,缺乏熟练的相关专业技能人才是这一理念实施的主要困境。
所以无论您现在是系统管理员、程序员还是可以在软件开发过程中工作的任何其他专业人员,都可以在DevOps中找到自己的位置。但在成为这样的人之前,需要我们分析一下,作为系统管理员、开发人员或QA专业人员,您的技能是否完全符合DevOps的需求,这一点至关重要。
在过去几年中,我曾在不同的项目中与不少优秀的系统管理员合作过,我了解他们中的一些人愿意转型到DevOps的角色。在这篇文章中,我将尝试解释系统管理员应该具备哪些技能,以便成功转变到DevOps工程师。
系统管理员和DevOps工程师之间的区别
传统的系统管理工作仅限于配置、维护和修复服务器和计算机系统。通常情况下,系统管理员在软件开发过程中没有任何作用,系统管理员和开发人员之间存在巨大的隔离。可以这么说,系统管理员角色已经存在了很长一段时间,任务和责任已经被传统观念下了定义。
但是DevOps是一种不同的途径,在这个过程中它创建一个开发、QA和系统管理员来克服缺乏协调的通道。在DevOps中,整个团队在产品开发生命周期中都有交叉的角色,开发人员可以在开发阶段完成后的生产环节中中执行任务,而系统管理员也可以在产品的设计阶段参与。这样相关的角色就并不存在很明显的鸿沟了。
在这个过程中DevOps工程师没有正式的定义,它被认为是最难完全匹配和保持持续成功的复杂角色之一。
突出来说,DevOps专业人员是那些对部署和运营感兴趣的程序员或者擅长编码的系统管理员,这些人可以在项目进入开发阶段后仍然能够改进测试和部署的规划;是那些超越了传统所定义的能力范围,并且对技术环境有更全面的看法的人。
系统管理员的技能迁移
DevOps否定了“各自为战思维”,比如开发人员和系统管理员只做自己的份内工作。DevOps打破团队和部门并且成为一个具有交叉角色的作战小分队。但是这里不是说通过采用“DevOps”来减少员工和省钱减少公司成本,为了这种目的而施行“DevOps”将会对团队将产生非常严重的负面影响。
不可否认系统管理员和DevOps工程师之间存在技能重叠。DevOps学院的一份报告列出了目前公司正在寻找的9大技能:
可以很容易地看到,如脚本、操作系统管理和监控这些技能已经由系统管理员拥有,有些则不是。
系统管理员的技术革新
传统系统管理员的技能(虽然有些变化)仍然适用于DevOps。但是DevOps工程师需要革新他的技能应用于产品开发的整个软件生命周期,所以他必须熟悉云服务和最先进的自动化工具,当然最后他还必须能够与其他成员协作。
以下是系统管理员为成为DevOps工程师所应具备的一些关键内容:
持续集成:
关于DevOps最重要的方面是持续集成(CI),这是一个软件开发实践,CI允许开发人员为了自动构建和自动化测试而不断自动更新资源库。
通常,传统的系统管理员角色并不涉及持续集成,但是如果您希望进入DevOps,则需要使用持续集成工具的实践经验。
有不同的产品和工具可以帮助您在组织中实现持续集成。有些工具可让您将CI服务器托管在您自己的网络基础架构中。 最受欢迎的是Jenkins,还有一些其他托管的CI产品,如完全托管在云中的CircleCI和Travis CI。
云计算:
大多数DevOps项目都是由云托管的。作为DevOps工程师您必须能够配置与Amazon Web Service、MS Azure、Google Cloud和其他云主机相关的服务器和服务。除此之外,您还应该熟悉软件即服务(SAAS)、平台即服务(PAAS)、基础架构即服务(IAAS)等云服务。
配置管理:
作为DevOps的工程师,您必须熟悉Puppet、Chef、Salt或Ansible等配置管理工具。它们都是为了更容易自动配置和维护数百甚至数千个服务器而设计的。这些所有工具都有助于实现各种流程的自动化,这也是DevOps的主要特色之一。
总结
系统管理员角色已经存在了很长一段时间,并且任务和责任已经被传统观念下了定义。但是DevOps是一种不同的途径,在这个过程中它创建一个开发、QA和系统管理员来克服缺乏协调的通道。
系统管理员已经拥有一些DevOps技能,如脚本、操作系统管理和监控。但是为了成为DevOps工程师,系统管理员还需要掌握一些关键技能,例如一些流行的持续集成工具,云计算和配置管理工具的实际操作经验。