GraphQL 용어 사전
GraphQL 도메인 전체에서 쓰이는 용어 색인. 처음 보는 단어는 여기서 찾고, 깊이 알고 싶으면 [관련 챕터]로 점프. 출처: GraphQL Spec October 2021, graphql.org Glossary, Apollo Docs, Federation v2 Spec.
카테고리 색인
- Schema · SDL · Type System
- Execution · Resolver
- N+1 · DataLoader · Cache
- Transport · Subscription
- Federation
- Security · Governance
- 도구 · 라이브러리
Schema · SDL · Type System
“스키마는 클라이언트와 서버 사이의 강제 가능한 계약이다.” 자세히: 01-schema-sdl
Argument
한 줄: 필드에 전달되는 입력 — user(id: ID!)의 id: ID! 부분.
예시: query { user(id: "u_1") { name } }
참고: 01-schema-sdl
Code-first
한 줄: 호스트 언어 코드(타입스크립트/파이썬/Go)로 스키마를 빌더 API로 정의하고 SDL을 런타임에 생성하는 접근. 예시: Pothos, Nexus, TypeGraphQL, graphene, gqlgen. 참고: 도구 · 라이브러리
Custom Scalar
한 줄: 사용자 정의 원시 타입 — DateTime, JSON, BigInt, URL 등 직렬화·파싱 규칙을 직접 적는다.
예시: scalar DateTime + serialize/parseValue/parseLiteral.
참고: 01-schema-sdl/02-types
Directive
한 줄: 스키마 또는 쿼리에 메타데이터를 붙이는 @name(arg: ...) 어노테이션.
예시: field: String @deprecated(reason: "use newField").
참고: 01-schema-sdl
@deprecated
한 줄: 필드/enum 값의 폐기 예고 — introspection에 노출되어 클라이언트가 경고를 받을 수 있다.
예시: oldName: String @deprecated(reason: "renamed to name").
Enum
한 줄: 미리 정해진 문자열 상수 집합의 타입.
예시: enum Role { ADMIN USER GUEST }.
Field
한 줄: 타입의 한 속성 — 리졸버 한 함수와 1:1 대응.
예시: type User { name: String }의 name.
Fragment
한 줄: 재사용 가능한 선택 집합 — 동일한 필드 묶음을 여러 쿼리가 공유한다.
예시: fragment UserCard on User { id name avatar }.
Fragment Spread
한 줄: fragment를 쿼리 안에서 호출하는 ...Name 문법.
예시: query { me { ...UserCard } }.
@include
한 줄: 변수에 따라 필드를 포함시키는 조건부 디렉티브.
예시: email @include(if: $includeEmail).
Inline Fragment
한 줄: 이름 없는 즉석 fragment — Union/Interface의 타입별 분기에 자주 쓴다.
예시: ... on Photo { url }.
Input Type
한 줄: Mutation/argument 전용 입력 객체 타입. Object Type과 분리되어 있다.
예시: input CreateUserInput { name: String! email: String! }.
Interface
한 줄: 공통 필드를 약속하는 추상 타입 — 여러 Object Type이 implement 한다.
예시: interface Node { id: ID! }.
Introspection
한 줄: 스키마 자기 자신을 쿼리할 수 있는 GraphQL 고유 기능 — __schema, __type.
예시: query { __schema { types { name } } }.
참고: 07-security-governance (프로덕션에서 잠그는 게 일반적)
ID Scalar
한 줄: 유일 식별자를 표현하는 내장 scalar — 직렬화는 문자열, 의미는 “캐시 키로 쓰는 ID”.
List
한 줄: 동일 타입의 배열 — [String], [User!]!.
예시: posts: [Post!]! (Post 비-Null, 리스트도 비-Null).
Mutation (root)
한 줄: 쓰기 작업을 위한 루트 타입 — 필드들이 직렬로 실행된다. 참고: 02-execution-resolvers
Non-Null (!)
한 줄: null이 결코 오지 않음을 약속하는 타입 수식자. 위반 시 null propagation 발생.
예시: name: String! → null이면 부모까지 null.
Nullability
한 줄: 필드가 null을 가질 수 있는지의 정책 — GraphQL은 기본이 nullable이라는 점이 특이.
Object Type
한 줄: 가장 일반적인 타입 — 필드들의 묶음.
예시: type User { id: ID! name: String! }.
Operation Name
한 줄: 쿼리/뮤테이션에 붙이는 식별 이름 — 로그·캐시·persisted query 키에 쓰임.
예시: query GetUser { ... }의 GetUser.
Query (root)
한 줄: 읽기 작업을 위한 루트 타입 — 필드들이 병렬로 실행된다.
Scalar
한 줄: 더 쪼갤 수 없는 원시 타입 — Int, Float, String, Boolean, ID 5개가 내장.
Schema
한 줄: Query/Mutation/Subscription 루트와 모든 타입의 집합 — 서버의 공개 계약.
Schema-first
한 줄: SDL을 먼저 적고 그 SDL에 리졸버를 결합하는 접근. graphql-tools, Apollo Server의 기본 패턴.
SDL (Schema Definition Language)
한 줄: GraphQL 스키마를 사람이 읽는 형태로 적은 DSL.
예시: type User { id: ID! name: String! }.
참고: 01-schema-sdl
Selection Set
한 줄: 중괄호 {} 안에 적힌 필드 목록 — 한 타입에서 어떤 필드를 가져올지 선언.
예시: { id name email }.
@skip
한 줄: 변수에 따라 필드를 제외시키는 조건부 디렉티브.
예시: email @skip(if: $hideEmail).
@specifiedBy
한 줄: Custom Scalar의 직렬화 규약 URL을 명시하는 디렉티브 (RFC 등 참조).
예시: scalar UUID @specifiedBy(url: "https://tools.ietf.org/html/rfc4122").
Subscription (root)
한 줄: 실시간 푸시 스트림을 위한 루트 타입 — 보통 WebSocket 위에서 동작. 참고: 04-transport
__schema
한 줄: introspection 루트 — 스키마 전체를 쿼리하는 마법 필드.
__typename
한 줄: 객체의 실제 타입 이름을 돌려주는 메타 필드 — Union/Interface 구분과 normalized cache에서 핵심.
예시: { search { __typename ... on User { name } } }.
Union
한 줄: “A이거나 B” 타입 — 공통 필드 없이 후보들만 나열한다.
예시: union SearchResult = User | Post | Comment.
Variable
한 줄: 쿼리에 외부에서 주입하는 매개변수 — $var로 참조하고 별도 JSON으로 전달.
예시: query($id: ID!) { user(id: $id) { name } }.
Execution · Resolver
“리졸버는 필드 단위 함수의 트리이고, 실행은 그 트리의 깊이 우선 평가다.” 자세히: 02-execution-resolvers
CollectFields
한 줄: spec 알고리즘 — 같은 타입의 중복/조건부 fragment를 펼쳐서 실제 실행할 필드 목록을 만든다.
CompleteValue
한 줄: spec 알고리즘 — 리졸버가 돌려준 값을 타입에 맞게 변환·검증하는 단계 (List/Non-Null 처리 포함).
Context
한 줄: 모든 리졸버가 공유하는 요청 단위 객체 — 인증된 user, DB 커넥션, DataLoader 인스턴스를 담는다.
예시: (parent, args, ctx, info) => ctx.loaders.user.load(parent.userId).
Default Resolver
한 줄: 리졸버를 직접 안 적으면 parent 객체의 동일 이름 속성을 그대로 돌려주는 기본 동작.
예시: user.name → resolver 없이도 동작.
Errors Array
한 줄: GraphQL 응답의 errors 배열 — 부분 성공 시 data와 함께 동시에 채워진다.
예시: { "data": {...}, "errors": [{"path": ["user","email"], "message": "..."}] }.
Execution Tree
한 줄: 쿼리 selection set이 만들어내는 필드 호출의 트리. 깊이 우선으로 평가된다.
Field Coercion
한 줄: spec 단계 — 인자/입력 값을 선언된 타입에 맞게 변환·검증.
formatError
한 줄: Apollo Server 등의 에러 후처리 훅 — 스택 트레이스 제거, 안전한 메시지로 변환.
Info (resolver argument)
한 줄: 리졸버의 4번째 인자 — fieldName, 현재 selection set, schema, path, variableValues 정보를 담는다.
용도: Look-ahead로 JOIN을 미리 결정.
Null Propagation
한 줄: Non-Null 필드가 null이 되면 부모로 null이 전파되어 최악의 경우 root data가 null이 되는 동작. 참고: 02-execution-resolvers
Parallel Execution (query)
한 줄: Query 루트의 형제 필드들은 동시에 실행된다 (read는 부작용 없음).
Partial Response
한 줄: 일부 필드가 실패해도 성공한 필드는 data에 그대로 돌려주는 GraphQL의 응답 모델.
Path
한 줄: 에러의 발생 위치를 가리키는 배열 — ["user", "posts", 0, "title"].
Promise Resolver
한 줄: 리졸버가 Promise/async를 돌려줄 수 있고, 엔진이 await 한다는 사실. DataLoader가 이걸 활용.
Resolver
한 줄: 한 필드를 어떻게 값으로 바꿀지 결정하는 함수 — (parent, args, ctx, info) => value.
Scalar Coercion
한 줄: Scalar 출력 직전의 직렬화 단계 — Date → ISO String 같은 변환.
Selection Set (실행 관점)
한 줄: 필드 분기 트리를 만드는 입력 — execution은 selection set을 따라 재귀 호출된다.
Serial Execution (mutation)
한 줄: Mutation 루트의 형제 필드들은 순서대로 실행된다 (write는 부작용이 있어서).
Source / Parent
한 줄: 리졸버의 1번째 인자 — 한 단계 위 필드가 돌려준 객체.
예시: User.posts(parent, args)의 parent는 User 객체.
N+1 · DataLoader · Cache
“N+1은 GraphQL의 본질이고, DataLoader는 그것을 단일 tick에서 batch + cache로 흡수한다.” 자세히: 03-n-plus-1-dataloader · 05-cache-performance
Automatic Persisted Query (APQ)
한 줄: 클라이언트가 쿼리의 해시를 보내고, 서버가 해시→쿼리 매핑이 없으면 그때 전체를 받아 저장하는 lazy persisted query. 효과: 전송량 감소 + CDN 캐시 + 쿼리 allowlist.
Batch Function
한 줄: DataLoader의 핵심 — (keys[]) => Promise<values[]> 시그니처로 N개 키를 한 번에 조회하는 함수.
예시: new DataLoader(ids => db.users.findMany({ where: { id: { in: ids } } })).
Cache (per-request)
한 줄: DataLoader 기본 동작 — 한 요청 안에서만 살아 있는 메모리 캐시. 다음 요청에서는 비어 있음.
Cache Hint
한 줄: Apollo의 응답 캐시 디렉티브 — @cacheControl(maxAge: 60, scope: PUBLIC)로 필드별 TTL 지정.
Cache Key Function
한 줄: DataLoader가 Object 키를 받을 때 동일성을 판단하는 함수. 기본은 ===.
예시: { cacheKeyFn: key => JSON.stringify(key) }.
Cache Redirect
한 줄: Apollo Client의 reactive 캐시에서, Query.user(id: "1") 결과를 normalized 캐시의 User:1로 바로 연결하는 기능.
Connection (Relay)
한 줄: 커서 기반 페이지네이션 규약 — edges[].node + pageInfo.
예시: posts(first: 10, after: "cursor") { edges { node { ... } cursor } pageInfo { hasNextPage } }.
Cursor
한 줄: 페이지 위치 표식 — 보통 ID/timestamp/offset의 base64 인코딩.
dataIdFromObject
한 줄: Apollo Client 캐시가 객체의 ID를 추출하는 함수 — 보통 __typename + id.
DataLoader
한 줄: Facebook이 만든 batch + per-request cache 유틸. N+1을 단일 tick에서 흡수한다. 참고: 03-n-plus-1-dataloader
Dispatch
한 줄: DataLoader가 같은 tick에 모인 key들을 batch function에 한 번에 넘기는 순간.
Edge
한 줄: Relay Connection의 node를 감싸는 wrapper — node + cursor + 메타데이터 자리.
Event Loop
한 줄: JS 런타임의 비동기 실행 모델 — DataLoader의 “단일 tick batch”가 가능한 이유.
fieldPolicy
한 줄: Apollo Client 캐시에서 특정 필드의 read/merge 로직을 커스터마이즈.
Global Object Identification
한 줄: Relay 규약 — 모든 객체가 Node { id: ID! }를 구현하고, id만으로 어떤 객체든 refetch 가능.
Lookahead
한 줄: 리졸버가 info를 분석해 자식 필드를 미리 보고 JOIN/SELECT를 짜는 최적화 기법.
maxAge
한 줄: 캐시 TTL 초 단위 — @cacheControl(maxAge: 60).
Microtask
한 줄: Promise 콜백이 실행되는 큐 — DataLoader는 process.nextTick/microtask에서 dispatch.
N+1 Problem
한 줄: 1번의 부모 쿼리 + N번의 자식 쿼리로 총 N+1번 DB를 때리는 안티패턴. GraphQL의 구조적 함정. 해결: DataLoader / JOIN / Look-ahead. 참고: 03-n-plus-1-dataloader
Normalized Cache
한 줄: 응답 트리를 객체 ID 기준으로 평탄화해서 저장하는 캐시 (Apollo, Relay, urql). 효과: 같은 객체를 여러 곳에서 동시에 갱신.
Optimistic Update
한 줄: Mutation 응답을 기다리지 않고 캐시를 먼저 갱신해 UI를 즉시 반영하는 패턴.
Page Info
한 줄: Relay Connection의 메타데이터 — hasNextPage, hasPreviousPage, startCursor, endCursor.
Persisted Query
한 줄: 쿼리 본문을 사전 등록하고 클라이언트가 ID/해시만 보내는 방식. 보안 + 캐시 + 트래픽 절감. 참고: 05-cache-performance
Projection
한 줄: ORM/DB 쿼리에서 선택된 컬럼만 가져오는 최적화. info parsing + lookahead로 자동화.
Resolve Info Parsing
한 줄: info 객체의 selection set을 파싱해 어떤 자식 필드가 요청됐는지 알아내는 기법. graphql-parse-resolve-info 라이브러리.
Response Cache
한 줄: 응답 전체를 캐시 (HTTP/CDN 또는 in-process). @cacheControl의 hint를 기반으로 동작.
scope
한 줄: @cacheControl(scope: PUBLIC | PRIVATE) — PUBLIC은 CDN/공유 캐시 가능, PRIVATE은 사용자별.
Tick
한 줄: Event Loop의 한 순환. DataLoader는 같은 tick에 들어온 key를 모두 묶는다.
typePolicy
한 줄: Apollo Client 캐시에서 특정 타입의 키 추출·필드 정책을 정의.
Transport · Subscription
“쿼리는 결국 HTTP로 어떻게 흘러가나? Subscription은 어떤 프로토콜 위에서 동작하나?” 자세히: 04-transport
application/graphql-response+json
한 줄: GraphQL-over-HTTP 표준의 응답 Content-Type — 일반 JSON과 구분되어 well-formed GraphQL 응답임을 명시.
complete (message)
한 줄: graphql-ws 메시지 — 클라이언트/서버가 구독 종료를 알릴 때 사용.
connection_ack
한 줄: graphql-ws 메시지 — 서버가 connection_init을 받아들였음을 확인.
connection_init
한 줄: graphql-ws 핸드셰이크 첫 메시지 — 클라이언트가 인증 payload를 함께 보낸다.
@defer
한 줄: 응답의 일부 필드를 나중에 점진 전송하는 디렉티브 — multipart/incremental delivery 위에서 동작.
예시: query { user { name, ...Slow @defer } }.
GET Query
한 줄: 단순 쿼리/persisted query를 GET으로 보내는 방식 — URL 쿼리스트링에 query/variables/operationName. CDN 캐시 친화적.
GraphQL-over-HTTP
한 줄: GraphQL의 공식 HTTP 전송 사양 — Content-Type, status code, error 모델을 정의. 스펙: https://graphql.github.io/graphql-over-http/
graphql-ws
한 줄: GraphQL Subscription의 현재 표준 WebSocket 프로토콜 — connection_init/subscribe/next/complete.
GraphQL-over-WS
한 줄: WebSocket 위에서 GraphQL 메시지를 주고받는 패밀리 — graphql-ws(현재)와 subscriptions-transport-ws(deprecated).
Incremental Delivery
한 줄: @defer/@stream을 위한 응답 모델 — 첫 chunk + 후속 patch들로 응답을 쪼개 보낸다.
Multipart Upload
한 줄: GraphQL 파일 업로드 비공식 표준 — operations + map + 실제 파일 part로 multipart/form-data 전송.
스펙: jaydenseric/graphql-multipart-request-spec
next (message)
한 줄: graphql-ws 메시지 — 서버가 subscription 결과 1건을 보낼 때 사용.
operations + map
한 줄: multipart upload의 필수 두 part — operations(GraphQL 쿼리)와 map(파일이 어느 변수에 매핑되는지).
POST Query
한 줄: GraphQL의 기본 전송 — body에 JSON으로 { query, variables, operationName }.
PubSub
한 줄: Subscription 서버가 이벤트를 발행/구독하기 위한 추상 — Apollo의 PubSub, Redis PubSub, Kafka, NATS 등.
SSE (Server-Sent Events)
한 줄: 단방향 push 채널 — Subscription을 WebSocket 대신 SSE로도 구현 가능 (graphql-sse).
@stream
한 줄: List 필드의 항목들을 스트리밍으로 보내는 디렉티브 — posts @stream(initialCount: 5).
subscribe (message)
한 줄: graphql-ws 메시지 — 클라이언트가 새 subscription을 시작.
Subscription
한 줄: 실시간 푸시 작업 — query/mutation과 달리 수명이 긴 스트림 응답.
subscriptions-transport-ws (deprecated)
한 줄: Apollo의 구 WebSocket 프로토콜 — start/data/stop 메시지. 현재는 graphql-ws로 대체.
Upload Scalar
한 줄: multipart upload에서 파일 변수를 받는 custom scalar — scalar Upload.
Federation
“여러 팀이 하나의 그래프를 나눠 가지는 패턴 — 각 팀의 subgraph가 합쳐져 supergraph가 된다.” 자세히: 06-federation
Apollo Router
한 줄: Apollo Federation v2의 Rust 기반 gateway — 고성능 query planner 내장.
Composition
한 줄: 여러 subgraph 스키마를 하나의 supergraph로 합치는 단계. 충돌·entity 일관성 검증 포함.
_entities
한 줄: Federation의 마법 필드 — gateway가 다른 subgraph로 entity 참조를 보낼 때 사용하는 root query.
Entity
한 줄: Federation의 1급 시민 — @key로 식별되고 여러 subgraph에 흩어져 정의 가능한 타입.
예시: type User @key(fields: "id") { id: ID! ... }.
@external
한 줄: “이 필드는 다른 subgraph가 소유하고 나는 참조만 한다”를 표시.
Federation v1
한 줄: Apollo Federation 1세대 — @key/@external/@requires/@provides 4 디렉티브.
Federation v2
한 줄: 현재 표준 — @shareable/@override/@inaccessible/@link/@composeDirective 추가, 더 유연한 entity 소유권.
Gateway
한 줄: 클라이언트의 단일 진입점 — 받은 쿼리를 subgraph들로 분해·실행·합성한다.
GraphQL Mesh
한 줄: REST/gRPC/OpenAPI/DB까지 모두 GraphQL로 합치는 범용 mesh — Federation의 대안 또는 보완.
Hot Chocolate Fusion
한 줄: .NET Hot Chocolate의 자체 Federation 구현 — Apollo Federation과 호환되면서도 독자 진화.
@inaccessible
한 줄: 필드를 supergraph에서 숨김 — subgraph끼리만 보고 외부엔 노출 안 됨. 점진적 deprecation에 유용.
@key
한 줄: Entity의 식별 필드를 선언 — 다른 subgraph가 이 키로 entity를 참조한다.
예시: type Product @key(fields: "sku").
@link
한 줄: Federation v2의 import 디렉티브 — 외부 spec(https://specs.apollo.dev/federation/v2.0)을 가져온다.
@override
한 줄: “이 필드의 소유권을 내 subgraph로 가져오겠다”를 선언 — 점진 마이그레이션용.
@provides
한 줄: “외부 entity의 이 필드를 내가 미리 채워서 돌려줄 수 있다” — round-trip 절약.
Query Plan
한 줄: Gateway가 만든 실행 계획 — 어떤 subgraph에 어떤 부분 쿼리를 보낼지 + 의존 관계 + 합치는 순서.
@requires
한 줄: “이 필드를 풀려면 외부 entity의 다른 필드가 먼저 필요하다”를 선언.
예시: weight @requires(fields: "size").
__resolveReference
한 줄: Entity 참조 리졸버 — _entities가 호출 시 { __typename, id } 같은 ref를 받아 실제 객체로 복원.
Rover
한 줄: Apollo의 Federation CLI — 스키마 publish/check/compose 등.
Schema Stitching (legacy)
한 줄: Federation 이전의 스키마 합성 방식 — mergeSchemas로 여러 스키마를 합쳤지만 entity 개념이 약함. 현재는 graphql-tools에 일부 남아 있음.
@shareable
한 줄: “이 필드는 여러 subgraph가 동시에 소유해도 된다”를 명시 — v2의 핵심 완화.
Subgraph
한 줄: Federation을 구성하는 개별 GraphQL 서비스 — 보통 한 팀이 소유.
Supergraph
한 줄: 모든 subgraph가 합성된 전체 그래프 — 클라이언트가 보는 단일 스키마.
Security · Governance
“한 엔드포인트에 모든 쿼리가 들어오는 이상, 한 곳에서 다 막아야 한다.” 자세히: 07-security-governance
@auth directive
한 줄: 필드/타입에 인증·인가 요구를 선언하는 커스텀 디렉티브 — field: String @auth(role: ADMIN).
Allowlist
한 줄: 미리 등록된 쿼리만 실행 — 알지 못하는 쿼리는 거부. 가장 강한 보호책.
Authentication
한 줄: “누구냐”를 결정 — 보통 transport 레벨(JWT, 세션)에서 끝낸 뒤 context에 user를 넣는다.
Authorization
한 줄: “이 user가 이 필드를 볼 권한이 있나” — 필드 단위로 적용해야 over-fetching 방지가 가능.
Backward Compatibility
한 줄: 기존 클라이언트가 깨지지 않게 스키마를 진화시키는 원칙 — 필드 제거 대신 @deprecated, 비-Null 추가 대신 nullable 추가.
Complexity Analysis
한 줄: 쿼리에 점수를 매겨 임계치를 넘으면 거부 — depth보다 정교한 비용 모델.
예시: graphql-query-complexity, Apollo @cost.
Depth Limit
한 줄: 쿼리의 최대 중첩 깊이 제한 — friend → friend → friend → ... 같은 cycle 공격 방지.
Deprecation
한 줄: 폐기 예고 — @deprecated(reason: "...")로 introspection에 노출.
Forward Compatibility
한 줄: 미래 클라이언트가 새 필드를 추가 요청해도 깨지지 않게 서버를 설계하는 원칙.
graphql-eslint
한 줄: GraphQL 스키마/쿼리에 대한 ESLint plugin — naming/deprecation/anonymous operation 등 lint.
graphql-shield
한 줄: 권한 규칙을 선언적으로 매핑하는 라이브러리 — User: { secret: isAdmin }.
Introspection Control
한 줄: 프로덕션에서 introspection을 잠그거나 인증된 사용자에게만 허용 — 공격 표면 축소.
Persisted Allowlist
한 줄: Persisted Query + Allowlist의 결합 — 클라이언트가 빌드 타임에 등록한 쿼리만 ID로 실행. 사실상 최강 조합.
Query Cost
한 줄: complexity analysis가 매기는 점수 — 보통 필드 수 × 리스트 인자 같은 휴리스틱.
Rate Limit Points
한 줄: 시간당 사용자가 쓸 수 있는 query cost 총합 — GitHub API v4가 이 모델 사용.
Schema Linting
한 줄: 스키마에 대한 정적 검사 — naming convention, breaking change 탐지 등.
Versioning-less
한 줄: GraphQL은 보통 /v1, /v2 같은 URL 버전을 두지 않고, @deprecated로 진화한다는 철학.
도구 · 라이브러리
“구현체와 도구 — 어떤 언어/스택에 어떤 옵션이 있나?”
AppSync
한 줄: AWS의 매니지드 GraphQL — DynamoDB/Lambda/RDS 등 resolver를 VTL/JS로 작성.
Apollo Client
한 줄: 가장 널리 쓰이는 JS GraphQL 클라이언트 — normalized cache, React/Vue/Angular integration.
Apollo Explorer
한 줄: Apollo Studio의 IDE — schema-aware 쿼리 편집기.
Apollo Router
한 줄: Federation v2 gateway의 Rust 구현 — Node.js gateway보다 훨씬 빠르다.
Apollo Server
한 줄: 가장 보편적인 Node.js GraphQL 서버 — Federation 1세대 발원지.
Apollo Studio (now GraphOS)
한 줄: Apollo의 SaaS — schema registry, metrics, query plan, breaking change 탐지.
gqlgen
한 줄: Go의 code-first GraphQL 서버 — schema-first로 SDL 받고 타입 안전한 resolver 코드를 생성.
graphene
한 줄: Python의 GraphQL 라이브러리 — Django/SQLAlchemy/Flask integration.
GraphQL Inspector
한 줄: 스키마 변경을 분석하는 CLI/CI 도구 — breaking change 탐지, similar field 찾기.
graphql-codegen
한 줄: 스키마/쿼리에서 타입스크립트/Java/Swift 타입과 클라이언트 코드를 생성하는 CLI.
graphql-js
한 줄: GraphQL의 공식 reference 구현 (JavaScript) — 모든 JS 서버의 토대.
GraphQL Mesh
한 줄: REST/OpenAPI/SOAP/gRPC/DB를 GraphQL로 통합하는 범용 mesh — Federation 없이도 단일 그래프 구성.
graphql-request
한 줄: 미니멀 GraphQL 클라이언트 — 캐시·구독 없이 fetch 한 줄. Node/스크립트용.
GraphQL Yoga
한 줄: The Guild이 만든 모듈러 Node.js GraphQL 서버 — Envelop 기반 플러그인, Cloudflare Workers 등 다양한 런타임 지원.
GraphiQL
한 줄: GraphQL의 공식 IDE — 브라우저에서 쿼리 작성·실행·introspection 탐색.
GraphOS
한 줄: Apollo Studio의 새 이름 — Federation을 위한 control plane.
Hasura
한 줄: Postgres/MySQL/SQL Server를 즉시 GraphQL로 노출하는 engine — 권한도 선언적으로 작성.
Hot Chocolate
한 줄: .NET의 GraphQL 서버 — code-first, source generator 기반.
Mercurius
한 줄: Fastify 위에 올라간 고성능 Node.js GraphQL 서버 — Apollo Server보다 빠른 처리량으로 알려짐.
Nexus
한 줄: 타입스크립트 code-first schema builder — objectType/extendType API.
PostGraphile
한 줄: Postgres 스키마(테이블·뷰·함수)를 GraphQL로 자동 변환하는 서버.
Pothos
한 줄: 타입스크립트 code-first의 현재 최강 schema builder — 강타입 plugin 생태계.
Relay
한 줄: Meta가 만든 GraphQL 클라이언트 — fragment colocation, compiler 기반 최적화, Connection spec 발원지.
Rover
한 줄: Apollo CLI — Federation subgraph 관리.
Stellate
한 줄: GraphQL edge cache CDN — @cacheControl hint 기반으로 응답을 전 세계 edge에서 캐시.
TypeGraphQL
한 줄: 타입스크립트 데코레이터 기반 code-first — @Resolver/@Query/@Mutation.
urql
한 줄: 가벼운 React GraphQL 클라이언트 — document cache가 기본, normalized cache는 plugin.
카테고리 분포
이 사전이 다루는 용어가 어디에 가장 몰려 있나.
다음 단계
- 모르는 용어가 있다면 →
Cmd+F로 이 페이지에서 검색. - 깊이 알고 싶다면 → 각 용어 옆 참고 링크의 챕터로 점프.
- 더 많은 용어가 필요하다면 → GraphQL Spec October 2021 부록 색인 참조.