平台工程是通过设计并构建工具链和工作流程,提供自助服务能力,以降低软件开发的复杂性。
译自 Platform Engineering Reduces Cognitive Load and Raises Developer Productivity。作者Michel Murabito是Mia-Platform的开发者倡导者,拥有18年以上的软件开发经验。我喜欢分享自己的知识,因此在2021年至2022年期间,我以演讲者的身份在许多意大利和国际活动中发言。我管理一个YouTube频道和一个拥有700多名成员的社区,我主要在那里讨论开发者职业。
毫不意外,过去几十年来,开发者创造了无数搞笑图片,描述加入和理解公司代码库的困难。除了努力明智地选择工具、框架和方法,还要遵守DevOps“你写的代码,你运行它”的箴言,这些都导致软件开发者的认知负荷急剧增加,需要付出巨大努力和资源才能理解、创建和维护日益复杂的软件。
为了缓解过高的认知负荷挑战,采用平台工程这种结构化的方法,通过简化流程、提供标准工具和自动化重复任务,来减轻软件开发生命周期的压力。
本文介绍了以下内容:
认知负荷这个词是John Sweller在1988年的论文《解决问题期间的认知负荷:对学习的影响》中首次提出的,它指执行一个任务所需的精力或信息处理量。就软件开发而言,认知负荷是处理软件工件所涉及的思考努力,这取决于任务和个人。
Robert Martin在他的书《代码整洁之道》中指出,“开发者花在阅读和理解代码上的时间是编写代码时间的10倍以上。” 不仅如此,如果认知负荷过高会变得普遍并加剧,这会限制人们有效处理和记忆信息的能力,导致任务完成延迟、错误和次优解,并增加压力,可能导致职业消耗并降低工作满意度。
平台工程是为自助服务能力设计和构建工具链和工作流程的实践,以降低云原生时代软件开发的复杂性和不确定性。内部开发者平台(IDP)非常重要,它可以可靠地管理应用程序配置,必要时构建新的完全配置的环境,提供持续交付或部署的流水线,更重要的是保护开发项目的安全。
例如,在传统环境中,启动一个新项目需要花费几个小时手动配置开发环境。
现在,想象您有一个图形界面或命令行界面来编排复杂的软件开发流程。如果您使用 IDP,只需通过该界面或命令行界面执行一个命令指定您的偏好,IDP 将自动管理所有配置来启动环境。
此外,平台工程等变革性方法可以自动化重复任务,减少软件工程师的精力消耗,消除人为错误。
近几十年来,技术的出现简化和加速了软件开发过程。最重要的是革命性的DevOps理念,它通过促进协作、自动化、持续集成和交付催生了平台工程。令人印象深刻的是,DevOps可以:
根据Puppet的报告,在组织内实施良好的平台工程实践,有37%的受访者对他们的产品交付流程的有效性“非常满意”。这种鼓舞人心的认可证明,增强的开发者体验无疑可以提高生产力。
具体来说,平台工程具有两个重要功能:
一个更实际的例子可以说明这是如何工作的。想象一下您的开发团队在同一个项目的不同分支上工作。当某人提交更改并推送代码时,IDP 运行所有的流水线,检查兼容性,将代码转换为工件,并在所有选择的服务器和环境上运行它。在传统环境下,开发人员需要跟踪和监督整个过程,手动启动每个阶段。而在平台工程中,这些重复任务都是由 IDP 提供的自动化来执行,开发人员不需要采取进一步操作。
通过规定开发者负责编写、部署和维护生产环境中的代码,DevOps 的“你写的代码,你运行它”原则无意中增加了技术专业人员的认知负荷。平台工程通过提供以下优势来解决这个问题:
黄金路径意味着一种与可行平台和标准化云环境协调一致的、具有引导性且支持充分的软件开发技术,用于简化流程。专门的内部团队策划并维护这些平台背后的技术栈、基础设施和云空间,使这些平台可以发挥加速器的作用,消除软件工程师在每个项目中都要从零开始的需要。
Itrevolution的报告《2022年DevOps企业论坛指南》指出,76%的被调查组织都同意,学习他们的软件架构所需的认知负载非常重,这给开发人员带来了焦虑和生产力低下。
为了战胜认知超载,开发人员应采用以下策略和技术:
随着技术的发展,开发人员在构建、测试和部署应用程序时所承受的认知负荷不可避免地越来越重,使得生产力降低,代码质量也越来越差,更不用说压力加大,甚至导致职业倦怠。
平台工程提供包含标准化工具、框架和工作流程的自助服务平台,抽象了许多底层复杂性并简化了软件开发和交付。这样,开发人员可以专注于设计创新解决方案,而不是处理管理部署和基础设施等琐碎任务。
同时,开发周期变得更加敏捷,因为开发人员可以快速迭代、测试和发布软件,更快地交付新功能和增强功能。此外,由此产生的更健康、更可持续的工作环境不仅可以防止职业倦怠,还可以让开发人员在满足不断发展的技术环境需求的同时发挥最佳状态。
要了解为何以及如何向平台公司转型,请阅读Mia-Platform提供的这份白皮书。
为什么平台工程是一个重大趋势?
因为平台工程可以优化开发者体验、加速软件交付过程,同时保持质量标准。
平台工程是如何工作的?
通过为开发团队提供构建、测试和部署应用程序的工具,这些工具带有简化交互的明确定义的API和服务,平台工程为加快应用程序开发建立了基础工具包、服务和框架。
为什么平台工程很重要?
平台工程旨在增强DevOps的价值,并为组织保持领先地位提供优势。通过平台工程,您可以:
平台工程师需要哪些技能?
为了成功执行设计、实现和维护支持应用程序和设备基础设施的主要任务,平台工程师需要以下技能:
主要的认知负载类型有哪些?
脚手架是否可以减少认知负载?
是的。
脚手架是通过预构建的框架快速构建应用程序的一种结构或骨架。由于它处理了初始设置,你可以直接进入需要特殊关注和自定义的部分,因此脚手架对于复杂的技术或大型项目特别有帮助。