Netflix开源可简化GraphQL实例的DGS框架

Netflix现在开源内部使用的DGS(Domain Graph Service)框架,该框架是一个适用于Java框架Spring Boot的GraphQL服务器框架,让开发者能以Java或是Kotlin来构建全功能的GraphQL服务器。

由于在2019年的时候,Netflix内部开始采用新的联合架构(Federated Architecture),而使得许多后端团队,都需要在Java生态系统中采用GraphQL,因此Netflix使用Spring Boot作为后端开发标准,而为了改善Spring Boot中的GraphQL开发体验,最终使用graphql-java函数库开发了DGS框架,官方提到,DGS框架并非只能用于Netflix,而是提供简单构建GraphQL服务的通用途径。

GraphQL开发有两种不同的方法,架构优先(Schema-First)以及程序代码优先(Code-First),在架构优先中,开发者可以使用GraphQL架构语言定义API架构,服务的程序代码仅是实例该架构,而程序代码优先开发不使用架构文件,架构则是在执行时,根据程序代码中的定义产生。

DGS框架同时支持这两种开发方法,不过在Netflix中,他们偏好采用架构优先方法,尽管程序代码优先的模式,会稍微快一点,但是Netflix认为,值得花时间以人类可读和协作的方式来设计架构,创建更好的API。

虽然DGS框架主要是以Kotlin撰写,但其实原本是被设计来用在Java中,而主要用户的确也都是使用Java,但是要把DGS框架用在Kotlin也没有问题。无论是Java还是Kotlin开发者,都可使用DGS框架,在Spring Boot中构建GraphQL服务,可以用于构建独立的服务,也可以用于构建联合GraphQL,DGS框架提供了一种简单的方法,以实例联合GraphQL服务。Netflix提到,他们开源DGS框架,且也会使用相同的开源组件,不会使用自己分叉的版本。

Netflix从2019年开始发展DGS框架,并且已经利用该框架开发多个GraphQL服务,而现在Netflix决定将其开源,借助社群的力量来进一步扩展DGS框架,用户已经可以将该框架用于产品上,Netflix提到,在开源之前,他们就已经大规模使用DGS框架超过一年,添加许多功能并修复bug,现在已经是非常稳定的平台。