DevOps 是一种文化,它为软件开发带来了许多急需的敏捷性。但它也被误解了:DevOps 真的意味着开发人员除了开发之外,还应该在底层基础设施方面工作中表现出色吗?
在本文中,我们将讨论开发人员和平台运营商之间技能组合的差异。DevOps 的现实方法真正意味着什么:开发人员完全拥有开发、发布和生命周期管理的所有权,并执行应用程序的操作——而不是底层平台。
![7779b384f2d0e1592c3d0bdb106b8ac5.png](https://i-blog.csdnimg.cn/blog_migrate/0631b6767de5335afc3c7fcd4eb5220a.png)
DevOps 的兴起与误解
DevOps 是软件开发中的一种文化运动,开发人员在其中承担其应用程序的运营责任。这不仅包括像以前那样开发代码。它还包括运维任务,例如发布新版本、管理其代码的生命周期(升级、数据库迁移等),以及通过监控和日志记录随时间观察其行为。
这极大地提高了生产力和敏捷性。开发人员完全掌握应用程序的生命周期意味着他们关闭了代码在现实中的行为方式的反馈循环。性能问题由负责修复它们的人员直接识别。应用程序洞察力直接提供给开发人员和设计人员,以优化应用程序用户体验等等。
但是 DevOps 经常被误解。因为它鼓励开发人员做的要远远多于以前。
促成 DevOps 文化运动的技术和管理它的隐藏英雄
DevOps 引发了组织文化变革。DevOps 之所以能够以我们所看到的形式进入这个阶段,是因为有支持这种工作方式的技术。技术支持将基础设施作为代码工具使用的能力。无论是虚拟机设置中的管理程序、Kubernetes 中的容器,还是功能即服务中的语言运行时。如果没有这些技术,我们将无法采用我们所知道的 DevOps。
但是仍然需要有人管理该底层技术,在本文中,我们称他们为基础设施管理人员。
开发运维人员与开发者有何不同?
开发人员与基础设施开发运维人员技能组合
开发人员开发,因此,他们最明显的输出是代码。但这不仅仅是代码,因为开发人员主要专注于在高级抽象上解决问题域中的问题,对问题域进行建模,并将这些模型和抽象转换为代码。
相比之下,开发运维人员专注于计算机系统的内部运作,并确保它们高效、安全、正确地运行,并且随时可用。
软件开发和开发运维人员任务所需的技能组合差异很大。
在 DevOps 中,开发人员还应负责管理其应用程序的生命周期并在运行时观察它们,这不仅意味着 开发人员的责任转移。这也意味着他们需要学习一套工具和支持技术。可观察性堆栈,例如日志记录和监控系统。部署编排,例如用于使用云、Kubernetes 或功能即服务平台的 API 和工具。
开发人员通常会接受这些工具和新的工作方式。因为随着他们责任的增加,他们的敏捷性也随之提高,他们的工作效率也更高。好处是立竿见影的,可以在整个组织中感受到。
然而,关键是必须有人让这些新工具和平台组件工作。不仅仅是安装一次,而是维护它们、升级它们、排除故障并保护它们。
至关重要的是,期望开发人员也管理底层系统是不合理的。
但这些底层基础设施就是开发运维人员所做的!
开发运维人员拥有足够深入地理解技术工作方式以进行故障排除所需的技能,例如,为什么网络失败、操作系统耗尽文件描述符或为什么 I/O 性能突然下降。
正确建模问题域的“人类现实”并将该模型转换为代码已经足够困难了。在足够深的层次上理解操作系统以自信地对“计算机的现实”进行故障排除,本质上是不同的。
有些问题当然可以通过粗暴的操作方法来解决,其中运行时(VM、容器平台、函数运行时)被替换。但是那些根深蒂固的,那些由错误引起的,会导致错误反复出现的,必须真正得到照顾。
即使是牛生病了也需要兽医帮助,开发运维人员就是类似兽医的那些老手。
这就是鼓励开发人员多劳多得的方式:他们被告知要同时进行开发和所有底层运维操作。这是不合理的,特别是底层平台的问题不应该由开发人员所管理。
一个人擅长前端和后端,并不意味着他们在系统底层方面也很出色。
这也不意味着他们能有效地完成这些任务。他们的时间可能更适合花在做他们擅长的事情上,而不是疯狂地在谷歌上搜索系统底层问题的答案。花费在这方面的任何时间都意味着他们被从开发新功能中拉出来,而是效率低下的对平台进行故障排除。
安全风险角度
在没有经过适当培训的情况下让开发人员负责平台安全也是一个严重的安全风险。开发人员永远不会被分配足够的时间来处理整个空间的问题。这就是为什么在 Datadog 的 2020 年容器报告中,最常见的 Kubernetes 发行版使用了 17 个月,且没有资格进行安全更新。除非专业团队专门为处理安全问题腾出时间和资源,否则基础设施不会发生改变。
您积压的无数安全任务就是证明。这些通常与应用程序的安全性有关。如果连这些都没有解决,谁来处理与平台相关的问题?
那么在实践中,真正的 DevOps 是什么样的呢?
实践中的真正 DevOps
![5eedb38c3cfe4fc46ca6908f0f601e55.png](https://i-blog.csdnimg.cn/blog_migrate/4c143f903b367394a276aef3868fcef8.png)
开发人员可以通过承担开发和应用程序操作的职责来实践 DevOps 的工作方式。这允许开发人员快速迭代。他们可以以敏捷的方式监控、分析、计划和执行代码更改。DevOps 使他们能够集中精力并通过应用程序开发为组织创造价值。
在技术层面上使他们能够这样做是建立开发运维人员的基础设施之上。开发运维人员保持平台和系统正常运行。他们是为开发人员以 DevOps 方式履行新职责奠定基础的推动者。
DevOps 从未打算让开发人员同时进行应用程序和平台底层基础设施操作。
对开发人员提出切合实际的期望可以通过让他们解决平台问题来弥补所有时间损失。这意味着有更多时间为您的最终用户创造价值,同时提高工作效率和满足他们的工作,而无需在开发和底层基础设施之间进行思维转换。
推荐
原创不易,随手关注或者”在看“,诚挚感谢!