안녕하세요 Devport 입니다.
이번에 GraphQL을 적용하는 개인 프로젝트를 진행하면서 느꼇었던 점들을 하나하나 정리해보기 위해서 블로그를 시작하게 되었습니다. 저는 이번 개인 프로젝트에서 DB는 MongoDB를 사용하는 구조를 갖고 있습니다. MongoDB에서는 Join이 쉽지 않아 연관 Collection의 정보를 조회하는 부분이 어려움이 있는데 GraphQL의 연쇄 리졸버 기능으로 유사하게나마 구축할 수 있어 서버 개발에 시간을 단축할 수 있었습니다. 저는 이러한 부분에서 개발의 생산성을 올려줄수 있는 훌륭한 프레임워크라고 생각됩니다.
GraphQL?
GraphQL은 페이스북에서 2012년 네이티브 모바일 앱으로 GraphQL을 처음 사용하기 시작하였고 2015년 React 컨퍼런스에서 GraphQL이 공개되었습니다.
이 기술은 대부분의 모든 웹 기술에서 사용이 가능하도록 만들어져 다양한 언어에서 사용될 수 있도록 구현이 되었습니다.
GraphQL은 데이터베이스로 혼동하시는 분들이 있지만 이 부분은 오해이며 서버와 클라이언트의 상호관계를 보다 쉽게 API로 쿼리하기 위한 언어입니다. 클라이언트에서 원하는 데이터를 지정하여 가져 올 수 있는 구조를 갖추고 있으며 서버는 요청에 대하여 반환할 수 있습니다. 원하는 데이터만을 가져 올 수 있기에 불필요한 리소스를 가져오지 않아 필요한 트래픽만을 발생하게 됩니다. RestAPI와 다르게 단일 End Point만을 사용하는 특징을 가지고 있습니다.
GraphQL 특징
- 원하는 요소의 데이터만을 가져 올 수 있으며 한번의 요청에서 필요한 부분의 데이터만 가져올 수 있습니다.
// Request 1 { hero { name height mass } } // Response 1 { "hero": { "name": "Luke Skywalker", "height": 1.72, "mass": 77 } } // Request 2 { hero { name friends: { name } } } // Response 2 { "hero": { "name": "Luke Skywalker", "friends": [ {"name": "Obi-wan kenobi"}, {"name": "R2-D2"}, {"name": "Han Solo"} ] } }
2. 하나의 End-Point만을 사용하기 때문에 Restful API에서 생기는 복잡성을 줄여줄수 있습니다.
현업에서 FrontEnd 개발자는 기능이 필요할 떄에 BackEnd 개발자에게 유사한 API를 추가 요청할 때가 있습니다.
GraphQL은 이런 단순 API 추가 요청을 할 필요가 없으므로 BackEnd개발자에게 추가 요청하는 횟수를 줄일 수 있어 업무 생산성을 향상 시킬 수 있습니다.
3. GraphiQL을 제공합니다. /graphql을 사용하여 즉석에서 API 요청 쿼리 문을 작성하면 응답결과를 확인해 볼 수 있어 개발에 도움을 줍니다.
GraphQL Trend
GraphQL은 아직 Rest-API보다는 많이 사용되고 있지는 않습니다. 하지만 꾸준히 증가하고 있으며 관심도 또한 낮지 않다는 것을 알 수 있습니다. 저도 처음엔 RestAPI로 충분히 할 수 있고 Chrome Debugging에서 쉽게 문제 되는 부분들을 확인할 수 있다는 점에서 GraphQL이 궂이 필요할까라는 의문이 있었고 아직까지는 GraphQL 관련 Tools가 성숙하지 못한 부분과 학습에 시간이 드는 비용이 있기에 GraphQL을 고려하지 않았지만 막상 프로젝트에 적용하고 난 후에 좀 더 Front-End에 집중할 수 있어서 만족도가 굉장히 높은 프레임워크가 되었습니다. 단점이 되는 부분들이 좀 더 보강된다면 GraphQL의 사용도가 증가할거라 봅니다.
성장하고 있는 커뮤니티
Rest가 나왔을때에는 애플리케이션들이 단순하였고 대응할 기기도 많지 않았습니다. 그래서 그 당시에 Rest는 적합한 환경이었지요. 하지만 지금은 다양한 환경에서 모든 요구사항에 대응할 수 있는 API를 개발하는것에 필요성을 느낀 Facebook, Coursera, Netflix와 같은 기업들이 이에 연구를 진행하였습니다.
지금 GraphQL이 오픈소스가 된 후에 Gihub, Twitter, Yelp, Shopify와 같은 여러 회사에서는 이 기술을 적용하고 있으며 이를 검토 하는 회사들도 많습니다.
'개발바닥 > GraphQL' 카테고리의 다른 글
[개발] GraphQL - Apollo Link 제어 (0) | 2021.11.10 |
---|---|
[개발] GraphQL - Apollo Client Cache (0) | 2021.11.10 |
[개발] GraphQL - Vue + Apollo + GraphQL (0) | 2021.11.10 |
[개발] GraphQL - Apollo 웹 서버 구축하기 (0) | 2021.11.10 |
[개발] GraphQL - Schema & Type (0) | 2021.11.10 |