안녕하세요! 개인적으로 GraphQL 을 사용할 경우 Client 와 Server 개발자간의 커뮤니케이션 비용과 생산성 및 유지보수적인 측면에서 Restful API(혹은 Restful 하지 않은 HTTP API) 를 사용할때보다 장점인 케이스가 존재한다고 생각합니다. Client 단에서 하나의 View 를 그릴때 요청해야할 API 가 여러개일 경우 View 를 그리기위한 로직이 매우 복잡해지게 되고 이는 유지보수에 큰 영향을 주게 됩니다. 이러한 Client 가 다양하게 있을 경우(예: PC/모바일 웹, IOS/Android 앱, Open API 로 API 가 공개되었을 경우 등) 복잡한 로직을 들고 있어야 하는 Client 가 많아지니 유지보수는 배로 들게 되겠죠. GraphQL 을 사용할 경우 필요한 API 를 일일히 공유할 필요가 없고 스키마 정보만 공유해주면 Client 에서 필요한 데이터를 알아서 쓰도록 할 수 있으니 Client 와 Server 개발자간의 커뮤니케이션 비용이 대폭 줄고, Client 로직도 간단해지니 생산성 및 유지보수가 좋아집니다. 부가적으로 필요한 데이터만 조회하고 불필요한 데이터는 조회를 하지 않아 네트워크 비용도 줄어들 수 있습니다. 다만, GraphQL 로 전환시 단점도 존재하기 때문에 변경전에 검토해야할게 있습니다. 대표적으로 Client 에서 조회할 데이터가 어떤건지 예측할 수 없어 캐시를 하기가 힘들고, Client 의 로직은 단순해지지만 Server 단의 로직이 복잡해질 수 있습니다. 따라서 기존에 캐시 성격으로 관리되는 데이터의 API 나 Server 와 연동하는 Client 의 종류가 적거나 한정되어있다면 배보다 배꼽이 커지는 결과를 초래할수 있습니다. Redhat 에서 정리한 GraphQL 의 정의와 샘플코드, 장단점 및 오픈소스 프로젝트가 설명된 링크를 추가로 공유드립니다. - https://www.redhat.com/ko/topics/api/what-is-graphql 저의 짧은 지식이 부디 도움이 되셨으면 좋겠습니다.

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 3월 21일 오전 7:57

 • 

저장 14조회 2,064

댓글 0