如果一个组织的开发人员和运维人员是独立工作的模式,实施DevOps就需要对组织进行大的调整。因为,只有具备合适的组织人员,文化和工具来才能成功实施DevOps。根据Atlassian的 DevOps2020趋势显示,实施DevOps的最常见的障碍之一是员工缺乏技能。
什么是DevOps工程师?
DevOps工程师是一位IT专家,应该对开发和运维工作都有广泛的了解,包括编码,基础架构,系统管理和DevOps工具链。DevOps工程师还应该具有人际交往能力,因为他们需要跨团队工作。
DevOps工程师需要对通用系统体系结构有深刻的了解,还必须具有传统开发人员的工具技能和实践的经验,例如源代码控制,代码审查,编写单元测试等。
角色与职责
DevOps工程师的角色在一个组织之间会有所不同,但始终需要将代码发布,系统基础结构配置和管理,系统管理,安全性进行某种组合。
代码发布,包括构建和部署应用程序代码所需的工作。确切的工作取决于许多变量,例如,编写代码所用的语言,已自动化的流水线数量以及系统是内部部署还是云环境。代码发布还需要选择和维护CI/CD工具,或者编写和维护定制的构建/部署脚本。
系统基础结构配置和管理,包括部署和维护托管应用程序所需的服务器,存储和网络资源等。对于拥有本地资源的组织,这可能包括管理数据中心中的物理服务器,存储设备,交换机和虚拟化软件。对于混合或完全基于云的组织,这通常指的是管理相同的虚拟实例。
传播DevOps方法,通常被低估或被完全忽略,但是可以说是DevOps工程师最重要的角色。向DevOps文化的转变,可能会给团队成员带来或多或少的不适应。作为DevOps专家,应由DevOps工程师在整个组织中帮助传播DevOps方法。
DevOps工程师技能
DevOps工程师所需的技术技能,将根据所在的团队结构,技术和工具集而有所不同。但是,强大的沟通和协作技能至关重要。
沟通与合作
对于DevOps工程师而言,与团队成员,部门经理或客户进行有效的沟通和协作非常重要。这些所谓的“软技能”通常被忽视和低估,但是DevOps的成功很大程度上取决于沟通反馈的质量和数量。
系统管理
DevOps工程师需要具有系统管理方面的经验,例如调配和管理服务器,部署数据库,安全监控,系统补丁以及管理内部和外部网络连接。
使用DevOps工具的经验
使用正确或合适的工具对于DevOps的实践至关重要,因此DevOps工程师必须了解并能够使用多种工具。这些工具涵盖了从基础架构搭建、监视、和产品或服务运维的DevOps生命周期。
配置管理
DevOps工程师要具备使用Chef,Puppet或Ansible等一种或多种配置管理工具的经验。许多组织已采用这些或类似工具来自动化管理系统环境,例如部署新系统或将安全补丁应用于已经运行的系统。
容器与容器编排
通过容器化,该应用程序的代码及其运行时环境被捆绑在同一个镜像中。这使得传统的配置管理工具变得不必要。但是,管理容器也带来了挑战,使用“容器编排”工具(例如Docker Swarm或Kubernetes)的经验也成为DevOps工程师必不可少的技能。
持续集成和持续部署
持续集成和持续交付(CI/CD)是DevOps软件开发方法的核心实践,并有许多可用工具来支持。任何CI/CD工具的最基本功能是自动化构建,测试和部署软件的过程。
DevOps工程师需要配置和部署一个或多个CI/CD工具的经验,并且通常需要与其他开发团队紧密合作以确保有效地使用这些工具。
系统架构和配置
DevOps工程师应具有设计,配置和管理本地或云中的计算机生态系统的能力。要了解基础架构即代码(IaC),还要具备将DevOps软件开发中的最佳实践应用于云基础架构资源的能力。DevOps工程师应了解如何使用Amazon Web Services(AWS),AWS CloudFormation或Terraform在云中为系统基础架构建模。
熟悉编码和脚本
许多传统的系统管理员都有编写Shell脚本以自动执行重复任务的经验。DevOps工程师不仅应该编写自动化脚本,还应该了解高级软件开发实践以及如何实施敏捷开发实践。
团队协作技巧
不管具体的组织结构如何,跨团队协作都是有效的DevOps战略的基本组成部分,DevOps工程师都应在整个组织中与许多不同的人一起工作。
例如,DevOps投资中最有价值的回报之一就是能够为开发人员提供更快的反馈。DevOps工程师也通常必须与QA合作,以提高测试方法的速度,功效和输出。
同时,开发人员在努力改善构建和部署应用程序代码的时,也需要DevOps工程师的支持。
DevOps团队:其他的角色和职责
DevOps传播者
这是一名DevOps专家,他在整个组织内促进和开发DevOps的实践。DevOps宣传人员通常具有强大的技术背景,但该角色的重点是人际沟通和流程改进。
变更顾问委员会
尚未过渡到DevOps或仍处于过渡阶段的组织可能会有一个单独的小组,称为变更顾问委员会(CAB)或一个单独的软件发布经理角色。
此类角色的目的是确保发布到生产环境中的任何应用软件均符合质量和安全标准,并获得相应的管理批准。
自动化专家
每位DevOps工程师都应具备自动化方面的专业知识,这可能就需要一个专注于管理CI/CD等自动化工具的人。
软件开发人员
在大多数情况下,软件开发人员是指编写前端或后端应用程序代码的团队成员。在敏捷思维兴起之前,这些人被描述为“计算机程序员”。
质量保证
质量保证(QA)团队负责发现软件故障。质量检查工程师历来专注于手动测试应用程序代码,以确保它不会发生异常(“烟雾测试”),不会与现有功能(“回归测试”)或与任何其他新功能(“集成测试”)冲突。
组织越来越多地雇用测试工程师来补充或替换手动测试人员。SDET致力于在将新的应用程序代码投入生产环境之前对其进行测试。但是,与其专注于测试软件,不如编写自动化测试代码。
安全工程师
不把安全性和合规性问题完全集成到项目计划和开发流程中的组织,通常会拥有一个负责安全性的个人或团队。事实证明,这是不好的,因为它使安全性成为事后考虑的问题。要保护软件的安全性要比安全性的设计,困难得多。
超越单一角色
DevOps是一种文化变革,新的管理原则以及使用技术工具的实践。DevOps工程师是DevOps转型的核心,必须具备广泛的技能来促进这一变化。然而,大多数组织将不仅需要一名DevOps工程师,而且需要全栈工程师和专家的相互配合协作以实施DevOps并改善软件开发生命周期。DevOps工程师可帮助解决各种孤岛,以促进不同专家之间以及整个工具链之间的协作,以实现DevOps的预期效果。
疑问链接:https://dzone.com/articles/how-a-devops-engineer-facilitates-devops
本文转自 https://www.kubernetes.org.cn/9004.html,如有侵权,请联系删除。