GraphQL 开发原则

GraphQL 开发原则

overview

GraphQL 名为但不仅仅是一种查询语言。它是对连接现代应用程序到云服务这一问题的全面解决方案。因此,它构成了现代应用程序开发堆栈中一个新的重要层的基础:数据图。这个新的层将公司的所有应用程序数据和服务集中在同一个地方,具有一致、安全且易于使用的界面,因此任何人都能够通过最小的磨合利用它。

Apollo,我们自 2015 年以来一直在构建业界领先的数据图技术,且我们估计我们的软件现已用于超过 90% 的 GraphQL 实现。多年来,我们与来自不同规模公司的开发人员进行了关于实现 GraphQL 的数千次对话。我们希望分享我们所学到的知识,因此我们将他们的经验提炼成一套创建、维护和操作数据图的最佳实践。在这里我们将它们呈现为 10 大 GraphQL 原则,分为三类,其格式灵感来自于 Twelve Factor App

完整原则

确保图被明确定义、稳定且一致


1. 单一图

你的公司应当只有一个统一的图,而不是多个团队分别创建的多个图。

2. 联合实现

虽然只有一个图,但该图应该由多个团队联合实现。

3. 追踪在注册表中的 Schema

注册和追踪图时应当有一个单一的事实来源。

敏捷原则

快速推出图并适应不断变化的需求


4. 抽象、面向需求的 Schema

Schema 应当作为抽象层以隐藏服务实现细节并为消费者提供灵活性。

5. 使用敏捷方法进行 Schema 开发

Schema 应当根据实际需求增量构建,并随着时间的推移平滑演进。

6. 迭代地提高性能

性能管理应当是一个连续的、数据驱动的过程,可以平滑地适应不断变化的查询负载和服务实现。

7. 使用图的元数据为开发人员提供支持

开发人员应当在整个开发过程中对图充分了解。

操作原则

安全地将图大规模部署到生产中


8. 访问和需求控制

基于每个客户端授予对图的访问权限,并管理客户端可以访问的内容和方式。

9. 结构化日志

捕获所有图操作的结构化日志,并以之为主要工具了解图的使用情况。

10. 将 GraphQL 层从服务层分离

采用分层架构将数据图功能分解为单独的层,而不是融入到每个服务中。