본문 바로가기
Domain 지식들/Graph QL

Graph QL이란?

by monsangter 2022. 11. 3.

하나의 언어나 프로그램이 아닌, REST API 같은 웹 인터페이스 이다.

 

그래프 QL은 2012 페이스북에 의해 만들어졌고, 2015년 페이스북이 이 graph ql 명세를 오픈소스로 만들었다.

그저 형식이기 때문에, 따로 프로그램이 있지 않으나 implementation 은 받을 수 있는데,

명세를 따라 규칙을 실제 코드로 구성한 것이다.

 

rest api 는 이해하기 쉬우며, 여러개의 url 을 이용해 작동한다. url 은 모두 고유하며, 각기 다른 데이터를 제공한다.

보통 rest api uri의 경우에는 기기가 uri 에 접속하여 서버에 데이터를 요청해 기기, 브라우저로 json포맷으로 제공된 데이터를 가져와

사용자에게 보여준다.

 

이런 uri 는 인간이 직접 접속하는게 아닌, 기기나 브라우저가 url 에 접속해 서버에 데이터를 요청하는 형태를 지니는데,

 

보통 검색에 있어 검색값을 입력하면 uri 에 쿼리문이 붙어 요청된다. 이렇게 매번 새로운 uri를 생성하는 것도 rest 방식이라고 할 수 있다.

 

rest api는 두가지 문제점을 가지는데 over fetching 과, under fetching 이다.

 

over fetching 이란 내가 필요한 데이터보다 더 많은 데이터를 가져 온 것이다.

uri를 통해 http 메소드와 함께 요청을 하게 되면, 응답으로 불필요한 정보까지 전부 받게된다.

하지만 필요한 정보만 특정하여 요청한다면 db가 일을 더 많이 할 필요도 없고, 서버와 휴대폰 간의 이동 데이터가 커지지 않기 때문에 로딩 시간도 획기적으로 줄 것이다.

그래프 ql은 본질적으로 쿼리언어이기때문에, 이렇게 정확히 필요한 정보만 요청할 수 있게 해준다.

 

movie/upcoming/uri 를 입력한 경우를 생각해보자. 우리가 필요한게 영화제목 뿐이라 해도, 응답으로 제목, 개봉일, 인기도등 불필요한 값을 전부 받아오게 된다.

 

이상황에서 그래프 ql을 통해 쿼리를 보내면 

 

{

upcoming {

title

}

}

요청으로 

 

{

“upcoming”: [

{“title”: “the northman”},

{“title”: “dune”},

{“title”: “dr.strange”},

]

} 을 받아오게 된다.

 

그리고 movie/upcoming 과 movie/nowplaying 에 접근하는 경우를 생각해보자. 디바이스는 각기 다른 2개의 요청을 보내야한다.

하지만 그래프 ql은 원하는 것만 보내기 떄문에 하나의 쿼리에 upcoming 과 nowplaying 에 대한 정보를 요청할 수 있으며,

필요한 데이터를 가져오지도 않으니 오버페칭이 일어나지 않는다.

 

graph ql에는 멋진 기능들이 있어, api 만드는 것을 즐겁게 해주는데, 실습과 검색을 통해 살펴보자.

 

참고

https://www.youtube.com/watch?v=N-81mS2vldI

'Domain 지식들 > Graph QL' 카테고리의 다른 글

그래핀 - 장고(1) 컨텐츠 테이블  (0) 2022.12.02

댓글