GraphQL 그래프큐엘해결한문제 사용실습 REST API 와 비교.txt

dev.dave·2023년 7월 26일

개발지식

목록 보기
30/53

GraphQL 그래프큐엘해결한문제 사용실습 REST API 와 비교.txt

이번에는 2015년 Facebook에서 발표한 GraphQL에 대해 알아보겠습니다.

이번영상에서는 API 제작 도구로서의 그래프큐엘에 대해 이야기하겠습니다.

Graph Query Language

(쿼리 랭귀지는 데이터베이스 또는 데이터 관리 시스템에 접근하기 위한 언어)

특히 그래프큐엘은 Server API로 정보를 주고받는 것에 특화된 Query Language임

페이스북은 말하길,

그래프큐엘이 만들어진이유는,

ios , android 등 다양한 기기에서 필요한 정보의 형태가 조금씩 달랐고

기존의 REST API로는 이 것들을 일일히 구현하는 것이 힘들었다

정보를 요청하는 쪽에서 원하는 형태로

정보를 가져오고 수정할 수 있는

Query Language를 만들게 되었다 라고 말함.


기존의 REST API는 정보를 다 가지고 오므로, 필요한 정보만 받을수가 없었다

이로인한 문제점은 ,

오버 페칭(over-fetching) 이다.

즉,

-필요한 정보보다 더 많은 데이터를 전달 받는것

-불필요한 리소스 낭비가 발생

-필요한 정보만 골라내는 추가 작업이 발생


그래프큐엘로 해결할수 있는

첫번쨰 문제는

Over-Fetching 이다.

(필요한 정보보다 더 많은 데이터를 전달 받는것)

즉,

REST API는 한꺼번에 많은 데이터정보를 다받아오는데

그래프큐엘은 원하는데이터만 쿼리를보내서 골라서 호출해서 받을수 있다.


두번쨰는

Under-Fetching이다.

(불필요한 리소스 낭비가 발생)

즉, 필요한 데이터를 만들기 위해 여러 번의 호출이 필요하고,

추가적인 리소스 요청이 발생한다.

여러 요청을 통해 전달받은 정보를 조합하는 추가 작업이 발생함.

즉, 불필요한 호출은 줄여야 효과적이다.

예를들어

사진 리스트를 전달하는 api 와

(get http://localhost:3000/photos/list)

카테고리 리스트를 전달하는 api가 있다치면,

(get http://localhost:3000/photos/get_category)

경우에 따라 이 두 api 의 결과가 동시에 필요할 수 있습니다.

사진의 리스트와 카테고리 리스트가 동시에 필요하다면?

-> 2번의 api호출이 필요하다. (2번 씩이나 api의 호출이 필요하다.)

그리고

만약

id 1번과 3번 그리고 카테고리 리스트가 동시에 필요하다면?

-> 3번의 api 호출이 필요하다.(3번 씩이나 api의 호출이 필요하다.)


REST API 또하나의 문제>>>

REST API는 api 마다 각각의 다른 url이 필요합니다.

제가 만든 사진 api는

총 4개의 서로다른 url 이 존재합니다.

먼저 사진의 리스트를 가져오는 api의 url이 있습니다.

그리고 카테고리 리스트를 가져오는 api url이 있습니다.

id로 사진을 검색해 해당 아이디의 사진 데이터만 가지고오는 API url이 있습니다.

영상에서는 보여드리지 않았지만,

카테고리로 검색해 그 카테고리에 해당하는 사진들의 데이터만 가져오는 api도 존재합니다.

경우에 따라서는 수십, 수백개의 url이 필요할수 있음

api를 만드는 입장에서는, 이것들의 이름을 하나하나 짓는것도 상당히 괴로운 작업중 하나입니다.

(api를 만든다면 -> 일일이 이름을 지어야 함 ㅜㅡㅜ)

api 를 요청하는 입장에서도 , 필요한 api의 url을 계속해서 찾아봐야기 떄문에,

이것 역시 귀찮은 일입니다.

(api를 사용한다면 -> api url을 계속해 확인해야함)

하지만

그래프큐엘은

단 한개의 url만 존재!

크래프 큐엘로 해결할수있는

세번쨰 문제>

단 한개의 url만 존재!!

REST API 서버를 GraphQL서버로 전환

REST API서버의 코드 수정없이 쉽게 전환이 가능

그래프 큐엘을 사용하기위한 한가지만은 짚고 넘어가쟈!

그래프큐엘에는

3가지 오퍼레이션 타입이 있다.

  1. Query -> 데이터 조회하는 요청을할떄 사용한다.
  1. Mutation -> 데이터 수정하는 요청을 할때 사용
  1. subscription -> 주로 실시간 애플리케이션 구현을 위해 사용

이번 시간에는

데이터 조회를 위한 쿼리(Query )만 사용해보겠습니다.

그래프 큐엘에서 Api 서버를 만들게되면,

api테스트를 위한 ui를 자체적으로 제공합니다.

https://www.youtube.com/watch?v=xiE9-S7s9rs

시연영상

그래프큐엘의 핵심은

사용자가 직접 어떤 데이터가 필요한지 명시할 수 있도록 함


REST API 의 문제점>

  • Over - Fetching -> 필요한 정보보다 더 많은 데이터를 전달 받는 것

-Under-Fetching -> 필요한 데이터를 만들기 위해 여러 번의 호출이 필요

-API 마다 다른 이름의 URL 이 필요


하지만

그래프 큐엘이 REST 보다 좋지만은 않다고 말할수도 있다.

왜냐면

REST 는

요청은 쉽지만, 응답 받은 데이터는 비효율적

그래프큐엘은,

요청은 복잡하지만 응답 받은 데이터는 효율적

그래프큐엘은 기존의 REST API가 당연하던 생태계에 새로운 대안을 제시했습니다.

API특성을 고려하여 , 그래프큐엘과 REST API중 어떤 것을 사용할지 결정한다면, 훨씬 더 효율적인 API를 만들어 사용할 수 있을 것입니다.

REST API서버를 그대로 두고, 이것을 그래프큐엘서버로 전환하는것도 어렵지 않으니 ,

두 형태 모두 제공하여 사용자가 필요에 따라 선택하게 하는 것도 좋은 방법이 될 수 있습니다.

아직 그래프큐엘은 REST API보다 사용되는 곳이 비교하기 힘들만큼 적은 것은 사실입니다.

OPEN API 를 그래프큐엘 형태로 제공하는 곳은 github 정도를 제외하면 찾아보기 힘듭니다.

아직은

SW 개발 중 서버와 클라이언트 통신을 위한 내장 API의 형태로만 거의 사용되고 있습니다.

하지만 이미 유명한 다수의 기업들이 그래프큐엘을 사용하고 있고,

개발자들사이에서도 긍정적인 반응을 얻고있기떄문에, 앞으로 더 활성호될것닙니다.

profile
🔥개인 메모 / 다른블로그 자료 참조 / 다른블로그 자료 퍼옴 (출처표기) /여기저기서 공부 했던 내용 개인메모 & 참고 / 개인 기록 용도 블로그 입니다.🔥

0개의 댓글