云原生DevOps工程师的角色和职责


云原生DevOps是一个相对较新的又包含了旧概念与想法的集合,它们是由于因解决构建应用程序的旧方法的不足的需求而结合在一起的。要了解云原生DevOps工程师每天所做的工作,需要了解云原生模型的目标是构建利用云工具能轻松实现可适应和弹性的应用程序。云原生计算的基础包含有四个主要概念:微服务、容器、CI/CD和DevOps。

微服务是一种将应用程序开发为一系列小型专用服务的方法,这些服务组合在一起形成一个完整的产品。这些功能被打包到像Docker这样的容器中,然后通过持续集成/持续部署管道进行推送。微服务的模块化使不同的团队能够在产品的不同部分上并行工作而不会相互干扰,并且还通过减少任何这些服务的失败对其他服务的影响来增强产品。

使用容器来托管微服务是非常有效的,因为容器比传统虚拟机更有效地使用系统资源。它们只需要运行与它们托管的应用程序相关的服务,而不是整个客户操作系统及其相应的进程。容器对于云原生应用程序的敏捷部署至关重要,尤其是与Kubernetes等管理软件配合使用时。所有这些都是使CI/CD成为可能的基础。如果没有这些工具提供的灵活性,那么这些允许更改,修复或将功能推到生产环境,从开发到自动代码审查和测试的CI流程将非常困难。

DevOps使用所有这些乃至其他更多工具来解决所谓孤岛问题,就是当开发人员编写代码然后将其扔到Ops部门时会发生什么。开发人员从头到尾不拥有他们的代码的结果就是,Ops部门经常需要负责维护未考虑基础架构的代码。这里的解决方案不仅仅是创建出第三个结合开发和运维角色的闭塞的环境。


DevOps不仅仅是一个流程或工作岗位,它更是一种所有权文化。
DevOps工程师试图培养“谁开发谁维护”的理念,这意味着他们需要从软件开发过程一开始就评估可能困扰应用程序生产的瓶颈。云原生DevOps工程师需要能够通过CI/CD流程获取应用程序,以确保代码可以构建,通过测试并在不破坏生产环境的情况下进行部署。这因此激励他们思考应用程序在创建之前的运行方式,并编写脚本来创建持续的集成管道,以确保产品的上市时间更快,用户体验更好。

最优秀的DevOps工程师将能够使用或学习各种开源技术,并且熟悉大量用于编写脚本的编程语言。他们在IT系统,操作和数据管理方面拥有一些经验,能够将这些知识集成到CI/CD开发模型中。至关重要的是,DevOps工程师不仅需要编写代码,还要考虑他们开发的产品的实际业务成果。像这样的全局思考还需要强大的软技能,以实现跨团队以及客户和技术团队之间的沟通。

当然,没有谁是一座孤岛。DevOps团队虽然在同一个组织覆盖下运作,但是需要各类不同的角色才能胜任。这些团队成员的实际头衔可能会因地而异,但一般职责仍然相同:
  • 产品负责人(负责团队的工作):此人担任客户团队联络人。他们需要特别强大的软技能和有效沟通技术概念的能力,以便与客户合作,提出满足期望的产品。他们了解全局,可以告诉团队应该如何运行应用程序以及使用什么基础架构。
  • 团队领导(负责团队的工作方式):此人是技术团队的管理类型角色。他们根据团队成员的个人优势和技能集来委派职责。他们也贡献代码,但是在短期发展冲刺背景下,他们使团队与产品所有者的全局观保持一致。他们通常对技术决策有最终决定权。
  • 自动化架构师/站点可靠性工程师(SRE):此人在构建云基础架构方面经验丰富,并了解在生产中支持应用程序所需的内容。他们开发自动化系统,以确保持续部署顺利运行。他们专注于确保基础架构在大规模环境中的稳定性能,并了解如何随着公司的发展扩展基础架构。
  • 软件开发人员:软件开发人员将与之前列出的所有团队成员一起工作,并根据客户的要求创造出代码,然后进行测试,部署和监控。


随着团队的发展,这些角色可能会分成几个其他更细粒度的职位,以便利用增加的人力资源。UX工程师,测试工程师和安全工程师就是一些例子,它们会从列出的其他一些人那里承担重要的责任并对其进行扩展。

原文链接:Roles and Responsibilities of Cloud Native DevOps Engineers(翻译:fengxsong)

0 个评论

要回复文章请先登录注册