[GraphQL] GraphQL이란?

HyeonMin Kim·2024년 6월 8일
post-thumbnail

GraphQL이란
GraphQL을 알기 전에 먼저 REST API라는 것을 알아야합니다.

REST API란?

REST란 (Representational State Transfer)이란 웹 서비스 아키텍처의 한 형태입니다. 이 REST 아키텍처 스타일의 설계 원칙을 준수하는 API입니다. 그리고 URL을 통해 통신이 됩니다. 예를 들어서

	domain/api/movies 와 같이 사용 이 경우 리소스는 영화이다. 
    domain/api/movies/1 1번 영화
    domain/api/movies/search?rating=9

등과 같이 사용이 된다.

그리고 CRUD(CREATE, READ, UPDATE, DELETE)등을 HTTP METHOD (GET, POST, PUT, FETCH, DELETE ...)를 이용하여 사용 가능하다.

REST API의 단점과 GraphQL을 쓰는 이유

  • Overfetching 해결
    • 수많은 데이터들 중 필요한 데이터만 뽑아줄 수 있다.
    • movie(title, year, summary, cover photo) 만 필요하지만 movie.json 받았을 때 너무 많은 데이터를 받는다 → 너무 많은 데이터로 인한 속도 저하 발생, graphql은 url로 데이터를 즉시 받지 않는다
    • 필요한 데이터를 요청해서 받음, 일반적인 rest에서는 필요한 데이터만 요청해서 받을 수 없다
  • Underfetching 해결
    • 우리가 필요한 것 보다 덜 받는 것, 영화 db 데이터
      • ex) now playing, 거의 모든 api는 over-fetching문제를 가지고 있으며 under-fetching 문제도 가지고 있을 수 있음, 이 영화를 보여주고 싶을 때 title, overview, 장르(genre_ids)만 받기에 어떤 장르인지 보여 줄 수 없음. → 두개의 url을 request 진행해야함
      • 장르에 대한 url, movie에 대한 url
    • 여러개의 url을 request 해야할 가능성이 농후함 → 로딩시간이 길어질 수 있음 → 실패할 가능성이 있다
    • Graphql은 많은 resource에서 하나의 request로 여러 데이터를 받을 수 있음

결과적으로 GraphQL의 장점과 단점을 보면 다음과 같습니다

장점

  • 필요한 데이터만 요청할 수 있어 네트워크 트래픽 감소
  • 클라이언트와 서버 간의 의존성 감소
  • 개발 속도 향상

단점

  • 학습 곡선이 다소 높음
  • 캐싱 및 보안 관리가 복잡할 수 있음
  • 기존 REST API와의 호환성 이슈

0개의 댓글