👆
点击蓝字 关注我们
在2022与2023年Gartner公司预测的10大技术趋势中,平台工程(platform engineering)连续上榜。平台工程通过提供自动化基础设施操作的自助服务功能,减少底层基础支撑工具的复杂性和不确定性,减化工作流程,减少最终用户在使用过程中的认知成本,从而改善了最终用户的体验和提高生产效率。
图1 平台工程概念图示(图片来源Gartner [2])
平台工程是工具体系建设的高阶目标
如图1,平台工程中的数字化平台,就是我们常说的DevOps平台。早在2017年的第16期技术雷达中就有平台工程的说明——平台工程是为了能让云原生和开发运维一体化(DevOps)实践在组织内顺利落地推广,降低云原生和DevOps实践的使用难度,而催生出的实践。从那时起,就已经能够看到许多软件组织开始组建内部工具团队,整合研发工具平台,补充DevOps能力,为持续交付和云原生打基础。
但数字化平台不仅限于CI、CD、云原生这些能力,我们更愿意将其理解为软件研发数字化管理工具体系,它承载着组织中完整的软件研发过程。
目前软件组织中的工具体系的建设可以大致分为四种情况:
1)工具老旧/缺失,仅能完成部分的软件工程线上化管理(可能只有一个代码仓库);
2)连通性不足,研发管理中主要的部分(项目管理、源代码、测试、流水线、运维工具)已经具备,但之间的联通性不够;
3)工具联通性良好,已经能产出高质量过程数据,并开展度量;
4)良好封装,已经在借助数据的反馈,优化用户体验,提高自动化程度。
只有先达到3、4的特征,才能具有平台工程的发育土壤。
图2 工具平台建设现状分类
实现平台工程要先打好基础
想要具有平台工程能力,仍然要先具备基本的工具平台能力。从上一节四个现状分类,可以梳理得出平台工程建设的路径。
第一阶段是先要补全工具,让企业内部的工具体系具备基本项目管理、源代码管理、测试管理、制品管理、CI、CD以及环境管理能力。为加速工具体系建设,企业可以考虑采购开源或商业软件来完成这一阶段。同时开展长期规划,让工具平台能充分发展,成为研发效能提升的引擎。
第二阶段是做到工具互联互通,核心研发管理流程做到线上化。从需求创建到功能上线及事后跟踪均能都在线上发起或看到。同时底层的研发数据也能够互相关联,为进一步出数据打好基础。
第三阶段是出数据。开发工作线上化既是软件开发本身的需要,也是数字化研发管理的需要。该阶段企业可以通过设计统一的研发价值流,统计并优化整体的端到端的研发交付时效,为更多的新项目建设提供经验参考和优化指导。
第四阶段是数据驱动改进,也是Gatner所指的平台工程。工具平台服务企业的软件开发,也要调和管理、管控、提效、自动化、智能化等的矛盾,做好平台发展的最佳策略是通过平台提供的各类数据来驱动平台自身改进提升。
从第二阶段开始,软件组织就应当将组建平台团队与提升平台能力纳入规划,由平台团队承担工具体系的建设发展任务。
图3 平台工程建设路径
平台工程的目标是智能化
本文提供5个原则性建议,帮助组织开展平台工程的迭代演进。
一是标准化,平台要支持组织的管理制度、技术规范的实施。工具平台管理着组织的软件资产。为了能让配置管理顺畅地实施,平台工程团队应当设计一系列的标准来规范工具使用,让平台能够自动化地发现并沉淀企业数字资产,摆脱资产管理就是数据登记表,和实际情况两张皮的尴尬局面。
标准化还涉及到组织级的数据观察与改进。输出单个项目的数据或许还算容易,但能通过平台输出全部项目或团队的数据并加工为可用的、各层级人员关注的数据则是一个复杂的工作,也是相当大的工作量。各种规范的制定和落地是数据准确的前提。平台工程团队还需要设计并实现数据或报告的提取逻辑,为项目、部门乃至整个组织提供效能观测的能力。
不同项目的过程虽然存在是有差异的,。但为了能统一观测,但仍然要确保不同过程是继承自组织级统一抽象价值流之上的,这样才能方便在组织级观测数据,优化端到端交付时效。
图4 平台工程建设原则
二是抽象化,专业技术实践经验也要能落在工具中,支撑新项目复用。平台工程团队还应致力于将组织内的优秀技术实践封装到工具中,降低团队使用工具的难度。让优秀实践可以被更多团队自发地采用,从提升整个组织的工作效率和质量。
典型的方式是提供预制的脚手架或模板,关联一组最佳实践或标准配置,从而缩短开发周期。良好的封装也能方便工具的升级和迁移,让数字化平台能平滑过渡到新版本或技术,减少对用户的影响。
三是数字化,平台各工具之间要具备数据交换的能力,让数据之间能够关联起来。让平台能够提供完整、可靠的度量数据。有数据才能发现功能不足并加以改进。用了工具但取不到数据,或数据零散、缺乏、没结构化,都不能算作数字化成功。
四是自动化,是提高效率和减少人为错误的有效手段。平台工程团队应该致力于让尽可能多的流程可以自动化,包括但不限于部署、测试、监控和维护。批处理是自动化的一种形式,它允许团队批量处理任务,从而节省时间和资源。
除了预先设计好的自动化场景以外,平台工程团队还可以提供通用的流程自动化工具(processes automation,参见RPA、DPA),让各团队去设计编写专用的自动化流程,为平台补充能力。
五是自助化。自助化是平台工程中提升效率和用户满意度的关键原则。平台要设计为允许团队成员自行进行操作和管理,而无需依赖专门的配置管理员或其他支持人员。这种自主权的赋予不仅提高了操作的灵活性和速度,还增强了团队成员的参与感和责任感。
自助也意味着平台中已经嵌入了自动化的流程或审核、审计机制。自助的操作处于安全合规的监控之中,当出现确实需要复核或复审的操作时,才会有人工干预。
通过自助操作,能进一步释放数字化平台的运营管理精力,让平台工程团队专注于提高数字化平台的使用体验。
平台工程案例
领先的软件组织已经能够做到平台工程所倡导的连通与自助。譬如张乐老师在2024年IDCF的演讲中提到的“智研” 一站式研发效能平台,从单功能领域的优化到领域集成互通、平台生态插件、场景化、端到端可视化度量等场景均有平台工程体现。
图5 智研(来源:张乐老师在IDCF的演讲)
在知微软件的实施过程中,也会开展平台工程级的实践。如流程贯通、自动化、全流程数据度量。
在系统集成后,规划平台整体的领域模型、价值流、工作流程,并在知微中建模,关联自动化动作和检查(图6、图7)。
图6 多领域关联示意
图7 自动化策略
进一步深入细节,可以在工作项任务上创建关联与代码仓库、流水线平台进行联动,触发创建分支或流水线的构建,也可以收集代码提交数据与流水线执行结果。做统计分析(图8、图9)。
图8 与代码仓库集成
图9 与流水线工具集成
最后,全部的数据都能在知微中关联并可视化(图10)。
图10 集成后的度量数据
小结
平台工程源于DevOps,致力于构建和维护高效的软件工程环境。它的核心目标是通过自动化、规范化和智能化的工具平台,降低团队在日常开发、部署和运维中的工作难度,从而提高产品质量、加速软件交付。
平台工程是一个仍在持续演进的实践,业界在不断地探索。平台团队需要保持学习和适应的理念,不断吸收新的知识和技术,以适应不断变化的需求。
参考资料
[1] Gartner Top 10 Strategic Technology Trends for 2023.
[2] Lori Perri. what is platform engineering, Gatner.
[3] Platform Engineering 平台工程15 问,乔梁 持续交付2.0
[4] Platform engineering product teams,Thoughtworks.
[5] 杨振涛.平台工程的2023:助力云原生重构研发组织文化与组织架构,infoq.
[6] DevOps云学堂.平台工程:DevOps重塑或有意义的一步?
[7] Kate Reznykova, Senior Associate. Platform Engineering: DevOps Rebrand or a Meaningful Step Forward?
[8] 大模型时代的平台工程--服务万人规模一站式研发效能平台演进,张乐
分享
收藏
在看
点赞