[GraphQL] GraphQL의 개념과 장단점 1
BackEnd

[GraphQL] GraphQL의 개념과 장단점 1

728x90
이번 포스팅에서는 GraphQL에 대해서 알아보기전에 GraphQL은 새로운 프레임워크, 라이브러리가 아니라, 전혀 새로운 개념이라는 사실을 알기. 그럼 GraphQL에 대해서 알아보자

GraphQL이란?

이름에 왜 그래프라는 단어가 들어갔을까?
GraphQL 홈페이지 설명

그래프는 근본적인 프로세스에 대한 인간의 뇌 구조와, 언어적인 설명과 비슷하기 때문에 많은 실제 세계의 현상을 모델링하는 강력한 도구입니다.
GraphQL을 사용하면 비즈니스 도메인을 그래프로 모델링 할 수 있습니다.

GraphQL도 SQL(Structed Query Language)과 마찬가지로 페이스북에서 만든 쿼리 언어다. 하지만 GraphQL과 SQL은 언어적 구조적에서 매우 차이가 있다.
SQL은 데이터베이스 시스템에 저장된 데이터를 효율적으로 가져오는 것이 목적이고,
GraphQL은 웹클라이언트가 데이터 서버로부터 효율적으로 가져오는 것이 목적이다.

상세한 내용이 궁금하면 아래 GraphQL 공식 홈페이지에서 확인
Link: 공식홈페이지

 

GraphQL: API를 위한 쿼리 언어

GraphQL은 API에 있는 데이터에 대한 완벽하고 이해하기 쉬운 설명을 제공하고 클라이언트에게 필요한 것을 정확하게 요청할 수 있는 기능을 제공하며 시간이 지남에 따라 API를 쉽게 진화시키고

graphql-kr.github.io

기존 REST API 통신의 한계와 비교

회사에서는 REST API 서버를 구축해서 서비스하는 경우가 있다. 그러나 개발하는 서비스의 덩치가 점점 커지면서 여러 한계와 문제점들이 생기게 됨

  • 서비스에서 사용하지 않는 불필요한 데이터
  • 특정 기능을 위해 여러번 API가 호출 됨
  • 특정 요청에 fit한 응답을 돌려주기 위해서는 API를 새로 만들어야 함
  • API 유지보수의 어려움
  • PC환경 모바일 환경에 따라 달라지는 데이터

한 문장으로 요약하면, 관리해야 할 EndPoint의 증가로 인하여 발생되는 문제점이라 할 수 있다. REST API는 URL, METHOD등을 조합하기 때문에 다양한 EndPoint가 존재한다. 반면 GraphQL은 단 하나의 EndPoint만 존재

RESTAPI와 GraphQL API의 사용 (출처 - https://blog.apollographql.com/graphql-vs-rest-5d425123e34b)

기존에 REST API에서는 정보를 얻기 위해 여러번 네트워크를 호출하거나, 다양한 API를 호출해야 했다. 하지만 GraphQL은 단 하나의 Endpoint를 제공하며, 단 한 번의 요청으로 모든 정보를 가져 옴

GraphQL 구조

GraphQL의 스키마 쿼리 구조는 C, C++의 헤더파일 과 비슷한 구조를 가짐

type Character{
    name: String!
    appearsin: [Episode]!
}
  • 오브젝트 타입 : Character
  • 필드 : name, appearsIn
  • 스칼라 타입 : String, ID, Int 등
  • 느낌표(!) : 필수 값을 의미(non-nullable)
  • 대괄호([, ]) : 배열을 의미(array)

※ 기본 예시

  • GraphQL Query
    {
      user(id: "100") {
          name,
          email
    }
    
  • Response data
    {
      "user": {
          "id": "100",
          "name": "jaewoo kwon",
          "email": "zeus@gamil.com"
    }

※ GraphQL 쿼리 비교 1

  • - 데이터 조회 쿼리 비교

※ GraphQL 쿼리 비교 2

  • SQL로는 3개의 쿼리문이 각각 실행되는 쿼리가 GraphQL에서는 한번에 가능

> 3번의 요청을 1번에 가능 

 

이어서 "GraphQL의 개념과 장단점 2" 에서 작성

https://zeuskwon-ds.tistory.com/73

 

GraphQL의 개념과 장단점 2

이전 글은 아래 링크에서 확인 https://zeuskwon-ds.tistory.com/72 GraphQL의 개념과 장단점 1 이번 포스팅에서는 GraphQL에 대해서 알아보기전에 GraphQL은 새로운 프레임워크, 라이브러리가 아니라, 전혀 새로

zeuskwon-ds.tistory.com

 

728x90