事实上,尤其是那些(我们应该说)特定年龄的开发者中,“传统”开发者的角色似乎已经不复存在。与传统的软件开发生命周期(即软件的规划、构建和发布)不同,我们中的许多人现在都在多职责团队中工作,在这些团队中,开发和运维并存,并且越来越难以区分。
这种模式被称为 DevOps,但只是在最近开始流行。而且 DevOps 本身只花了几年(或者几个月?)就开始改变和适应。现在,我们正漂泊在首字母缩略词的海洋中(包括最近的 DevSecOps),这些首字母缩略词表示一种稍微不同的工作方式,每个首字母缩略词对未来的看法也略有不同。
其中最新的是 AIOps。在这个愿景中,AI 工具正在慢慢取代开发者的角色——就像 DevOps 以前做的那样——并最终将完全取代 DevOps。
评估这一预测是否正确是一件棘手的事情,但在本文中,我们仍将尝试。我们将看看 AI 承诺为开发过程做些什么,评估它是否真的能够从人类开发者手中接管,然后看看 DevOps 在几十年后可能会是什么样子。
自动化的前景
首先,为了理解为什么 AI 工具被 DevOps 团队如此迅速地采用,了解它们承诺能够实现什么是非常有用的。这一承诺基本上可以分为两部分:
一方面,AI 工具的使用“仅仅”是过度紧张的开发人员掌握他们所使用的日益复杂的系统的一种方式。
另一发面,AI 工具提供了一系列自动化代码开发和部署技术,从根本上改变了软件的制作方式。
关于前者——让我们的生活更轻松的 AI 工具——我们只需看看过去十年中云基础设施模型的激增,就知道为什么人工智能是必要的。如今,大多数公司都使用某种形式的混合或云基础设施,如果没有某种形式的人工智能帮助,管理这些基础设施几乎是不可能的。事实上,混合和多种云基础设施、容器和超大规模应用程序等微服务架构,创造了一个比以往任何时候都更复杂的企业 IT 环境。
其次是人工智能工具采用的第二个方面——事实上,一些人工智能工具,如 GitHub 的人工智能编码助手或微软的 DeepDev,不仅让我们的生活更轻松,还为代码开发和分发开辟了新的可能性。例如,人工智能系统评估单个用户需求的速度,使得使用 AI 来调整和指定每个用户的默认 Web 浏览行为成为可能,从而降低了它们在使用我们的软件时对特定类型恶意软件的脆弱性。
DevOps、AIOps 和 NoOps
由于 AI 工具的实用性,除了最顽固的 DevOps 团队,它们已经被所有团队广泛迅速采用。事实上,对于现在运行多个不同云的团队(差不多是所有团队,非常多),人工智能接口几乎已经成为他们发展和扩展他们的 DevOps 程序的必要条件。
这种转变最明显、最具体的结果是开发人员花时间查看的数据和系统。例如,过去运维团队的一个主要角色是构建和维护一个仪表盘,所有工作人员都可以查看这个仪表盘,该仪表盘包含一个软件上的所有适当数据。
如今,这一中心任务已经基本过时。随着软件变得越来越复杂,用一个仪表盘包含某一特定软件的所有相关信息的想法开始听起来很荒谬。相反,大多数 DevOps 团队在使用人工智能工具“自动”监控他们正在使用的软件,并且只有在明确出现问题时才显示数据。
这是我们作为开发人员和运维人员工作方式的重大转变,因此它被赋予了自己的首字母缩略词——AIOps,也就不足为奇了。事实上,有些人甚至更进一步,声称这种对人工智能工具的依赖现在意味着我们正在进入 NoOps 时代。然而,关于哪个角色被取消存在分歧——无论 NoOps 是指“没有开发人员”还是“没有运维”。
AI 革命
所有这些关于软件开发哲学背景的思考听起来可能有点抽象。直到你看到数字,从中可以明显看出,人工智能已经对软件的发布速度(和质量)产生了巨大的影响。
GitLab 最近对 4000 多名开发人员进行了调查,得出了一些确切的数据。调查发现,一些公司发布新代码的速度比以前快了十倍。很明显,75% 的用户使用人工智能和机器学习来测试和审查预发布的代码。这比一年前的 40% 略高。
这对于开发人员来说是个好消息,或者至少对于那些希望快速生成大量代码的人来说是个好消息。不幸的是,这并不总是与生成优秀代码相同。例如,从勒索软件攻击趋势可以明显看出,测试不良的代码正迅速成为许多组织的一个显著漏洞源,人工智能驱动的测试系统的出现对减少这一漏洞几乎没有什么作用。
尽管如此,前进的方向是显而易见的。再过几年,DevOps 团队中的绝大多数似乎都将依赖人工智能工具,软件的发布速度将是以前的数倍。这让我们回到了我们开始的问题——考虑到人工智能工具现在做了这么多 DevOps 工作,我们还需要 DevOps 人员吗?
好吧,既是,也不是。原因如下。
挑 战
在最肤浅的层面上,可以通过一个非常简单的测试来回答这个问题。随着人工智能工具在整个开发部门的应用,开发人员的工作量是否减少了?问一个普通开发者的问题,你会得到一个笑声。答案是否定的。
这是因为,随着 DevOps 团队在其软件的日常管理上花费的时间越来越少,他们过去在这方面花费的时间现在被更具价值的任务占用了——战略规划、元分析,以及确保他们的开发目标与管理目标一致。事实上,许多人认为会使 DevOps 过时的人工智能“革命”似乎使团队比以往任何时候都更庞大、更繁忙。这是因为它的副作用是使开发周期大大加快。
这一点得到了业务管理者的充分理解。在最近对 ZDNet 的采访中,iTech AG 的执行副总裁 Matthew Tiani 指出,DevOps 现在“通过增强的技术工具集(包括源码管理、CI/CD、编排)得到了增强。”
他还补充说,DevOps 的成功实施利用了“一种兼容的开发方法,例如敏捷和 scrum,以及一种促进和鼓励开发人员和运维人员之间协作的组织承诺。”
学会共存
实际上,这些因素和趋势意味着 DevOps 团队越来越关注业务目标,而不是技术挑战。这当然是一个变化,但这对于我们生产的软件的质量应该不是一个消极的变化。可以说,事实上,人工智能工具使团队能够将人力资源集中在他们最擅长的地方——创造性、整体性和战略性任务中。
你不需要找太远的证据。举个例子,Vue JS 现在是世界上增长最快的开发框架,现在已经有 240000 多个在线网站是用这个框架构建的。在人工智能工具出现之前,一个新的复杂的开发框架可以如此迅速地在全世界推广的想法是可笑的。现在,在人工智能工具的支持下,DevOps 团队有了更多的自由来勇敢地做出决策,相信他们的工具足够先进来应对技术挑战。
这意味着人工智能工具不太可能取代 DevOps,或者至少在短期内不会取代 DevOps。正如我们在采用 DevOps 的之前趋势中看到的那样,开发团队仍然需要战略领导,无论他们的技术工具如何先进。而且,尽管人工智能现在在许多领域都有很强的能力,但它们仍然缺少以真正创造性的方式响应用户需求的能力。
最 后
总而言之,我们可能还需要人力开发人员一段时间。尽管他们的角色可能与十年前完全不同,但这就是在如此发展变化的行业工作的代价(和乐趣)。