GraphQL을 사용하는 이유

1) 강력한 형식의 스키마가 있습니다.

스키마는 모든 GraphQL API의 중추입니다.

GraphQL 스키마는 API의 기능을 지정하는 확실한 계약입니다.

그렇기 때문에 더이상 API 문서를 수동으로 작성할 필요가 없습니다. 대신 API를 정의하는 스키마를 기반으로 자동 생성될 수 있습니다!

2) 오버페치 및 언더페치 방지

GraphQL에서 클라이언트가 API의 응답 객체의 모양을 지정할 수 있습니다.

오버페치란 클라이언트가 실제로 필요하지 않은 데이터를 검색하고 있음을 의미합니다. 따라서 네트워크 리소스 낭비가 발생할 수 있습니다.

언더페치란 오버페치의 반대이며 응답에 포함된 데이터가 충분하지 않음을 의미합니다. 즉, 클라이언트는 추가 요청을 해야합니다.

최악의 경우는 클라이언트에서의 N+1 문제가 발생할 수 있습니다. 글 목록의 이미지를 각각 요청하는 경우가 있겠네요. 그러나 GraphQL을 이용하면 각각의 리졸버만 잘 설정되어 있다면 한번에 요청으로 모든 데이터를 받을 수 있습니다. (연쇄적인 리졸버 호출이 일어나기 때문이죠!)

<aside> 💡 서버 내부에서 N+1 디비 or API 조회가 발생할 수 있다는 것은 잊지마세요! 그렇지만 클라이언트의 입장에서 N+1 이 해결됩니다!

</aside>

REST API를 사용하면 API 엔드포인트의 응답을 수정하여 언더페치를 해결하는 경우가 많습니다. 이 접근 방식은 좋은 솔루션 처럼 보이지만 앱을 재설계 할 때 훨씬 많은 시간이 소요되는 백엔드 변경이 필요한 경우가 많기 때문에 빠른 제품 개발을 방해합니다.