当公司谈到更快地交付软件时,您经常会听到 DevOps 和平台工程设计这两个词。虽然有些人可能会认为它们是相互竞争的理念,但实际上它们是相辅相成的。
可以这样理解:DevOps 是大方向目标,是团队合作的文化和思维方式。平台工程设计可构建能够轻松实现 DevOps 的工具,成为大规模实现这一目标的一种方式。
为了理解这些概念如何相互补充,首先要明确定义。关键在于将 DevOps 的文化目标与平台工程设计这门专业学科以及它所创建的具体工具(内部开发者平台 [IDP])区分开。
DevOps 是一系列实践,旨在将编写代码的人员(开发或“Dev”)和运行代码的人员(运维或“Ops”)紧密联系在一起。
它主要是一种文化变革,侧重于让团队更好地沟通、共担责任并实现所有流程的自动化。其目标是将软件从一个想法快速变成客户可以使用的产品,而实现此目标的途径是将人员、流程和工具整合在一起,加快实现业务价值。
内部开发者平台 (IDP) 是平台工程设计团队构建的一组现实的工具和服务。这是一个一站式平台,开发者可以在这里获取工作所需的资源,包括容器编排、基础设施即代码 (IaC) 工具和 CI/CD 流水线等资源。
例如,在 Google Cloud 上构建的 IDP 可能会使用 Google Kubernetes Engine (GKE) 来运行容器。通过将站点可靠性工程 (SRE) 和 DevOps 原则嵌入到平台上的黄金路径中,平台工程设计团队可以减少人为错误的可能性,并最大限度地缩短停机时间。IDP 免去了复杂的工作,为开发者自动执行任务,并提供了相应的学习教程,确保他们的工作从一开始就是安全且正确的。
DevOps 是我们必须协作和实现自动化的“原因”。平台工程设计就是我们让每个人都能轻松实现自动化的“方法”。
虽然小型公司或团队可以通过密切沟通来管理流程,但每个组织都可以从尽早采用 DevOps 原则和最佳实践中获益。
但当公司发展到拥有数百名开发者时:
复杂性激增:每个开发团队都必须学习和维护数十种工具,例如 Cloud Logging、Cloud Monitoring 和基础设施代码。这种负担称为认知负荷,会拖慢他们的工作速度。 |
复杂性激增:每个开发团队都必须学习和维护数十种工具,例如 Cloud Logging、Cloud Monitoring 和基础设施代码。这种负担称为认知负荷,会拖慢他们的工作速度。
不一致性悄然出现:不同的团队可能会以不同的方式设置环境,使用不同的安全实践、代码标准或部署配置。这使得运营团队很难为所有人提供支持。 |
不一致性悄然出现:不同的团队可能会以不同的方式设置环境,使用不同的安全实践、代码标准或部署配置。这使得运营团队很难为所有人提供支持。
平台工程设计通过使用 Google Cloud 全面的托管服务套件创建标准化 IDP 来帮助解决这个问题。此外,也可以通过黄金路径轻松构建、管理和扩缩 IDP。这让公司在扩大规模的同时,仍能实现 DevOps 的速度和质量目标。
虽然 DevOps 和平台工程设计是互补的,但它们的主要关注点不同。
DevOps 以文化革新为中心,注重团队合作、责任共担和整个交付流水线的自动化。其目标是协调人员和流程,以便快速将创意转化为生产成果。
相比之下,平台工程设计则主要关注开发者体验。这是通过免去基础设施的复杂性并创建自助服务功能来实现的。平台工程设计为开发者提供了一条简单可靠的路径,因此成为了一门专业学科,可以大规模加速实现 DevOps 的文化目标。
在高级技术主管看来,平台工程设计可以带来财务和管理方面的优势。
风险与合规
平台工程设计将安全性和合规性政策直接构建到平台中,并自动在 GKE 集群等所有环境中强制执行标准,以防止出现不一致,从而帮助降低风险。
开发者工作效率
平台工程设计通过提供简单的自助服务 API 和门户来显著减少开发者在基础设施任务上花费的时间,从而改善财务状况。
加快进入市场
通过为团队提供高效的工作流,Google Cloud 上的平台工程设计可让组织快速轻松地推出新服务。Google Cloud 的基础设施可实现高效部署等。
创建专门的平台工程设计团队并构建 IDP 的决定因素并非是任意的团队规模,而是组织需求和摩擦成本。当应用开发者在基础设施任务上花费的时间和精力超过构建和维护平台本身所需的投资时,平台就变得合适了。如需了解详情,请参阅这份平台工程设计指南。
如果您的应用比较简单,并且开发团队可以轻松管理自己的基础设施需求,那么 Cloud Build 等简单的 CI/CD 工具就足够了。在这种情况下,最有效的方法是专注于 DevOps 的文化方面,即改善沟通、确立共同目标和实现简单的自动化。
当整个组织因复杂的局面而减慢速度时,通常就需要平台团队了。如果您的公司遇到以下任何问题,通常就会发生上述情况:
认知负担过重:开发者花费了过多的时间来设置、配置和维护底层基础设施,而不是专注于功能开发。 |
认知负担过重:开发者花费了过多的时间来设置、配置和维护底层基础设施,而不是专注于功能开发。
做法不一致:您的各种产品在安全、运营和部署模式方面各不相同,导致支持和审核工作难以开展。 |
做法不一致:您的各种产品在安全、运营和部署模式方面各不相同,导致支持和审核工作难以开展。
预配速度慢:开发者需要几天时间才能启动新的测试或生产环境,造成了开发生命周期中的瓶颈。 |
预配速度慢:开发者需要几天时间才能启动新的测试或生产环境,造成了开发生命周期中的瓶颈。
此时,创建平台团队来构建一致、标准化的 IDP 可以提供最大的投资回报率,并保持 DevOps 所承诺的速度和质量。