ユビーではGraphQLのバックエンドサービスをNestJSでモジュラモノリスな構成で作っていますが、その中で得られたDataLoaderの知見について紹介します。 背景 GraphQLでN+1を回避するにはDataLoaderを使うのが一般的なプラクティスですが、DataLoaderはインタフェースの都合上リクエスト毎に初期化をおこなう必要があります。この初期化をどこで行うかが悩みどころで、いくつかパターンがあるので今回はそれについて紹介します。 DataLoaderの基本 このようなスキーマとResolverがあったとします。 type Query { posts: [Post!]! } type Post { id: ID! title: String! author: User! } type User { id: ID! name: String! } @Resolver("Po