메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

독자리뷰

충분한 설명이 있어 좋았던 그래프QL 인 액션 리뷰

hsy0***

|

2022-02-20

그래프QL 인 액션

페이스북에서 만든 쿼리 언어 그래프QL로 데이터 API 서비스를 만들고, 최적화하고, 클라이언트에서 사용하는 과정을 하나씩 살펴본다.

  • 저자 : 사메르 부나
  • 번역 : 김완섭
  • 출간 : 2021-12-24

[도서리뷰] GraphQL in Action - 단 한 번에 필요한 정보만 플러오눈 효율적인 API 구축하기

 

 

 

이 책을 신청한 이유

회사에서 Vue.js + Spring Boot 프로젝트를 많이 진행했었다. 프론트에서는 백엔드에 HTTP API 요청하고 응답을 받아 데이터를 화면에 보여주는 구조였다. REST API 는 요청하는 함수 GET, POST, PATCH, PUT, DELETE 등 Method와 URL을 조합하여 여러 개의 엔드포인트가 있어 그 엔드포인트 마다 DB SQL쿼리가 달라진다.

이와 달리, 웹 클라이언트가 데이터를 서버로 부터 효율적으로 가져오는 것이 목적이라는 GraphQL 은 불러오고자 하는 데이터의 종류를 쿼리 조합을 통해 결정한다고 한다. 프론트엔드를 40% 곁들인 백엔드 개발자로써 프론트가 데이터를 효율적으로 가져오는 부분에 관심이 있었고 더 알고 싶어 "GraphQL in Action" 책을 읽어 보고자 했다.

 

목차 및 구성

총 세 파트로 나눠져 있다

  1. GraphQL 이 어떤 문제를 해결해 주는지, 설계 컨셉, 간단한 요청 테스트와 기본 내장 기능에 대한 소개

  2. 효율적인 GraphQL API 서비스를 만들기 위한 기술을 깊게 다룬다

    • GraphQL 스키마 설계

    • API 쿼리를 구현하기 위해서 데이터베이스 필드 연동하는 방법

    • GraphQL 쿼리 최적화 방법

    • DB 개체 생성, 면경, 삭제하기 위한 API 변경 처리

  3. GraphQL API를 프론트 엔드 웹 애플리케이션에 적용하는 방법

 

 

 

내용

GraphQL 이란

GraphQL을 선택하는 가장 중요한 기술적 이유는 효율성이다. 아래 그림과 같이 API 클라이언트는 종종 서버에게 여러 리소스를 요청해야 하지만 API서버는 보통 하나의 리소스만 응답하는 방법을 안다. 결과적으로 필요한 모든 데이터를 얻기 위해선 클라이언트가 서버에게 여러 번 요청하게 된다.

그래프QL은 이런 다중 요청의 복잡성을 백엔드에 부담시켜서 그래프QL 런타임이 처리하도록 만든다. 클라이언트가 그래프 QL서비스로 하나의 질문을 던지면, 서비스는 필요한 정보를 정확하게 하나의 등답에 담아서 반환한다.

 

  • 예시

    • 단순화한 쿼리 텍스트 예제

      					query{
      employee(id: 42){
      name
      email
      }
      }
    • GraphQL 응답 객체의 예

      					{
      data:{
      employee:{
      name: 'Jane Doe'
      email: 'jane@doe.name'
      }
      }
      }

       

 

REST API와 비교

  1. REST API 가 가진 가장 큰 문제점은 클라이언트가 여러 개의 데이터 API 엔드포인트와 커뮤니케이션 한다는 것이다. REST API는 클라이언트가 데이터를 받기 위해서 네트워크를 여러 번 왕복해야 한다.

  2. REST API에는 클라이언트용 요청 언어가 없다. 클라이언트가 서버에 무엇을 원하는지 정확하게 알릴 수 있는 언어가 없으므로 서버가 반환하는 데이터를 제어할 수가 없다. 정확하게 말하면 있긴 하지만 매우 제한된 언어만 사용할 수 있다. 예를 들면, REST API 에서 데이터를 읽으려면 GET /ResourceName 형식으로 리소스의 전체 데이터를 읽어 들이거나, GET /ResourceName/RecourceID 형식으로 지정한 ID의 단일 데이터만 읽어야 한다.

     

 

 

이렇게 공부하면 좋을 것 같다

책의 순서가 1장에 개념 및 기초를 다루고 2, 3장부터 기술을 상세하게 다루며 실제 적용을 해 볼 수 있다. 앞에서 부터 정독하면 될 것 같다. 도커 파일과 깃헙에 코드도 제공한다.

 

대상 독자

  • API를 사용해 결과물을 만다는 프론트엔드 개발자

  • API를 사용하는 프론트엔드 개발자와 효율적인 데이터 API를 만들어야 하는 백엔드 개발자

  • 어느 정도 프로그래밍에 대한 기본적인 지식과 자바스크립트에 대한 기초 지식이 있는 분

  • PostgreSQL, MongoDB 경험이 있다면 도움이 됨

 

이 책을 읽고

실무에서 API 를 만들 때 하나의 GET 함수에서 field를 클라이언트에서 정의하여 요청할 수 있는 방법은 없는가 고민한 적이 있었다. 예를 들어, getUser 함수에서 User의 username과 address 만 가져오고 싶을 때가 있고, address 만 가져오고 싶을 때가 있었는데 이럴 때 마다 요청에 대한 함수를 일일히 만들어야 했다. 이 책을 읽고 graphQL이 이러한 문제를 해결해 줄 수 있었다. 새로운 개념을 알게 되었고 실제 적용할 수 있는 과정까지 탄탄히 알 수 있게 되었다.

이 책의 장점은 충분한 예제쭉 읽기 좋은 구성 인 것 같다. 그리고 graphQL 에 대해 깊이있고 알찬 내용 을 모두 다루고 있어 API 를 사용하는 백엔드 프론트엔드 개발자는 꼭 읽어보길 추천한다.

 

 

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?