DevOps 使公司能够加速软件开发并部署更可靠的产品。然而,DevOps 团队是高度动态的,需要员工负责各种任务和职责。本文 探讨了基本的 DevOps 角色和职责。继续阅读以了解您需要雇用谁以及创建高效的 DevOps 团队需要考虑什么。
什么是 DevOps 工程师?
DevOps 工程师介绍了创建最佳 软件开发生命周期的流程、工具和方法,从编码和部署到测试和更新。工程师的主要职责是监督代码发布和部署。DevOps 工程师有助于克服软件开发、QA、测试和 IT 运营团队之间的障碍。通过打破孤岛,工程师确保了 DevOps 所需的协作、整体环境。
DevOps 工程师主要与内部客户合作,包括:
- 软件和应用程序开发人员。
- 质检人员。
- 系统操作员 (SysOps)。
- 项目经理和利益相关者。
DevOps 工程师的职责包括:
- 设计、构建、测试和维护 持续集成和持续交付 (CI/CD) 流程。
- 选择团队所需的最佳工具和技术来满足业务需求。
- 自动化DevOps 管道的不同阶段 。
- 恶意活动监控系统。
- 管理 IT 基础架构。
- 执行待命服务。
- 确保系统可用性。
- 集成和连接应用程序元素(API、库、SDK 等)。
脚本、云平台(AWS、Azure、GCP)、操作系统管理和 Git 工作流的知识 在 DevOps 工程师中很常见。
DevOps 职责
以下是全面、高效的 DevOps 团队的主要职责。
项目计划
负责 DevOps 项目规划的人员应采用敏捷方法来跟上 CI/CD 方法。以下是一些改进 DevOps 项目规划的技巧:
- 将项目拆分为更小的、相互依赖的工作。
- 创建综合计划,将事件和缺陷等计划外工作考虑在内。
- 使用来自测试、暂存和部署的反馈来重新规划正在进行的项目。
项目经理应该使用与软件开发人员相同的工具。使用相同的工具使团队能够快速更改优先级、设置跟踪机制并跟踪正在进行的发布。
应用程序和基础设施开发
DevOps 软件开发方法旨在定期、增量地更改代码版本。然而,DevOps 工程师很少从头开始编写代码或直接处理产品代码。工程师创建诸如脚本或插件之类的解决方案,以节省软件开发人员的时间。这些任务不需要编码技能,但 DevOps 工程师通常具有中高级脚本能力。DevOps 工程师负责基础架构组件的配置和优化。工程师通常使用 基础架构即代码 解决方案来加快设置时间并确保更高的基础架构灵活性。
应用程序和基础设施测试
持续测试(或 左移测试)的重要性随着发布周期的缩短而增加。负责测试的 DevOps 工程师设置工具、实践和流程,以便在管道早期检查代码并快速解决问题。
持续测试的目标 是:
- 提高代码质量。
- 创建更可靠的管道。
- 缩短测试周期。
- 使软件缺陷远离生产。
以下是 DevOps 团队运行的最常见测试:
单元测试: 单元测试可以快速获得新代码的反馈。这种形式的测试侧重于易于调试和修复的独立组件。
集成测试: 一旦组件合并到共享管道中,就会发生集成测试。这些测试确保构建在添加新代码时保持稳定。
端到端和回归测试: DevOps 工程师通过将最终代码部署到不同的服务器和资源来运行这些测试。端到端和回归测试检查应用程序是否在类似生产的环境中工作。
生产测试: 在应用程序发布后运行生产测试以检查稳定性。
自动化实施
DevOps 工程师使用自动化来使软件开发保持一致、可靠和高效。自动化存在于软件生命周期的每个阶段,从构建触发和单元测试到打包和部署到环境。自动化使 DevOps 团队能够快速轻松地:
- 加速管道流程。
- 扩展环境。
- 设置和管理基础设施。
- 更改 CI/CD 工作流程。
- 运行可靠的测试。
- 监控管道。
自动化消除了重复的手动分配。重复性任务的缺乏使员工感到高兴,而管道变得更加稳定和高效。
监控
监控允许工程师在整个软件生命周期中分析应用程序和基础设施的性能和稳定性。该职责包括几个过程:
- 日志记录: 日志记录为团队提供有关关键组件的数据。应用程序日志、基础架构日志和审计日志可帮助团队了解和改进产品。
- 警报: 警报通知团队并帮助工程师提前发现问题。警报提供调试信息以帮助快速解决问题。
- 跟踪: 跟踪提供性能和行为洞察力,可以提高生产中应用程序的稳定性和可扩展性。
良好的监控对网络安全至关重要 。可靠的监控工具可以区分小的服务中断和完全中断。
部署
部署是在目标环境中安装和设置软件版本的行为。软件版本可以是:
- 内部发布: 不超出开发团队的发布(例如,用于 QA 或演示项目的软件)。
- 外部版本: 面向生产中的客户和最终用户的版本。
- 开发版本: 团队为开发目的而部署的正在进行中的代码。
部署软件的责任要么属于特定的工程师,要么属于一个团队设置持续部署以自动化软件发布。使用 CD,每个代码更改都通过自动化测试并自动部署到生产环境。持续部署消除了计划发布的需要。反馈循环也更快,因此开发人员可以更灵活、更准确地解决问题。设置和维护自动部署具有挑战性。如果团队还没有准备好承担这个责任,公司应该首先完善持续集成和交付。
维护
DevOps 工程师在整个管道中执行日常应用程序维护。定期维护使团队能够:
- 确保所有环境顺利运行。
- 发现并删除应用程序、基础架构或集成中的漏洞。
- 使所有软件保持最新。
- 寻找改进管道的方法。
- 确保服务可用性。
事件管理
响应和解决事件是 DevOps 的基本职责。事件管理可确保代码和基础架构的安全,同时确保管道不会减慢。典型的响应策略有五个阶段:
- 检测: DevOps 工程师设置警报工具和系统来检测异常。大多数团队都有手册,告知员工发生事故时的首选联系人。
- 回应: DevOps 团队通常会指派多名工程师进行升级。如果随叫随到的团队成员无法解决问题,工程师可以带上合适的人来评估影响。
- 解决方案: 理想情况下,DevOps 工程师在问题有机会影响管道的其余部分之前解决事件。
- 分析: 每当团队解决问题时,工程师都会分析根本原因和响应策略。目标是提高系统弹性和团队检测和响应事件的能力。
- 准备就绪: 团队加强系统并防止将来发生类似问题。
安全性(DevSecOps)
在传统设置中,安全团队与软件开发人员分开运作。这种独立的方法不适用于 DevOps。快速的开发周期要求 DevOps 工程师将安全性集成到管道中。对集成安全性的需求产生了 DevSecOps 一词。DevSecOps 要求团队:
- 将应用程序和基础架构安全性集成到管道中,最大限度地减少对运营的干扰。
- 自动化安全门以保持 DevOps 工作流程快速。
- 选择正确的工具来持续集成安全性。
编写文档
文档是 DevOps 团队的主要知识来源。正式文档使工程师能够记录新功能、源代码、系统要求、设计说明、错误修复、工具指南、响应计划等。良好的文档对于以下方面至关重要:
- 事件响应计划。
- 软件的可靠性和可用性。
- 入职新工程师。
- 随叫随到的轮换。
- 推广 DevOps 最佳原则。
- 消除不同部门之间的孤岛和部落知识。
DevOps 团队管理
根据团队的规模,一名 DevOps 工程师可能需要管理其他专家。DevOps 团队管理负责人负责:
- 组织 IT 项目的后勤工作。
- 确保所有员工都了解目标和截止日期。
- 确保员工在整个管道中具有实时可见性。
- 选择正确的 CI/CD 工具。
DevOps 角色
以下是公司要从 DevOps 取得成功必须考虑的六个角色。
DevOps 布道者
布道者是在整个组织中促进和协调 DevOps 文化的变革推动者。此人负责启动 DevOps 采用并主动改进团队。传道者必须:
- 通过识别和量化业务影响来宣传 DevOps 的好处。
- 确保高管、开发和运营部门支持 DevOps 过渡。
- 确定支持最佳软件交付的角色。
- 确保 IT 员工接受足够的 DevOps 培训。
- 消除 IT 交付和运营中的孤岛。
- 创建集成和编排蓝图。
- 为团队选择正确的 DevOps 工具 。
向 DevOps 过渡 需要培养一种学习文化,在这种文化中团队反复失败、从错误中吸取教训并不断改进。这个周期从 DevOps 布道者开始。在 DevOps 旅程的开始,布道者是必不可少的。一旦公司接受了新的工作方式,布道者就会继续寻找改进管道架构的方法。
发布经理
发布经理负责产品从开发到生产的管理和协调。虽然类似于项目经理,但这些工作人员处理传统 PM 无法管理的技术细节。发布经理必须:
- 监督开发、测试和部署的协调、集成和进度。
- 通过实施敏捷流程来支持持续交付。
- 维护端到端的应用程序交付工具链。
- 衡量和解释 DevOps 指标和 KPI。
发布经理的其他常用名称是 发布工程师 或 产品稳定性经理。
自动化专家
自动化专家负责将重复的手动任务转化为团队可以按需运行的脚本。自动化专家必须:
- 在整个产品生命周期中寻找自动化机会。
- 选择正确的流程和工具来自动化流程。
- 设计团队在开发、测试和监控应用程序时可以使用的脚本。
- 不断寻找加快开发冲刺的方法。
- 在整个组织内推广精益思想。
自动化专家的其他名称是 自动化战略家 和 集成专家。
软件开发人员
软件开发人员编写产品代码。但是,在 DevOps 文化中,开发人员的职责范围扩大了。DevOps 软件开发人员必须:
- 为新版本编写前端和后端代码。
- 启动单元测试。
- 与 QA 合作以确保代码在交付前没有错误。
- 监控问题和潜在改进机会的管道。
QA 和 XA 专家
虽然软件开发人员负责一些测试,但 DevOps 团队仍然需要一个专门的 QA(质量保证)部门。DevOps QA 测试人员负责:
- 测试和验证版本。
- 记录错误报告。
- 确保特性和功能符合设计规范。
强大的 DevOps 测试结构还需要 XA(经验保证) 专家。QA 人员测试代码的功能,而 XA 人员确保新功能不会对最终用户体验产生负面影响。
安全工程师
DevOps 安全工程师在生命周期的所有阶段确保版本安全。这些工作人员负责:
- 保护管道免受潜在攻击。
- 保护最终用户免受 网络威胁。
- 确保生产符合标准和法规。