스키마는 모든 GraphQL API의 중추입니다.
GraphQL 스키마는 API의 기능을 지정하는 확실한 계약입니다.
그렇기 때문에 더이상 API 문서를 수동으로 작성할 필요가 없습니다. 대신 API를 정의하는 스키마를 기반으로 자동 생성될 수 있습니다!
GraphQL에서 클라이언트가 API의 응답 객체의 모양을 지정할 수 있습니다.
오버페치란 클라이언트가 실제로 필요하지 않은 데이터를 검색하고 있음을 의미합니다. 따라서 네트워크 리소스 낭비가 발생할 수 있습니다.
언더페치란 오버페치의 반대이며 응답에 포함된 데이터가 충분하지 않음을 의미합니다. 즉, 클라이언트는 추가 요청을 해야합니다.
최악의 경우는 클라이언트에서의 N+1 문제가 발생할 수 있습니다. 글 목록의 이미지를 각각 요청하는 경우가 있겠네요. 그러나 GraphQL을 이용하면 각각의 리졸버만 잘 설정되어 있다면 한번에 요청으로 모든 데이터를 받을 수 있습니다. (연쇄적인 리졸버 호출이 일어나기 때문이죠!)
<aside> 💡 서버 내부에서 N+1 디비 or API 조회가 발생할 수 있다는 것은 잊지마세요! 그렇지만 클라이언트의 입장에서 N+1 이 해결됩니다!
</aside>
REST API를 사용하면 API 엔드포인트의 응답을 수정하여 언더페치를 해결하는 경우가 많습니다. 이 접근 방식은 좋은 솔루션 처럼 보이지만 앱을 재설계 할 때 훨씬 많은 시간이 소요되는 백엔드 변경이 필요한 경우가 많기 때문에 빠른 제품 개발을 방해합니다.