认知负担的挑战与平台工程的机遇

这篇具有很好参考价值的文章主要介绍了认知负担的挑战与平台工程的机遇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

开发人员与 DevOps 不断增加的认知负担被认为是软件工程中最大的问题之一。随着越来越多的工具、框架和方法可以选择,以及“You build it, you run it”的 DevOps 思想的发展,我们可以看到为了提供面向客户的产品和服务,认知负担也随之大幅增加。
 

在今天的文章中,我们将初步了解认知负担的基本概念,一起探讨对于开发人员与 DevOps 工程师来说,他们的认知负担来自哪里,平台工程将如何减轻认知负担并改进相应工作流程。
 

了解认知负担

通常来说人在任何给定时间内可以处理的复杂性是有限的,同时存在于我们脑海里的想法数量也是有限的,通常是在三到七个之间。而一些不必要但又不得不处理的信息或分散手头任务的注意力也增加了我们所处理的复杂性。复杂性还来自于我们整合想法及概念以帮助理解的过程。这些都构成了我们在尝试执行任务时所需要承受的认知负担。在心理学中,每种类型的负担都有对应的名称:
 

  • 内部认知负担-由于任务内在难度而产生的负担

  • 外部认知负担-处理分散注意力或不必要的元素产生的负担

  • 附加认知负担-由于建立对任务的理解而产生的负担

 
随着对任务的熟悉程度越来越高,当我们开始整合理解并建立一个关于任务的更高阶心智模型,内部认知负担将随之减少。例如,当我们第一次尝试驾驶时可能感到力不从心,即使在路况良好的情况下我们也需要高度集中,这时驾驶给新手司机产生的内部认知负担是极高的。随着对车况更加熟悉且驾驶技术有所提高,开车这项任务所带来的认知负担逐渐减少。当然,我们的驾驶技能依然会受到外部认知负担影响,比如在开车时手机突然响了等因素。
 

开发人员的认知负担

开发人员往往喜欢谈论架构、抽象和实施细节方面的事情。架构通常是整体想法或创意,也就是系统如何在宏观层面上组合在一起。抽象则是概括,也就是如何在架构中重用代码或组件。实施细节就是如何实现抽象的具体版本。
 

这种层次结构允许开发者们在忽略各种细节的情况下仍然能够理解他们正在工作的系统。通常来说,参与软件开发项目的每个人都应该熟悉总体体系结构。在实际情况中,如果开发人员需要了解软件系统的所有细节可能不是啥好事,比如软件中某个地方有 bug 或者更糟心的,架构某处存在缺陷。
 

开发现代软件是一项高度复杂、涉及多职能及高度协作的过程。例如,专注于构建 web 端相应式 UI 的开发人员可能不一定知道如何配置为应用程序提供服务的 K8s 集群。理想情况下,该开发人员会专注于构建 UI 并保持较低的外部认知负担,而配置 K8s 机群会分散对核心任务的注意力。对于该开发人员来说,K8s 是一个隐藏在抽象层下的实施细节,与构建 UI 并没有直接关联。所以当每个人可以专注于自己的专业领域时,开发团队的价值就能发挥的最大。团队中的每个人都可以忽略与手头任务不相关的事情时,相应的外部认知负担就会很低。
 

DevOps 的认知负担

尽管 DevOps 旨在提高软件开发效率,但 DevOps 工程师经常面临大量艰巨的任务,这些任务增加了他们的认知工作量。让我们来看一些常见的例子。
 

首先,DevOps 工程师经常需要为新的软件项目设计新的流程,例如持续集成和持续交付(CI/CD)流程。DevOps 工程师可能还需要启动开发环境的基础设施,同时确保与生产环境的兼容性。这涉及管理 Docker 文件、Helm 图表和 Terraform 代码,随着项目的发展,这些文件需要定期维护和支持。CI/CD 管道也需要构建,尽管工程师可以从以前的项目中获取某些部分,但新项目的新测试或构建要求会增加额外的复杂性。
 

现有流程必须扩大或缩小以满足当前需求。这些流程包括扩展基础设施以满足新的处理或存储要求,以及修改为不断壮大的小型工程师团队设计的现有工作流程。
 

