GraphQL 名为但不仅仅是一种查询语言。它是对连接现代应用程序到云服务这一问题的全面解决方案。因此,它构成了现代应用程序开发堆栈中一个新的重要层的基础:数据图。这个新的层将公司的所有应用程序数据和服务集中在同一个地方,具有一致、安全且易于使用的界面,因此任何人都能够通过最小的磨合利用它。
在 Apollo,我们自 2015 年以来一直在构建业界领先的数据图技术,且我们估计我们的软件现已用于超过 90% 的 GraphQL 实现。多年来,我们与来自不同规模公司的开发人员进行了关于实现 GraphQL 的数千次对话。我们希望分享我们所学到的知识,因此我们将他们的经验提炼成一套创建、维护和操作数据图的最佳实践。在这里我们将它们呈现为 10 大 GraphQL 原则,分为三类,其格式灵感来自于 Twelve Factor App。
你的公司应当只有一个统一的图,而不是多个团队分别创建的多个图。
虽然只有一个图,但该图应该由多个团队联合实现。
注册和追踪图时应当有一个单一的事实来源。
Schema 应当作为抽象层以隐藏服务实现细节并为消费者提供灵活性。
Schema 应当根据实际需求增量构建,并随着时间的推移平滑演进。
性能管理应当是一个连续的、数据驱动的过程,可以平滑地适应不断变化的查询负载和服务实现。
开发人员应当在整个开发过程中对图充分了解。
基于每个客户端授予对图的访问权限,并管理客户端可以访问的内容和方式。
捕获所有图操作的结构化日志,并以之为主要工具了解图的使用情况。
采用分层架构将数据图功能分解为单独的层,而不是融入到每个服务中。