平台工程是规划和实施增强软件开发和交付的工具链的过程。平台工程师处理帮助应用程序开发人员更高效地工作的任务,例如准备CI/CD管道、设置暂存环境以及配置基础设施即代码(IaC)以自动化云资源供应。
平台工程师做什么的?
平台工程师创建供开发人员使用的新工具和工作流程。它们生成用于构建、测试和迭代更改的集成环境。“平台”是开发人员和基础架构之间的桥梁,其范围对于个人开发人员来说可能无法复制。
自助服务访问是有效平台工程的一个决定性特征。开发人员每次都应该能够使用他们工作所需的功能,而无需依赖其他团队,例如运营和基础设施。
必须寻求批准才能启动新的暂存环境是阻碍高效开发的瓶颈。相反,运行立即启动隔离环境的终端命令可使开发人员更加自主。他们无需等待基础架构或无需了解其配置方式即可保持高效。
平台工程原理
平台工程结合了多种技术和方法来产生整体开发体验:
自动化和IaC——基础设施应该是自动化和可重现的。IaC工具用于定义平台的外观,并支持按需创建新实例。手动操作保持在最低限度,以消除开发流程中的摩擦点。
专注于效率——平台的设计应该能够解决开发人员遇到的最常见的挑战。专注于支持团队的独特需求,而不是尝试重新创建已经运行良好的功能。例如,滚动您自己的CI/CD或源代码控制系统不太可能带来好处,但提供一种将生产基础架构的快照镜像到新的暂存环境中的机制可以节省开发人员每周的时间。
自助访问——平台的每一部分都应该是开发者可以自由使用的资产。您为开发人员提供了一个控件工具箱,供他们根据需要使用。避免规定特定的使用模式,因为各个工程师的工作方式可能略有不同。
持续发展——平台应该使用与面向客户的功能相同的产品驱动思维方式不断开发。“客户”恰好是内部开发人员,但及时实施改进仍然很重要,这样平台才能有效满足他们的需求。这可确保开发人员在持续的一段时间内保持高效。
这些原则中的每一个都围绕着简化开发体验。平台工程师的工作是听取开发人员的意见,然后提供他们需要的工具链。
平台工程角色
平台工程师有多项职责。他们将与开发人员讨论挑战,然后根据他们的见解采取行动来构建内部平台。这可以包括以下任务:
配置IaC工具以按需提供新的基础设施。
与现有的基础架构和运营团队合作,以“缩小开发和生产之间的差距”。
实施和维护自动化低效工作流的CI/CD管道。
创建定制的内部工具以适应特定于团队的工作流、执行安全策略并保持对法规标准的遵守。
构建、维护和记录公开平台功能的自定义API、CLI和WebUI。这可能是一个暴露每个环境中错误数量的API,或者是一个将本地代码直接推送到新沙箱的CLI。
这项工作通常以内部平台即服务(PaaS)的形式达到高潮。开发人员可以使用不需要专业知识的全自动工作流程将他们的应用程序部署到基础设施上。该平台协调复杂的过程,例如创建云资源、部署容器化微服务、设置网络以及播种开发人员需要的任何测试数据。
平台工程的好处
团队可能对投资平台工程犹豫不决。一个普遍的担忧是,在该平台上工作的工程师是否会在主要产品团队中得到更好的利用。以下是您应该致力于平台工程的三个原因。
加速发展
内部平台加速发展。自动化流程和自助服务基础架构有助于保持开发人员的工作效率。他们能够不断推进业务优先考虑的产品功能。
一旦功能准备就绪,开发团队就可以启动一个新的测试环境来自动验证更改。该平台可以执行自动化测试,然后将功能交付给生产中的客户,同时开发人员开始处理下一个任务。这可以在不影响质量的情况下缩短上市时间。
促进专注和专业化
开发人员应该能够专注于他们最擅长的事情:开发。现代基础设施、CI/CD和分布式部署系统是专门的专业。开发人员不需要成为这些领域的专家,有时可能很难理解它们。
添加平台工程师可以让开发人员通过专注于构建新软件来保持生产力。平台工程团队可以配备精通IaC、CI/CD和PaaS解决方案等相关主题的专家。开发和基础设施方面的进步将进行得更快,因为每个人都将专注于他们的角色。
确保工具和流程不断发展
开发流程需要随着产品的增长而发展。随着时间的推移,堆栈会随着更多技术和新要求而扩展。您可能会引入新的存储系统,需要更全面的端到端测试,或者必须遵守其他监管标准。
平台工程确保工具链同步开发。没有它,您必须进行临时的工作流程调整,而这些调整可能记录得很差并且难以维护。此外,开发人员通常没有时间进行所需的优化。这会在低效实践被认为是瓶颈后继续使用它们。为开发人员提供访问平台工程团队的权限,可以在不延迟产品发布时间表的情况下解决问题。
转载请注明出处:https://www.cloudnative-tech.com/trends/4436.html