GraphQL context, 제대로 알고 쓰자!
by DD
3년 전
조회수 3
GraphQL 리졸버의 context는 요청 간 상태 공유를 위한 객체
Apollo Server 및 GraphQL Java 등 다양한 환경에서 context 설정 방법 제시
DataLoader와 context를 활용하여 N+1 쿼리 문제 해결
Context의 역할: 요청 정보 전달
GraphQL context는 각 리졸버가 공유하는 요청별 컨텍스트를 제공한다. 구체적으로 HTTP 헤더나 로그인 정보와 같은 클라이언트 요청 관련 데이터를 담는다. 따라서 인증/인가 구현 시 context를 활용하여 보안 강화가 가능하다.
DataLoader와 Context의 시너지
DataLoader는 N+1 쿼리 문제를 해결하는 핵심 라이브러리이다. DataLoader 인스턴스를 context에 저장하여 요청별로 관리한다. 반면, context를 사용하지 않으면 데이터 일관성 문제가 발생할 수 있다. 결과적으로 DataLoader 성능을 최적화하고 데이터 로딩 속도를 향상시킨다.
프레임워크별 Context 구현
Apollo Server, GraphQL Java, DGS Framework 등 다양한 GraphQL 프레임워크에서 context를 지원한다. Apollo Server는 HTTP 요청 정보를 context에 담아 제공한다. GraphQL Java는 `GraphQLContext`를, DGS Framework는 `DgsContext`를 활용한다. 따라서 각 프레임워크의 context 설정 방법을 이해하는 것이 중요하다.