GraphQL
GraphQL
그래프QL(영어: GraphQL)은 페이스북이 2012년에 개발하여 2015년에 공개적으로 발표된 데이터 질의어이다.
그래프QL은 REST 및 부속 웹서비스 아키텍쳐를 대체할 수 있다. 클라이언트는 필요한 데이터의 구조를 지정할 수 있으며, 서버는 정확히 동일한 구조로 데이터를 반환한다.
그래프QL은 사용자가 어떤 데이터가 필요한 지 명시할 수 있게 해 주는 강타입 언어이다.
이러한 구조를 통해 불필요한 데이터를 받게 되거나 필요한 데이터를 받지 못하는 문제를 피할 수 있다.
주요 그래프QL 클라이언트로는 아폴로 클라이언트와 Relay 등이 있다.
그래프QL 서버는 여러 언어로 구현되어 있는데, 자바스크립트, 파이썬, 루비, 자바, C#, 스칼라, 고, 엘릭서, 얼랭, PHP, 클로져 등의 언어로 구현되어 있다.
출처 위키
SQL은 데이터베이스에 저장된 데이터를 효율적으로 가져오는 것을 목적으로 하였지만,
GraphQL은 웹 클라이언트가 데이터를 서버로부터 효율적으로 가져오는 것을 목적으로 합니다.
기존의 REST API를 사용할 경우 기능이 필요할 때마다 API를 매번 생성해야 하고 over-fetching과 under-fetching의 문제가 있었습니다.
서버사이드 gql 어플리케이션은 gql로 작성된 쿼리를 입력으로 받아 쿼리를 처리한 결과를 다시 클라이언트로 돌려줍니다.
HTTP API 자체가 특정 데이터베이스나 플렛폼에 종속적이지 않은것 처럼 마찬가지로 gql 역시 어떠한 특정 데이터베이스나 플렛폼에 종속적이지 않습니다.
심지어 네트워크 방식에도 종속적이지 않습니다.
일반적으로 gql의 인터페이스간 송수신은 네트워크 레이어 L7의 HTTP POST 메서드와 웹소켓 프로토콜을 활용합니다.
필요에 따라서는 얼마든지 L4의 TCP/UDP를 활용하거나 심지어 L2 형식의 이더넷 프레임을 활용 할 수도 있습니다
GraphQL 의 강력함
SQL을 이용해 원하는 정보만 뽑을려면 여러 테이블을 JOIN해야 하고 그에 따라 endpoint가 많아지는 경우,
만약, 하나의 endpoint로 필요한 데이터만 쿼리로 만들어서 받을 수 있다면 편리해질것입니다.
그런 일을 할 수 있는 것이 바로 GraphQL입니다.
단점
-
File 전송 처리 복잡
-
고정된 요청과 응답만 필요할경우 REST API 보다 불리
Reference
https://medium.com/@yeon22/graphql-graphql%EC%9D%B4%EB%9E%80-8468571ea96a