为什么需要 DevOps?谁是 DevOps 专家?

当应用程序无法运行时,您最不想听到同事说的就是“问题出在您这边”。 结果,用户遭受损失——而且他们并不关心团队的哪一部分应该对故障负责。 DevOps 文化的出现正是为了围绕最终产品的共同责任将开发和支持结合在一起。

DevOps 概念中包含哪些实践以及为什么需要它们? DevOps 工程师做什么以及他们应该能够做什么? EPAM 的专家回答了这些问题和其他问题:系统工程师兼 DevOps 传播者 Kirill Sergeev 和公司 DevOps 团队之一的首席系统工程师兼协调员 Igor Boyko。

为什么需要 DevOps?谁是 DevOps 专家?

为什么需要 DevOps?

以前,开发人员和支持人员(所谓的运营)之间存在障碍。 这听起来很矛盾,但尽管他们做的是同一件事,但他们的目标和 KPI 却不同。 开发的目标是尽快实现业务需求并将其添加到工作产品中。 支持人员负责确保应用程序稳定运行 - 任何更改都会使稳定性面临风险。 存在利益冲突——DevOps 的出现解决了这个问题。

什么是 DevOps?

这是一个很好的问题,也是一个有争议的问题:世界尚未最终就这一问题达成一致。 EPAM 认为 DevOps 结合了团队内的技术、流程和互动文化。 该协会旨在持续为最终用户提供价值。

基里尔·谢尔盖夫:“开发人员编写代码,测试人员对其进行审查,管理员将最终产品部署到生产中。 很长一段时间,团队的这些部分有些分散,然后出现了通过一个共同的流程将他们团结起来的想法。 这就是 DevOps 实践的出现方式。”

开发人员和系统工程师对彼此的工作产生兴趣的那一天到来了。 生产和支持之间的障碍开始消失。 这就是 DevOps 的出现,其中包括实践、文化和团队互动。

为什么需要 DevOps?谁是 DevOps 专家?

DevOps 文化的本质是什么?

事实上,最终结果的责任在于每个团队成员。 DevOps 哲学中最有趣和最困难的事情是要理解一个特定的人不仅对他自己的工作阶段负责,而且对整个产品将如何工作负责。 问题不属于任何一方——它是共享的,每个团队成员都帮助解决它。

DevOps 文化中最重要的是解决问题,而不仅仅是应用 DevOps 实践。 而且,这些做法并不是“在某人这边”实施的,而是贯穿于整个产品。 项目本身不需要 DevOps 工程师 - 它需要问题的解决方案,并且 DevOps 工程师的角色可以分配给具有不同专业的多个团队成员。

DevOps 实践有哪些类型?

DevOps 实践涵盖软件生命周期的所有阶段。

伊戈尔·博伊科:“理想的情况是我们在项目启动时就开始使用 DevOps 实践。 我们与建筑师一起规划应用程序将具有什么样的架构景观、它将位于何处以及如何扩展,并选择一个平台。 如今,微服务架构很流行 - 为此我们选择了编排系统:您需要能够单独管理应用程序的每个元素并独立于其他元素进行更新。 另一种做法是“基础设施即代码”。 这是一种使用代码创建和管理项目基础设施的方法的名称,而不是通过与服务器的直接交互。

接下来我们进入开发阶段。 这里最大的实践之一是构建 CI/CD:您需要帮助开发人员快速、少量、更频繁、更轻松地将更改集成到产品中。 CI/CD 涵盖代码审查、将主版本上传到代码库以及将应用程序部署到测试和生产环境。

在 CI/CD 阶段,代码通过质量关卡。 在他们的帮助下,他们检查从开发人员工作站出来的代码是否符合指定的质量标准。 此处添加了单元和 UI 测试。 为了快速、轻松和集中的产品部署,您可以选择适当的部署类型。

DevOps 从业者在支持成品阶段也占有一席之地。 它们用于监控、反馈、安全和引入变更。 DevOps 从持续改进的角度看待所有这些任务。 我们最大限度地减少重复操作并使其自动化。 这还包括迁移、应用程序扩展和性能支持。”

DevOps 实践有哪些好处?

如果我们写一本关于现代 DevOps 实践的教科书,第一页就会有三点:自动化、加速发布和用户的快速反馈。

基里尔·谢尔盖夫:“首先是自动化。 我们可以自动化团队中的所有交互:编写代码 - 推出 - 检查 - 安装 - 收集反馈 - 返回起点。 这一切都是自动的。

二是加快发布,甚至简化开发。 对于客户来说,产品尽快进入市场并比竞争对手的同类产品更早开始提供好处始终很重要。 产品交付流程可以不断改进:减少时间、添加额外的控制标记、改进监控。

三是用户反馈加速。 如果他有意见,我们可以立即做出调整,立即更新申请。”

为什么需要 DevOps?谁是 DevOps 专家?

“系统工程师”、“构建工程师”和“DevOps 工程师”的概念有何关联?