DevOps 工程师还管理软件工程生命周期许多方面的所有权。这包括在内部代码库和基础设施之上管理第三方工具和产品。其他开发人员还需要进行代码审查和会议来讨论需要专业 DevOps 知识的潜在解决方案选项。此外,DevOps 工程师必须确保系统正确记录日志,并且可以收集和分析指标。掌握不同软件应用程序的性能对于确保它们顺利运行至关重要。它还可以帮助工程师了解需要扩展的潜在领域。
 

除了满足服务级别协议 (SLA) 和其他内部业务目标之外,所有这些都给 DevOps 从业者带来了巨大的认知压力。每个任务和流程都会产生 DevOps 从业者必须处理的额外开销,通常会从他们的创新和优化的主要目标中消除资源。
 

随着认知负担的增加,相关的复杂性和压力也会增加,导致倦怠、错误的增加。这会显著降低团队生产力,并最终抑制创新。
 

平台工程有效划分复杂性

平台工程的存在就是为了提供多职能团队共同处理同一软件项目所需的抽象。平台将软件运行在实施细节上的基础架构提供给开发人员,而在此基础架构上运行的软件也能同时成为运营团队的实施细节。平台工程有效减少了日常工作的认知负荷,开发人员在平台中可以以自助服务的方式使用资源,消除了由于必须处理的流程(例如工单系统)而导致的额外认知负荷。
 

平台工程的核心之一就是有效划分复杂性。企业组织中每个团队都有自己的职能领域,该团队中的成员擅长处理该领域中的复杂问题,于此同时其他人可以安全地忽略这些领域。每个人都根据共同的抽象和对信息组合在一起的理解来处理实施细节。
 

举个例子,对于开发团队和运营团队来说,架构是一个共享协议,整个系统需要运行才能使客户满意。这两个团队都使用抽象:容器是在各种系统上运行的单元,数据库等资源可用于根据需要存储数据。而实施细节根据职责有所区分,对于运营团队的成员来说,实施细节包括网络、集群中的 Pod 策略和管理数据库实例。开发人员对实施细节就是要解决的业务问题。在整个项目中,平台工程是每个人实现其实施细节而进行沟通的途径和方式
 

将平台工程纳入开发与 DevOps 中

在这一部分,我们将结合一个用例来说明平台工程如何降低 DevOps 和开发人员的认知负担并改进工作流程。
 

想象一下一家企业设计的 Web 应用程序都遵循类似的架构模式。有一个数据库、一个 API 和一个基于 Web 的前端,有预构建的 Docker 镜像和 CI/CD 模板。但是这一切都是手动完成的。DevOps 工程师必须为每个项目创建 Docker 文件、实施 Terraform 脚本并构建 Git 管道。然后,他们将与开发人员合作,确保环境满足他们的需求,并向生产基础设施添加监控和警报。这些任务与响应现有基础设施的 SLA 和执行定期维护一起发生。
 

这给 DevOps 工程师带来了巨大的压力。主要问题是无论复杂程度是怎样,所有任务都直接交给 DevOps 团队。因此,工作堆栈最终会延长希望推进项目的开发人员的交付时间。这时平台工程师可以通过将其构建到内部开发者平台(IDP)中来自动化这些工作。例如,开发人员可以从 IDP 请求存储库,然后由 IDP 进行创建,而不是手动设置 Git 存储库。然后,IDP 将分配正确的用户组并自动集成正确的 CI/CD 模板。同样的模式适用于创建开发环境和部署核心基础设施。IDP 充当开发人员请求服务和应用配置的自助服务平台,了解默认内置的安全最佳实践和监控。IDP 还可以在项目跟踪软件和文档模板中自动设置项目。
 

可见,平台工程师通过将一套标准化模式构建成自助式内部开发平台来增强工作流程。这样以来消除了项目初始化的负担,团队也可以立即开始提供业务价值,而不用花费项目设置的前几周时间来解决初期问题。同时,由于开发人员将更加自主,平台工程师可以专注于解决更大的架构挑战并将其反馈给 IDP。通过这种方式,他们可以改善现有服务并加强未来的新系统。
 

参考链接:文章来源地址https://www.toymoban.com/news/detail-536041.html

  1. https://mp.weixin.qq.com/s/4yvvRIL1uo5uTtIRUwxU5w
  2. https://circleci.com/blog/platform-engineering-devops-at-scale/

