云开发平台如何“提升” DevOps
首先,我来简单介绍一下什么是云开发环境:它通常运行带有应用程序的 Linux 操作系统,提供预配置的环境,允许进行编码、编译和其他类似于本地环境的操作。从实现的角度来看,这样的环境类似于远程运行的进程,通常通过 Docker 或 Podman 等技术进行虚拟化。有关 CDE 的一般概述,请查看 本文。
CDE 技术正在推动当今最快的 DevOps 转型趋势,整个云原生开发行业都在将开发环境转移到线上。这些环境刚刚于 2023 年 8 月成为 Gartner 的新技术类别之一。 值得注意的是,Gartner 预计到 2026 年,60% 以上的云工作负载将使用 CDE 构建和部署。
图:在线容器可作为 DevOps 三大核心方式的利用
如今,组织可以决定使用自托管平台来管理这些环境,或者在可用时使用云提供商提供的服务之一。但总体而言,管理这些环境的平台目前尚处于起步阶段,其功能因供应商而异。因此,在如何实施该技术以及最重要的是业务用例涵盖哪些方面具有很大的灵活性。
我认为,在选择 CDE 平台时,企业应该选择既能提高生产力又能保证数据安全的平台。使用 安全的云开发环境(即提供数据安全性的环境)可让组织部署多种机制,例如:防止数据泄露和渗透、自动化 DevSecOps 最佳实践、生成安全审查等。这种安全性通常是 Citrix 虚拟桌面基础架构的目标,或者最近使用企业浏览器(Island、Talon 或 Chrome Enterprise)的目标。
原因之一是许多公司(包括科技公司)的资产(如源代码、客户数据和其他知识产权)都遭受了攻击。最近备受瞩目的源代码泄露案例包括 Slack 的 GitHub 存储库、CircleCI 和 2022 年 12 月的 Okta。最重要的是,我认为安全应该被定位为生产力的助推器,这样它才能有助于改善开发人员的体验,而不是成为阻碍。
现有平台之间的共同点之一是旨在提高代码开发效率。无论您是否选择将安全性考虑在内,很明显 CDE 可以释放大量生产力,从而有利于 DevOps 工作流程。这就是为什么我在这里重新审视 DevOps 的核心原则并重新思考这些环境如何为它们带来新的启示。这些原则也被称为三种方式,并在Kim、Debois 和 Willis 的《DevOps 手册》中进行了解释。
在线环境加速 DevOps 的流程原则
从流程的角度来看,DevOps 是关于实施三个原则(或方式):即流程、反馈和持续学习原则。我认为,在这种情况下解释 CDE 的好处是理解它们的一些关键影响的好方法。
图:Kim、Debois 和 Willis 在《DevOps 手册》中描述了 DevOps 的三种方式,即流程、反馈和持续学习
让我们从流程原则开始。第一个原则强调工作从开发到测试、部署再到运营和监控的顺畅和高效流动。它旨在最大限度地减少瓶颈、优化流程并实现连续和无缝的交付流程。流程通常由沿无穷大符号排列的一系列阶段表示。
CDE 是实现流动原则的有效方法,因为它们允许用户在处理多个项目时拥有完全隔离的工作区设置,从而实现它们之间直接且无影响的上下文切换。
良好的 CDE 平台为开发人员提供了多种工具来管理和配置他们的 CDE,特别是基于公司政策。例如,开发人员可以自助访问 CDE,这是一项重要优势。
CDE 还可以轻松复制以进行测试,并可以根据需要在用户之间重新分配。它们可以完全模板化,在几秒钟内配置到灵活的资源上,并且任何开发人员都可以访问,无论他们身在何处。在这里,一个好的 CDE 平台为项目和 IT 经理提供全面的操作,从而实现大规模的 CDE 管理和可观察性。
图:CDE 的使用始于 DevOps 的代码阶段,使组织能够跨阶段保持一致的环境。CDE 及其访问机制分别由图块和一系列图标表示。
显然,CDE 的在线部署允许集中管理、可观察性和访问,从而真正增强了 DevOps 的流动原则。
如今,远程开发人员的加入已成为大多数组织运营的一部分。CDE 的在线特性非常适合在完全配置的环境中让开发人员入职,无论他们身在何处。提供对组织资源的访问权限也是入职的一个重要方面。在这里,CDE 提供了一种以集中方式访问开发资源的新机会,特别是提供增强的控制和可观察性的方式。
为了将生产力与灵活性结合起来,一个好的 CDE 平台必须提供资源访问权限模型,以允许处理不同类型的开发人员、不同的开发场景(内部、协作等)和不同类型的资源。例如,基于角色和基于属性的访问控制 (RBAC/ABAC) 加上对资源进行分类的机制,使组织能够设置风险控制并确保治理,即使在复杂的工作流程情况下也是如此。这大大增强了设计高效协作开发流程的可能性。
图:引入多元化的开发人员需要一种机制来根据角色管理对资源的访问权限。还可以根据用户位置等属性动态评估权限。
最后,CDE 和基于 Web 的 IDE 联合使用的一大优点是,在瘦设备或 BYOD 模式下加入开发人员可以立即加速业务扩展。
如何将即时性带入 DevOps 的反馈原则
反馈原则涉及在开发和运营流程的不同阶段之间建立沟通和协作机制。这包括从各种来源收集反馈,例如最终用户、监控系统和测试流程。该原则的一个重要方面是它使开发人员之间能够更好地协作。
DevOps 的第二个原则最好地体现在代码存储库应用程序中实现的Pull Request (PR) 机制。使用 PR,开发人员可以在将分支提交的工作合并到应用程序之前对其进行评论。
CDE 的在线特性使反馈原则更贴近开发人员,即在工作到达代码存储库之前,即在编码活动的中心。CDE 通常与访问或监控它的机制(例如 IDE、终端、网络、编排等)结合使用,从而实现这一优势。
由于 CDE 是在线运行的进程,因此很容易观察工作进展情况。这让人想起观察网站访问者的用户体验。在我看来,这是最有可能将生产力和安全性置于开发核心的领域。
图:由于 CDE 可以远程访问,因此很容易测量它们的一些属性,例如正在运行的进程和分配的资源。
例如,可以很容易地实时测量一组 CDE(例如由共同项目的开发人员共享)构建应用程序所需的平均编译时间(见上图)。这为项目经理提供了有关生产力的即时和有价值的信息。
还可以轻松查看通过开发人员剪贴板传递的信息和 CDE 的网络流量。利用这些渠道,我们可以向开发人员和管理人员提供反馈。例如,从基础设施安全角度来看,可以轻松监控潜在的数据泄露并防止知识产权损失。
但通过同样的渠道,人们还可以寻找潜在的恶意数据渗透。例如,假设您可以检测到开发人员剪贴板中的凭据,那么询问开发人员执行此操作的意图怎么样?当开发人员即将将从随机网站收集的源代码粘贴到您的代码库中时,也是有可能的。您想标记它并自动创建安全审查吗?如何在恶意软件进入您的代码库之前检测它或系统地标记 AI 生成的代码怎么样?
图:对 CDE 及其支持基础设施的控制是对输入数据(如凭证、许可源代码和潜在恶意软件)进行语义分析的机会。同样,它允许设置数据泄漏预防措施。
显然,CDE 和用于将数据导入其中的基础设施组件是引入 DevOps 和 DevSecOps 中一批新最佳实践并重新审视 DevOps 反馈原则的媒介。通过我上面给出的例子,你可以看到基础设施安全可以与代码安全原则相联系!
一个好的 CDE 平台肯定会提供一系列新颖且富有创意的 DevOps 和 DevSecOps 自动化。此外,还有一个很好的机会来重新审视标准化和公认的指标,例如 DORA 和 SPACE,使它们更接近开发人员在 IDE 中编写代码所花费时间最多的活动。
持续学习原则的特写
现在让我们用第三个原则,即持续学习原则来结束本次讨论。该原则强调在开发和运营团队中培养持续改进和学习的文化的重要性。它涉及定期收集反馈、分析绩效指标以及吸取开发和部署过程每个阶段的经验教训,以提高效率和创新能力。
网络平台的即时性以及它们带来的观察业务流程的机会也使组织能够了解自己。这是增加持续学习潜力的一大福音。
最初,DevOps 对持续学习的期望是围绕改进运行中的应用程序(即客户正在使用的应用程序)。但是,当整个开发过程作为云应用程序运行时,组织可以学到很多关于其 自身基于平台的开发过程的宝贵知识。
本着这一思路,CDE 平台带来了全新水平的可观察性,并允许围绕多个关键领域进行业务优化。我已经讨论过组织如何了解其在应用程序交付和安全态势方面的绩效。但他们还可以了解云和物理资产的利用率,以及监控 IT 功能的成本和分配给开发的资源。该平台还带来了一个绝佳的机会,可以集中实施生产力和风险控制,同时在分散在不同地理位置的团队中系统地执行这些控制。实际上,现代 CDE 平台需要允许同时在多个地区使用多个云。最重要的是,它们能够统一向组织提供复杂的服务,这使得实施不会妨碍用户日常任务的治理机制变得容易。
图:DevOps 的持续学习原则也适用于开发过程本身。CDE 产生了一系列新的流程测量,有利于治理、问责和风险控制。
总之,良好的 CDE 平台应为组织带来丰富的指标和功能,以便他们重新控制通常分散、跨硬件和应用程序不统一且有时从安全角度来看模糊的开发过程。这就是为什么在我看来,采用趋势将有增无减的原因。此外,我们应该看到对 CDE 提供商增强安全控制能力的需求越来越大,同时确保它们最终不会对开发人员的生产力产生任何负面影响。最后,开发 CDE 属性作为增强 DevOps 三种方式的一种方式,是推动开发社区以有意义的方式进行创新的绝佳框架。