개발자

GraphQL의 장점이 무엇인가요

2023년 03월 18일조회 222

현재 프로젝트에 GraphQL을 도입해볼까 고민하고 있습니다. 기존 REST 방식의 Over Fetching & Under Fetching 에 비해 필요한 정보만 스키마로 정의해서 가져올 수 있다고 확인했습니다. 그런데 결국 Restful한지 GraphQL을 썼는지는 서버와 Client 간의 통신 레벨에서만 작용하는 것은 아닌가라는 생각이 듭니다. GraphQL처럼 원하는 정보만을 뽑어오는 것은 SQL projection과 Dto 사용으로 충분하다고 느껴집니다. 또한 GraphQL 을 사용한다고 저 작업을 안하는 것도 아니라고 생각이 듭니다. 제가 자료조사가 부족하거나 적절하지 못한 이해를 했을 수도 있습니다. 혹여나 다른 분들께서 설명이나 참고자료를 공유해 주실 수 있으신가요?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 1

이양일님의 프로필 사진

안녕하세요! 개인적으로 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년 03월 26일

늦게나마 답변 확인합니다. 정말 감사하게도 답변 덕분에 graphql에 대해 조금 더 이해하게 되었습니다. 최초 저는 graphql을 이용하면 백엔드에서 graphql resolver 구현 없이 클라이언트가 원하는대로 데이터를 가져올 수 있다고 생각했습니다. 프로젝트에 이 기술을 사용할까 고민중이었는데 오히려 러닝커브가 생겼을지도 모르겠습니다. 추후 기한이 넉넉한 프로젝트에서 다시 한번 검토해봐야겠습니다.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!