到了这里,关于认知负担的挑战与平台工程的机遇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大模型背景下软件工程的机遇与挑战

    点击链接了解详情 本文作者:汪晟杰 导语:AISE(AI Software Engineering)有人说是软件工程 3.0,即基于大模型(LLM - Large Language Model)时代下的软件工程。那么究竟什么是 AISE,他的发展历程对软件工程产生怎样的变化。本次主题文章会分为五大部分: 1、软件工程 3.0 与 AISE 2、基

    2024年02月07日
    浏览(53)
  • 【软件工程】项目管理与迭代开发:DevOps平台、敏捷协作平台与软件需求交付

    1、项目管理与软件需求交付 软件需求交付方法: DevOps:DevOps是一种软件开发和运维的方法论,它强调开发团队和运维团队之间的紧密协作和沟通,以实现快速、高效、可靠的软件交付。DevOps的核心是自动化,包括自动化测试、自动化部署、自动化监控等。 敏捷协作:敏捷协

    2024年01月17日
    浏览(49)
  • 5G时代的APP开发:机遇与挑战

    APP开发是互联网行业中的重要组成部分,随着5G时代的到来,移动 APP开发也迎来了新的机遇和挑战。 5G时代不仅会为移动 APP开发带来新的发展机遇,也会给移动 APP开发带来新的挑战。对于企业和开发者而言,5G时代带来的机遇和挑战是并存的。 5G是新一代移动通信技术,具备

    2024年02月15日
    浏览(40)
  • CIO视角|平台工程带来的优势与机遇

    在当今高速发展的技术环境中,企业越来越依赖技术作为创新和竞争优势的战略驱动力。首席信息官(CIO)在企业中负责监督信息和计算机技术的管理和实施,以交付预期的业务成果。在技术是业务核心的公司中,CIO 这一职位对于推动战略、技术和管理计划以实现业务增长至

    2024年02月06日
    浏览(44)
  • 深究 DevOps 与平台工程的区别

    今天,我们将讨论平台工程和 DevOps 的关系。尽管这两个概念有一些共同点,但它们仍然是截然不同的,我们将具体了解它们之间的区别。本文旨在解释当代软件工程中的这两个基本概念。通过实际案例,我们将分别说明这两个方法如何塑造了软件开发和交付。 了解它们之间

    2024年02月22日
    浏览(41)
  • DevOps、SRE、平台工程的区别

    DevOps、SRE和平台工程的概念在不同时期出现,并由不同的个人和组织开发。 DevOps作为一个概念是由Patrick Debois和Andrew Shafer在 2009年 的敏捷会议上提出的。他们试图通过促进协作文化和在整个软件开发生命周期中共享责任来弥合软件开发和操作之间的差距。 SRE,即站点可靠性

    2023年04月22日
    浏览(105)
  • DevOps和SRE还没搞清楚,平台工程又出现了,它会取代DevOps吗?

    DevOps、SRE和平台工程的概念在不同时期出现,并由不同的个人和组织开发。 DevOps作为一个概念是由Patrick Debois和Andrew Shafer在 2009年 的敏捷会议上提出的。他们试图通过促进协作文化和在整个软件开发生命周期中共享责任来弥合软件开发和操作之间的差距。 SRE,即站点可靠性

    2023年04月22日
    浏览(57)
  • JeeCms低代码开发平台了解及认知以及遇到的问题

    JeeCms低代码开发平台了解介绍 1、jeecms低代码开发平台自带标签,使用的标签延续freemarker标签或基于freemarker标签自定的标签(类似自jsp自定义标签) (1)什么是freemarker标签 FreeMarker 标签是一种模板语言,用于在 Java 应用程序中生成动态 Web 页面或文本文件。它基于 Java 模板

    2024年02月08日
    浏览(57)
  • 讯飞开放平台--星火认知大模型--开发技术文档--js实例代码详解

            之前调用写过调用百度的文心一言写网站,讯飞的星火认知模型开放了,这次尝试一下使用流式来进行用户的交互。 平台简介 | 讯飞开放平台文档中心 星火认知大模型Web文档 | 讯飞开放平台文档中心         本文章主要开发的是一个web应用。 值得一提的是官网

    2024年02月09日
    浏览(53)
  • 作为开发人员,无代码开发平台 iVX 你有必要了解一下

    低代码开发平台作为一种快速、简化应用程序开发的方法,正在越来越受到关注。今天我们来了解下 iVX —— 首个通用无代码开发平台。 那么什么是iVX呢?下边的图就比较形象了。 大的未来都是AI ,AI , AI …,理论上不可能有别的。 就拿iVX来说吧,已经做了一整套完整的可

    2024年02月15日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包