GraphQL 리졸버 `info` 객체, 쿼리 최적화의 핵심!

by DD
3년 전
조회수 6

GraphQL 리졸버의 `info` 객체를 활용하여 쿼리 최적화를 수행함

`variableValues`, `path`, `fieldNodes` 등 `info` 객체의 다양한 속성 분석

카카오스타일의 자체 라이브러리, `getFieldList`를 활용한 DB 쿼리 최적화 구현

GraphQL `info` 객체 구조 이해

GraphQL 리졸버의 `info` 객체는 현재 쿼리에 대한 다양한 정보를 담고 있다. `variableValues`를 통해 변수 값을, `path`를 통해 실행 경로를 알 수 있다. `fieldNodes`는 쿼리 최적화에 활용되며, 쿼리 성능 개선에 기여한다.

쿼리 최적화를 위한 `getFieldList` 활용

카카오스타일은 `getFieldList`를 활용하여 클라이언트가 요청한 필드만 DB에서 가져오는 최적화를 구현했다. `getFieldList`는 요청된 필드 목록을 반환하며, ORM의 `select` 구문에 직접 적용 가능하다. 따라서 불필요한 데이터 로딩을 방지한다.

API Gateway에서의 `info` 객체 변형

API Gateway에서 `addArgumentToInfo`와 같은 유틸리티를 사용하여 `info` 객체를 변형한다. 마이크로서비스 호출 시 필요한 인자를 추가하거나, 불필요한 필드를 제거할 수 있다. API gateway에서 클라이언트 요청 변형을 통해 유연성을 확보한다.

GraphQL 이해하기: (4) 리졸버 인자 - 4. info