它们重叠,但属于略有不同的领域。

EPAM 的系统工程师是一个职位。 他们有不同的级别:从初级到首席专家。

构建工程师更多的是可以在项目中执行的角色。 现在这就是负责 CI/CD 的人的称呼。

DevOps 工程师是在项目上实施 DevOps 实践的专家。

如果我们总结一下,我们会得到这样的结果:担任系统工程师的人在项目中扮演构建工程师的角色,并参与该项目中 DevOps 实践的实施。

DevOps 工程师到底做什么的?

DevOps 工程师将构成项目的所有部分组合在一起。 他们了解程序员、测试人员、系统管理员的工作细节并帮助简化他们的工作。 他们了解业务的需求和要求及其在开发过程中的作用,并在构建流程时考虑到客户的利益。

我们谈论了很多关于自动化的话题——这是 DevOps 工程师首先要处理的问题。 这是一个非常大的点,其中包括准备环境。

基里尔·谢尔盖夫:“在对产品实施更新之前,需要在第三方环境中进行测试。 它是由 DevOps 工程师编写的。 他们向整个项目灌输 DevOps 文化:他们在项目的各个层面引入 DevOps 实践。 这三个原则:自动化、简化、加速——它们将带到任何它们能到达的地方。”

DevOps 工程师应该了解什么?

总的来说,他必须具备不同领域的知识:编程、使用操作系统、数据库、汇编和配置系统。 其中包括使用云基础设施、编排和监控系统的能力。

1. 编程语言

DevOps 工程师了解几种基本的自动化语言,例如,可以告诉程序员:“不用手安装代码,而是使用我们的脚本来安装代码,该脚本可以自动执行所有操作,怎么样? 我们会为其准备一个配置文件,方便您和我们阅读,并且我们可以随时更改它。 我们还将了解谁、何时以及为何对其进行更改。”

DevOps 工程师可以学习以下一种或多种语言:Python、Groovy、Bash、Powershell、Ruby、Go。 没有必要深入了解它们 - 语法基础知识、OOP 原理以及编写简单自动化脚本的能力就足够了。

2。 操作系统

DevOps 工程师必须了解产品将安装在什么服务器上、将在什么环境中运行以及将与哪些服务交互。 您可以选择专注于 Windows 或 Linux 系列。

3.版本控制系统

如果不了解版本控制系统,DevOps 工程师就无处可去。 Git 是目前最流行的系统之一。

4. 云提供商

AWS、Google、Azure - 尤其是当我们谈论 Windows 方向时。

基里尔·谢尔盖夫:“云提供商为我们提供了完全适合 CI/CD 的虚拟服务器。

安装十台物理服务器需要大约一百次手动操作。 每台服务器都必须手动启动,安装和配置所需的操作系统,在这十台服务器上安装我们的应用程序,然后仔细检查所有内容十次。 云服务用十行代码取代了这个过程,优秀的 DevOps 工程师应该能够使用它们。 这为客户和公司节省了时间、精力和金钱。”

5.编排系统:Docker和Kubernetes

基里尔·谢尔盖夫:“虚拟服务器被划分为多个容器,我们可以在每个容器中安装我们的应用程序。 当有很多容器时,您需要管理它们:打开一个,关闭另一个,在某处进行备份。 这变得相当复杂,需要一个编排系统。

以前,每个应用程序都由单独的服务器处理 - 其操作的任何更改都可能影响应用程序的可服务性。 借助容器,应用程序变得隔离并单独运行 - 每个应用程序都在自己的虚拟机上运行。 如果发生故障,无需浪费时间寻找原因。 销毁旧容器并添加新容器会更容易。”

6.配置系统:Chef、Ansible、Puppet

当您需要维护整个服务器群时,您必须执行大量相同类型的操作。 它既漫长又困难,而且手工工作也增加了出错的机会。 这就是配置系统发挥作用的地方。 在他们的帮助下,他们创建了一个易于程序员、DevOps 工程师和系统管理员阅读的脚本。 该脚本有助于自动在服务器上执行相同的操作。 这减少了手动操作(从而减少了错误)。

DevOps 工程师可以打造什么样的职业?

您可以横向和纵向发展。

伊戈尔·博伊科:“从横向发展的角度来看,DevOps工程师现在前景最广阔。 一切都在不断变化,您可以培养各个领域的技能:从版本控制系统到监控,从配置管理到数据库。

如果员工有兴趣了解应用程序在其生命周期的各个阶段(从开发到支持)的工作原理,那么您就可以成为系统架构师。”

如何成为一名 DevOps 工程师?

  1. 阅读 Phoenix 项目和 DevOps 手册。 这些是 DevOps 哲学的真正支柱,第一个是虚构的作品。
  2. 从上面的列表中学习技术:自行学习或通过在线课程。
  3. 作为 DevOps 工程师加入开源项目。
  4. 在您的个人和工作项目中练习并提供 DevOps 实践。

来源: habr.com

添加评论