내블로그 | 랜덤블로그 쪽지
hsy2569님의 블로그
http://blog.yes24.com/hsy2569
리스트 | RSS
태그 & 테마링 | 방명록
hsy2569
hsy2569님의 블로그
프로필 쪽지 친구추가
10월 스타지수 : 별0
댓글알리미 비글 : 사용안함
전체보기
기본 카테고리
나의 리뷰
기본 카테고리
나의 메모
기본 카테고리
태그
내용이 없습니다.
2022 / 02
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28
월별보기
나의 친구
최근 댓글
내용이 없습니다.
새로운 글
오늘 1 | 전체 91
2019-03-13 개설

2022-02 의 전체보기
[도서] 그래프QL 인 액션 도서리뷰 | 기본 카테고리 2022-02-21 00:04
http://blog.yes24.com/document/15956506복사Facebook 보내기 트위터 보내기

[도서]그래프QL 인 액션

사메르 부나(Samer Buna) 저/김완섭 역
한빛미디어 | 2021년 12월

내용     편집/구성     구매하기

위 상품을 구매하면, 리뷰등록자에게 상품판매대금의 3%가 적립됩니다. (상품당 최대 적립금액 1,000원) 애드온 2 안내

이 책을 신청한 이유

회사에서 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를 프론트 엔드 웹 애플리케이션에 적용하는 방법

상세 목차 다음과 같다

1부 그래프QL 경험해보기

1장 그래프QL 소개

1.1 그래프QL이란?

1.2 왜 그래프QL인가?

1.3 그래프QL의 문제점

2장 그래프QL API

2.1 그래피컬 편집기

2.2 기초 그래프QL 언어

2.3 깃허브 API 예제

3장 그래프QL 작업 수정 및 구성

3.1 인수를 사용해서 필드 변경하기

3.2 별칭을 사용해서 필드 이름 변경하기

3.3 지시문을 사용한 응답 변경

3.4 그래프QL 조각

2부 그래프QL API 작성법

4장 그래프QL 스키마 설계

4.1 AZdev가 필요한 이유

4.2 AZdev용 API 요건

4.3 쿼리

4.4 변경

4.5 구독

4.6 전체 스키마 텍스트

4.7 데이터베이스 모델 설계하기

5장 스키마 리졸버 구현

5.1 개발 환경 실행하기

5.2 그래프QL 런타임 설정하기

5.3 http 통신

5.4 생성자 객체를 사용한 스키마 생성

5.5 객체 기반 스키마로부터 SDL 텍스트 생성하기

5.6 비동기식 함수 사용하기

6장 데이터베이스 모델과 관계 사용

6.1 데이터베이스 실행 및 연결하기

6.2 taskMainList 쿼리

6.3 오류 보고

6.4 관계 리졸브하기

7장 데이터 추출 작업 최적화

7.1 캐시 및 일괄 처리

7.2 단일 리소스 필드

7.3 그래프QL 타입의 순환 의존성

7.4 데이터로더와 사용자 지정 ID 캐시 사용하기

7.5 데이터로더와 몽고DB 사용하기

8장 변경 작업의 구현

8.1 변경 컨텍스트 객체

8.2 변경 타입

8.3 사용자 변경 작업

8.4 API 사용자 인증하기

8.5 태스크 모델용 변경 작업

8.6 접근법 모델용 변경 작업

8.7 userDelete 변경 작업

3부 그래프QL API 사용법

9장 라이브러리를 쓰지 않는 그래프QL API 사용법

9.1 웹 UI 라이브러리 사용하기

9.2 웹 서버 실행하기

9.3 Ajax 요청 만들기

9.4 그래프QL 쿼리 요청 만들기

9.5 그래프QL 변경 요청 만들기

9.6 특정 사용자에게 속한 쿼리 요청 만들기

9.7 남은 과제

10장 아폴로 클라이언트를 통한 그래프QL API 사용법

10.1 자바스크립트에서 아폴로 클라이언트 사용하기

10.2 리액트에서 아폴로 클라이언트 사용하기

10.3 로컬 앱 상태 관리하기

10.4 그래프QL 구독 구현 및 사용

내용

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와 비교

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

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 를 사용하는 백엔드 프론트엔드 개발자는 꼭 읽어보길 추천한다.

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

 

 
 
이 글이 좋으셨다면 SNS로 함께 공감해주세요.
댓글(0) 트랙백(0)
이 리뷰를 | 추천 0        
1
진행중인 이벤트
나의 북마크
이벤트 세상