BackEnd

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

728x90

이전 글은 아래 링크에서 확인

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

 

GraphQL의 개념과 장단점 1

이번 포스팅에서는 GraphQL에 대해서 알아보기전에 GraphQL은 새로운 프레임워크, 라이브러리가 아니라, 전혀 새로운 개념이라는 사실을 알아주시면 됩니다. 그럼 GraphQL에 대해서 알아보겠습니다. G

zeuskwon-ds.tistory.com

 

GraphQL의 장점

위에서 언급한 특징을 기반으로 장점을 정리해 보자.

1. 하나의 EndPoint

가장 큰 특징이자 장점인 한 개의 EndPoint를 가짐으로써 HTTP 요청의 횟수를 줄일 수 있고 API나 View를 따로 구성할 필요가 없어짐.

요청을 보낼때는 정해진 한 군데로만 요청을 보내면 되고, 그 외의 API를 신경쓸 필요가 없어져, 유지보수에 용이

2. Fit한 Data

GraphQL은 한번의 요청으로 원하는 데이터 전부를 서버로부터 요청하여 가져오기 때문에 REST API만을 사용할 때 발생하는 Overfetching이나 Underfetching등의 문제가 발생하지 않는다.

  • Overfetching
    원하는 data 이상의 정보를 요청받는 것, data의 정제에 리소스가 낭비
  • Underfetching
    원하는 data의 정보를 요청받기 위해 여러번 요청을 보내는 것, 네트워크를 통해 여러번 접근을 하여 리소스 낭비

3. 기종에 상관없는 API

Facebook에서는 기존에 REST API로 ios, Android에 따라 다른 서비스를 제공하는 API구현이 힘들었음. 그래서 기종에 상관없이 표준화 된 쿼리언어를 개발 했다.
Link: 자세한설명참조

 

GraphQL: A data query language | GraphQL

GraphQL: A data query language 9/14/2015 by Lee Byron When we built Facebook's mobile applications, we needed a data-fetching API powerful enough to describe all of Facebook, yet simple and easy to learn so product developers can focus on building things q

graphql.org

GraphQL의 단점

GraphQL은 지속적으로 성장하는 생테계로써, 완성된 명세가 존재하지 않다.

1. 규모가 작을 때 비효율

고정된 요청과 응답만 필요한 경우에는 Query 요청의 크기가 RESTful API보다 커지게 된다. 즉, GraphQL의 장점이 줄어든다고 볼 수 있음

2. 파일 업로드( 크리티컬한 단점 )

File 전송 등 Text만으로 하기 힘든 내용들을 처리하기 복잡하다. (불가능한건 아님)

3. 요청 필터링 어려움

GraphQL은 클라이언트가 필요한 데이터를 스스로 결정하여 요청하게 된다. 따라서 GraphQL의 다양한 요청 형태에서 잘못된 요청을 필터링하기가 까다롭다.(또한 불가능한건 아님)


※ 그럼 어떨 때 사용하는것이 좋은가?

어떤것을 사용할지 다음과 같은 기준으로 선택하면 될 것이다.

GraphQL

  • 서로 다른 모양의 다양한 요청들에 대해 응답할 수 있어야 할 때
  • 대부분의 요청이 CRUD(Create-Read-Update-Delete) 에 해당할 때

RESTful

  • File 전송 등 단순한 Text 로 처리되지 않는 요청들이 있을 때
  • 요청의 구조가 정해져 있을 때

하지만 둘 중 하나를 선택할 필요없고 둘 다 사용하면 됨.

 

※ GraphQL이 REST를 완벽히 대체 할 수 있는가?

- 공식문서
No, not necessarily. They both handle APIs and can serve similar purposes from a business perspective. GraphQL is often considered an alternative to REST, but it’s not a definitive replacement.

 > GraphQL이 REST를 완벽히 대체불가(어려운 파일 전송 이슈)

  • 고려해야할 점
    • 혼합(GraphQL, REST)사용할 때 클라이언트의 불만(데이터 요청시 더 헷갈리고 복잡함)
    • 기존 REST를 GraphQL로 변경할 때 드는 비용 대비 효과가 아직 낮음 (검증된 효과가 없음)
    • GraphQL은 기업에서 개발하는게 아닌 커뮤니티 드리븐 방식이기 때문에 확장성과 지속 가능성이 불확실

 

결론

GraphQL은 2015년에 개발되고 꽤 많은 시간이 흘렀지만 처음 나올때 보다 개선된 내용이 많이 없고 위 내용들 때문에 사용하는 기업이 많이 없음. 상용화가 되기에는 많은 개발과 연구가 필요

 

Reference

728x90