DevOps工程师在现代IT中扮演着至关重要的角色。随着应用程序开发和部署方式的变化,组织将寻求具有实践经验以及展示技能的专家。
DevOps工程师正迅速成为领先企业的关键和多面性角色。在没有明确晋升职位的道路上,IT部门必须确定经验丰富的DevOps工程师技能的正确组合。
企业需要高层领导才能成功整合开发,测试,部署和正在进行的操作,并将其作为持续集成,持续部署或DevOps计划的一部分。在DevOps环境中,需要具有特定技能(包括对协作和业务实践的全面了解)的人员来消除传统的孤岛,维护和推进快速发展的软件项目中的最佳实践,并为组织的工作取得最佳业务成果,这导致了DevOps工程师的出现。
DevOps工程师必须具备的基本技能清单很长,要掌握该角色,甚至还需要更多技能。尽管各组织的具体要求各不相同,DevOps工程师需要10种技能-从高科技到软技能。
1.平台熟悉度
IT组织通常围绕堆栈的概念构建-结合主流OS,服务和相关工具集来开发,部署和支持应用程序。堆栈之间经常会有一些重叠或交叉训练。但是,最成功,最有效的DevOps工程师在管理企业当前使用或计划使用的堆栈方面拥有深厚的专业知识。三个主要堆栈是Microsoft Windows Server,Linux服务器发行版和云架构。
Microsoft堆栈通常包括Windows Server 2016和Windows Server 2019等操作系统;管理平台,例如System Center及其各种迭代,包括用于系统级和服务级监视和通知的Operations Manager;支持应用程序,例如MySQL,PostgreSQL或Mongo用于数据库,SharePoint用于协作等。
Linux堆栈基于开源OS内核,并且可能涉及几种常见的Linux发行版,例如Ubuntu,Debian和Fedora。它还包括许多其他开源工具(例如Ansible,Chef和Puppet)以及支持私有云的开源框架(例如OpenStack)。对VM平台(如VMware的vSphere或Linux KVM)以及容器平台(如Docker)的丰富知识也至关重要。近年来,随着虚拟机和容器数量的激增,开源堆栈已引起人们的关注,这使得许可和软件维护协议的成本很高。
公有云选项包括可以补充Microsoft堆栈的Microsoft Azure,以及可以补充Linux堆栈的Google Compute Platform和Amazon Web Services(AWS)。要使用公有或混合云基础架构,DevOps工程师需要对所选云提供商的服务,管理选项和成本结构有扎实的知识。
2.编码能力
不同组织之间的DevOps实践有所不同,但最终,它们涉及通过开发使代码快速进入生产环境。DevOps工程师可能不会编写初级代码,因为这通常留给开发团队,但他们需要了解代码,开发脚本并解决集成问题,例如使代码版本与MySQL数据库对话,在操作端运行部署。 DevOps工程师的技能应包括PHP,Python,Perl,Ruby和其他计算机语言的知识。 DevOps工程师还受益于持续集成管理工具(例如Jenkins,Apache Maven或Apache Ant)的背景。
3.配置和版本管理
速度和流畅性是DevOps文化的标志,代码始终在变化,它需要良好的协作和版本管理技能来评估不断变化的用户需求,组合正确的组件并精心制作可运行的发行版。DevOps工程师使用诸如Git,Perforce和Apache Subversion之类的工具进行存储库(或仓库)控制。为了更好地部署这个不断变化的代码,许多DevOps工程师采用了配置管理,该管理几乎总是自动化的,以加快版本发布的速度。 Puppet,Chef和Vagrant等工具提供了这些功能,云提供商的本机工具(例如AWS CodePipeline或CodeDeploy)也提供了这些功能。
DevOps工程师应围绕这些工具链链接建立技能。
4.调配和部署
DevOps工程师不仅通过开发来扩展代码;它们提供了在操作方面促进这些发布所需的桥梁。这意味着他们需要IT硬件和基础架构领域的技能,从服务器和存储到网络和OS。由于DevOps工程师了解整个IT堆栈,因此他们可以指导本地数据中心或公有云中每个版本的配置和部署。该专有技术通常扩展到创建和维护可靠且高度可用的服务。
5.安全性
DevOps工程师在企业安全(开发和运营)中扮演着越来越重要的角色。在开发方面,DevOps团队必须创建安全代码,对开源软件负责,并在CI/CD流水线中执行漏洞测试等等。在运维方面,DevOps工程师必须实施安全措施,例如对静态数据和飞行中的数据进行加密。此职责可能与更正式的安全任务重叠,例如管理反恶意软件和入侵防护平台。
6.跟踪和评估发布绩效
DevOps工程师是最完善的顾问,他可以客观地评估每个发行版的性能,可以对已调配的资源和平台进行必要的调整,并可以使用各种工具来衡量工作负载的性能。此外,工程师必须分析日志结果,导出相关的关键性能指标,然后与全体员工共享该内容,以增强将来的软件迭代。 Nagios,Zabbix,Sensu,Amazon CloudWatch,Splunk和Relic等工具可以在本地和公有云平台上监视应用程序性能。绩效管理还可以扩展到问题跟踪和服务台支持,以对故障单进行优先排序并调查复杂的问题。
7.网络优化
现代企业工作负载依赖于网络资源和安全性,因此DevOps工程师的技能应包括对网络和网络接口的广泛了解,以及对工作负载带宽要求的理解。网络知识还非常重视安全性,包括VPN的部署和管理,以及将软件定义的网络用于以容器为中心的任务(如微分段)。
8.故障排除
DevOps工程师经常参与日常操作,通常期望这样的高级专业人员为技术支持人员和其他人员提供大量的解决问题支持,尤其是与部署流水线中特定的DevOps工作负载有关的支持。这可以包括远程部署和支持任务,例如对在远程或托管位置运行的工作负载进行部署,管理和故障排除。故障排除还可以扩展到业务基础结构的更多传统部分,例如服务器,存储和网络问题的补救措施。
9.整合
现代软件更多的是集成平台和服务,而不是编写底层代码。例如,今天没有人创建消息发送方或数据库功能,该代码集成到现有平台,例如Exchange,SQL,Redis或无数其他使用通用API的第三方或开源业务应用程序。这些平台通常是业务堆栈的一部分,但是工程师应该知道如何使用它们。例如,如果企业将软件产品与SQL后端相关联,则DevOps工程师应具有设置数据库和进行复杂SQL查询的技能。
10.沟通与团队管理
DevOps工程师的技能不仅是技术。担任此职务的人必须是一位专业的沟通者,同时也是一位能干的管理者,他可以进行交谈,走动并了解每个团队的观点,然后以富有成效的方式将这些不同的专业人员聚集在一起,以确保快速持续取得最佳业务成果的发展。
随着DevOps流程涉及众多人员和利益冲突,随着时间的推移,不可避免地会出现无数的技术和专业问题。其中包括人际冲突,组织内角色和职责的变化以及业务流程的中断。 DevOps工程师必须评估这些情况,并寻求建设性的解决方案,以实现目标并让同事满意。例如,如果由于效率低下的手动步骤而延迟了发布周期,则DevOps工程师可以提出技术和商业方案来投入自动化。
|