Supergraph治理
在推广Supergraph的同时保持其完整性
初始GraphQL采纳通常是从单个团队或少数几个团队开始的,在这个规模上,管理治理问题可能以非正式的方式进行。然而,向统一supergraph转变需要更积极的策略。鉴于supergraph的进化性质,需要强大的治理实践来帮助保持其完整性,同时推动团队间对其的采用。
建立一个图务管小组是成功实施图生态项目的重要因素。这个小组可以被视为公司内部的“GraphQL优秀中心”,应代表所有关键的图利益相关者。最终,图时期权的主要任务是通过帮助这些利益相关者以处理好图公民的角色,来赋能那些将贡献和消耗图的人。一旦图务管小组成立,工作将主要集中在设立标准上,以帮助维持图的质量、促进其持续演变、支持其运营,并执行客户使用的标准。
建立图务管小组
为了设置全公司对于图的标准,应建立一个图务管小组。这个小组作为图跨团队、协作管理机构的角色。同时,它还制定了与图维护和管理相关的最佳实践,并持续为图贡献者和消费者提供教育。
至少,这个团员应包括以下利益相关者群体中的每一位代表(虽然理想情况下,每个图服务团队和客户团队都将有代表):
利益相关者 | 角色 | 所有权 |
---|---|---|
执行赞助人 | 提供批准以帮助确保项目优先级 | 拥有整个活动的资源 |
图代言人 | 是首次整合项目背后的推动力量,并在获得执行委员会赞助方面起到了关键作用 | 拥有内部培训和图入职培训 |
子图负责人 | 代表子图服务(通常是团队负责人,也可能是图代言人) | 拥有服务边界资源 |
产品经理 | 帮助在服务边界内形成模式设计 | 拥有图边界在图中的表示 |
DevOps代表 | 确保子图一致的开发和持续集成/持续部署管道 | 拥有CI/CD管道要求、底层基础设施和工具 |
客户开发者代言人 | 在模式设计和演变方面,为客户端的消耗模式进行辩护(并非必需来自每个客户团队,但如有帮助则更好) | 拥有图消费者工具和SDK(与相关产品经理合作) |
理想情况下,图务管小组应在超级图采用项目开始时建立。如果已经有一个类似的GraphQL优秀中心存在,应评估其构成,以确保超级图采用将涉及的图关键利益相关者在此小组中的代表性得到适当的体现。
这个务管小组适用的会议频率将根据公司需求和正在进行整合工作的复杂性而变化,尽管在大多数情况下,一开始在超级图采用项目开始的时候,小组成员可能需要更加频繁地开会。一旦超级图在生产中运行,应继续保持常规会议频率,以帮助支持图的发展以及在团队中扩展其采用。
设定图管理的标准
一旦建立,图的管理团队负责制定与公司综合图相关的最佳实践,传达和执行这些实践,并根据需要随着时间的推移对其进行演化。通常,这些关注点可以分为三个主要领域:图完整性、图操作和图用法。每个领域的建议实践如下所述。
图完整性
在初始超图项目过程中,协调命名约定以及实体在各个领域中的概念化、引用和扩展可能是一个具有挑战性的方面。随着图的发展以及新子图服务被整合到图中的时候,这些问题也需要持续关注。记录命名约定、实体和价值类型更新的指南,以及类型和字段迁移工作流程,有助于服务所有者就如何演化其架构的部分做出明智的决定。管理团队还应正式化对提议的架构变更进行审核的程序,以及在将新的子图服务整合到更广泛的图之前对架构进行审查的程序。
一旦对图进行了更改,贡献API并使用API的团队必须被告知。应建立定期的节奏和流程,以便同步和异步地与内部团队沟通架构更新,尤其是在滚动过时字段时。此外,GraphOS 可以配置为在Slack频道中直接发布架构变更通知,并且它还公开了一个用于与其他服务和工具通用的一般用途架构变更webhook。
图操作
在图上放置适当的可观察性工具是维持流畅的图操作并最大限度地减少意外事件发生时平均恢复时间的关键因素。联邦跟踪提供了对GraphOS中API在字段、操作和客户端级别的使用情况的洞察,这些数据可以用来调整性能、调试错误,并支持废弃字段的安全滚动策略(同样,性能报告和警报可以直接从GraphOS推送到Slack频道)。
管理团队应积极建立支持图操作的卓越性能实践。例如,缓存可以在堆栈的不同级别发生——从 Apollo 客户端 中的标准化缓存,到支持与 CDN 进行边缘缓存的 自动持久化查询,再到在 子图中 的完整响应缓存——服务拥有者和客户端团队都必须了解图中标准的实践。可以为诸如使用数据加载器批量请求底层 数据源、为子图 解析器 提供最小的单元测试覆盖以及为已知操作运行自动性能测试等方面提供相似的指南。
图的使用
在从图查询数据之前,对客户端来说最好是通过名称和版本进行识别,并给其发送到 API 的所有操作赋予名称。客户端应通过名称和版本进行自识别。理想情况下,这些 操作名称 应使用一个共享的命名方案定义,因此图表管理团队将负责设置、传达和执行这些命名标准。
此外,管理团队可能希望为使用 查询 变量而不是动词作为操作 参数 制定标准。这项措施将有助于降低操作基数并利用 GraphOS Studio 的一些报告优化。为了防范潜在的不当操作,管理团队还可以采取适当的机制来限制查询深度、广度和整体成本。
成立和支持团队
在推动图采用方面,管理团队可以提供的重要功能之一是在团队加入图的作为贡献者或消费者的过程中进行支持。同样,图表管理团队还可以通过建立一个涵盖统一图和 GraphQL 的一般的公司级“实践社区”来支持持续教育。