단 한 번에 필요한 정보만 불러오는 효율적은 API 구축하기

 

사메르 부나 지음

김완섭 옮김

 

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

 

2022년 2월

2022 나는 리뷰어다 활동의 첫 번째 리뷰.

(작년에 이어 올해도 "나는 리뷰어다" 활동 지원 감사드립니다!! 자~ 드가자~~~~!)

 

2022년 한빛미디어 나는 리뷰어다 활동의 첫 번째 책은 "그래프QL 인 액션"이다.

 

먼저 GraphQL이 무엇인지 알아보자.

facebook에서 만든 Graph Query Language로 어플리케이션 레이어 쿼리 언어이다.

다시 말하자면?

API를 위한 쿼리 언어이며 타입 시스템을 사용하여 쿼리를 실행하는 서버사이드 런타임이다.

(무슨 말인지 잘 모르겠다.)

 

SQL과 비교하면서 좀 더 쉽게 풀어 설명해보자.

 

GraphQL(이하 GQL) 은 API를 만들 때 사용할 수 있는 쿼리 언어. 그와 동시에 쿼리에 대한 데이터를 받을 수 있는 런타임이다.

GQL은 선언현 데이터 fetching 언어라고 흔히 일컬어지며, 개발자는 무슨 데이터가 필요한지에 대한 요구사항만 작성하면 되고 어떻게 가져올지는 신경 쓰지 않아도 된다.

 

SQLDBMS에 저장된 데이터를 효율적으로 가져오는 것이 목적이고,

GQL웹 클라이언트가 데이터를 서버로부터 효율적으로 가져오는 것이 목적이다.

 

SQL의 문장은 주로 백엔드 시스템에서 작성하고 호출하는 반면,

GQL의 문장은 주로 클라이언트 시스템에서 작성하고 호출한다.

 

서버사이드 GQL 애플리케이션은 GQL로 작성된 쿼리를 입력받아 쿼리를 처리한 결과를 다시 클라이언트로 돌려준다.

HTTP API 자체가 특정 데이터베이스나 플랫폼에 종속적이지 않은 것처럼 마찬가지로 GQL 역시 어떠한 특정 데이터베이스나 플랫폼에 종속적이지 않다.

일반적으로 GQL의 인터페이스 간 송수신은 네트워크 레이어 L7의 HTTP POST 메서드와 웹소켓 프로토콜을 활용한다.

 

아래 GQL 파이프 라인도 같이 확인해보자

GraphQL 파이프 라인

비교하는 김에 GraphQL과 REST API에 대해서도 비교해보자.

REST API

- URL, Method 조합으로 다양한 Endpoint가 존재

- REST API에서는 각 Endpoint마다 데이터베이스 SQL 쿼리가 달라짐

 

GraphQL

- GQL은 단 하나의 Endpoint가 존재

- GQL API는 GQL 스키마의 타입마다 데이터베이스의 SQL 쿼리가 다름

GraphQL vs REST API

이 정도면 GQL에 대한 이해는 됐을 거라 생각한다.

좀 더 자세히 보고자 한다면?

https://velog.io/@jangwonyoon/1.-GraphQL-%EA%B0%9C%EB%85%90

 

#1. GraphQL 개념 및 개요

Graph QL(이하 gql)은 Structed Query Language(이하 sql)와 마찬가지로 쿼리 언어입니다. 하지만 gql과 sql의 언어적 구조 차이는 매우 큽니다. 또한 gql과 sql이 실전에서 쓰이는 방식의 차이도 매우 큽니다. gq

velog.io

링크를 참고하도록 하자. 저자님 감사합니다. 그대로 옮겨오면서 이해했어요.

 

그럼 이제 이 책의 구성에 대해서 알아보자.

 

이 책은 데이터 API를 사용하는 프런트엔드 개발자와 효율적인 데이터 API를 만들어야 하는 백엔드 개발자를 대상으로 한다.

그리고 기본적인 프로그래밍에 대한 지식과 javaScript에 대한 기초 지식도 필요하다.

 

1부 - 그래프QL 에 대한 다양한 질문을 왜, 무엇을, 어떻게의 관점으로 답한다.

  - 1장 : 그래프QL이 정확히 무엇이며 어떤 문제를 해결할 수 있고, 어떤 문제가 발생할 수 있는지 소개
             또한, 그래프QL의 설계 컨셉과 REST API와의 차이점에 대해 설명

  - 2장 : 그래프QL의 인터랙티브 환경 소개. 그래프QL 요청을 실제 작성하고 테스트

  - 3장 : 그래프QL의 기본 내장 기능에 대해 소개. 직접 데이터 요청과 응답을 구성하고 변경

 

2부 - 실제 웹 애플리케이션에서 동작하는 데이터 API를 만들어본다. 이를 통해 그래프QL 서비스 구축 방법과 그래프QL 언어가 무엇인지 이해할 수 있다.

  - 4장 : UI 기능들을 API 처리와 연계하는 방법을 배우고 이를 이용해서 그래프QL 스키마 설계

  - 5장 : 데이터베이스 전용 Node.js 드라이버와 그래프QL.js를 사용해서 실행 가능한 그래프QL 스키마 생성

  - 6장 : API 쿼리를 구현하기 위해서 데이터베이스 필드를 연동

  - 7장 : 6장에서 만든 쿼리를 바탕으로 그래프QL 쿼리 최적화 방법

  - 8장 : 데이터베이스 개체를 생성, 변경, 삭제하기 위한 API 변경 처리

 

3부 - 그래프QL API를 프론트엔드 웹 애플리케이션에 사용하는 방법을 보여준다.

  - 9장 : 그래프QL 클라이언트 라이브러리에 의존하지 않고 그래프QL API를 사용해서 직접 Ajax 요청을 처리

  - 10장 : 유명한 그래프QL 클라이언트 라이브러리 중 하나인 아폴로 클라이언트(Apollo Client)의 강력한 기능

 

소개부터 시작하여 GitHub 같은 그래프QL API 서비스를 사용한 실용적인 예제도 같이 보여주고 있다.

 

Git Repository와 Docker 파일도 제공하기 때문에 환경 구축을 어렵지 않게 할 수 있다.

 

공부를 하면서 어려운 점이 있다면 Pluralsight 같은 동영상 강좌 플랫폼에서 저자의 강의를 볼 수도 있다.

이외에도 jsComplete.com에 많은 동영상 자료가 있으며,

jscomplete.com/help slack 채널도 제공하고 있으니 많이 방문하면 좋을 것 같다.

 

484 페이지에 달하는 분량이지만, 관심이 있는 사람이라면 쭉쭉 진도가 나갈 것이다.

본인은 자바 스프링 백엔드 개발자라서 javaScript에 취약하기 때문에 빠르게 일고 나가지는 못했다.

하지만 꼭 완독 하고, 실제 프로젝트에도 접목시켜 보리라.

 

올해는 시작과 동시에 이직을 하고, 보다 좋은 환경의 회사에서 일을 하고 있다.

(너무 자유로워서 걱정입니다...)

2022년에는 정말 튼튼한 코드를 만드는 개발자가 되고 싶다.

 

LoveYourself.

+ Recent posts