GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑
一、完整原则
确保图被明确定义、稳定且一致
1. 单一图
你的公司应当只有一个统一的图,而不是多个团队分别创建的多个图。
2. 联合实现
虽然只有一个图,但该图应该由多个团队联合实现。
3. 追踪在注册表中的 Schema
注册和追踪图时应当有一个单一的事实来源。
二、敏捷原则
快速推出图并适应不断变化的需求
4. 抽象、面向需求的 Schema
Schema 应当作为抽象层以隐藏服务实现细节并为消费者提供灵活性。
5. 使用敏捷方法进行 Schema 开发
Schema 应当根据实际需求增量构建,并随着时间的推移平滑演进。
6. 迭代地提高性能
性能管理应当是一个连续的、数据驱动的过程,可以平滑地适应不断变化的查询负载和服务实现。
7. 使用图的元数据为开发人员提供支持
开发人员应当在整个开发过程中对图充分了解
三、操作原则
安全地将图大规模部署到生产中
8. 访问和需求控制
基于每个客户端授予对图的访问权限,并管理客户端可以访问的内容和方式。
9. 结构化日志
捕获所有图操作的结构化日志,并以之为主要工具了解图的使用情况。
10. 将 GraphQL 层从服务层分离
采用分层架构将数据图功能分解为单独的层,而不是融入到每个服务中