티스토리 뷰

TIL - 2022

TIL 20220817 (GraphQL, Rest, gRPC)

바랄 희 2022. 8. 17. 21:32

GraphQL

- API 를 위한 쿼리 언어

- 클라이언트에게 요청한만큼의 데이터를 제공하는 것에 우선순위를 둠

- 단일 API 호출로 다양한 데이터 소스에서 데이터를 끌어오는 요청을 구성할 수 있도록 지원

- 기존 쿼리에 영향을 미치지 않고 필드를 추가 / 폐기할 수 있는 유연성 제공

- 필요한 데이터만을 쿼리할 수 있도록 함 (기존의 API 호출 방식은 서버에서 정의한 데이터 구조만을 한번에 하나씩 가져올 수 있음)

- API 개발자는 클라이언트가 서비스를 통해서 쿼리할 가능성이 있는 모든 데이터를 설명하는 스키마를 생성하는데, 여기서 GraphQL 스키마는 개체 유형으로 구성됨. 어떤 종류의 개체를 요청할 수 있고, 어떤 필드가 있는지 정의

- 쿼리가 수신되면 GraphQL 은 스키마에 대해서 쿼리를 검증 => 쿼리를 실행

- API 쿼리 구문 정의 / 검증 뿐만 아니라 다양한 의사결정을 설계자에게 맡김. 

 

예를 들어, id 에 따른 저자 관련 정보를 가져올 때 아래와 같이 가져오면 된다. 

query Author($id:Int){
	author(id:$id){
    	name
        email
        }
}

그러나 여기서 주소도 가져오고 싶다면, 단순히 아래처럼 필드를 추가해주면 된다.

query Author($id:Int){
	author(id:$id){
    	name
        email
        address
        }
}

https://www.redhat.com/ko/topics/api/what-is-graphql

 

GraphQL(그래프 QL) 개념, 사용, 용어, 장단점 및 무료 다운로드

GraphQL이란 쿼리 언어이며, 애플리케이션 프로그래밍 인터페이스(API) 서버 런타임으로서 데이터를 제공합니다. swagger 및 javascript api 언어 호출을 사용합니다.

www.redhat.com

 

REST vs GraphQL vs gRPC

 

1. Rest

장점

- 성능 : 빠른 반복과 표준 표현이 필요한 시스템에 적함

- 확장성 : 많은 수의 구성 요소와 구성 요소 간의 상호 작용 지원

- 단순성 : 아키텍처를 단순화 / 분리하는 균일한 인터페이스가 존재

- 대부분의 개발자가 이미 익숙

- 빠른 학습이 가능

 

단점

리소스가 복잡할 수록 여러 API를 사용해야 하거나 응답이 무거울 가능성이 존재

REST에 대한 표준을 잘 만들어야 함.

- 엔드포인트로 리소스를 제공하기 때문에 하나의 API 가 아니라 전체적인 엔드포인트를 보며 문맥 및 의미하는 바가 잘 표현되었는지 검증해야 함

 

2. gRPC

구글에서 설계 / 개발한 Google Remote Procedure Call

대부분의 권한은 클라이언트에 의존 / 처리 및 계산은 원격 서버에 의존

 

장점

- 데이터를 가볍고 빠르게 요청할 수 있음

- 클라이언트가 원격 시스템이 로컬인것처럼 직접 메소드 호출 가능

- 프로토콜 버퍼를 사용하여 데이터 전송을 하기 위해서 JSON, XML 이 아닌 직렬화된 데이터로 인터페이스를 정의

- 안정적이고 빠른 HTTP/2 를 사용

 

정해진 양의 데이터 / 클라이언트가 저전력이거나 리소스를 보존하려는 시스템에 적합

ex) IoT 장치

 

3. GraphQL 

정확한 요청에 초점을 맞추고 필요한 것을 정확하게 전달하기 위한 방식

클라이언트 중심의 접근 방식

 

장점

- 클라이언트가 원하는 데이터 / 원하는 방식과 형식을 결정

- 클라이언트가 요청한 것만 전달

- 크로스 플랫폼이며 12개 이상의 언어를 지원 (유연함)

 

깃헙이 사용 중임 2016년에 전환됨

Rest는 원하는 데이터를 위해 여러 요청을 해야 하고 / 요청에서 데이터를 과도하게 가져오는 경향이 있음

 

https://giljae.com/2022/08/05/Restful-vs-gRPC-vs-GraphQL.html

 

Restful vs gRPC vs GraphQL - Giljae Joo (주길재)

얼마전 프로젝트 진행 시, RESTful의 엔드포인트에 대해서 문제가 생겼었다. 구현상에 문제는 없지만 Addressability를 보장해야 하는 DX관점에서의 문제였다. 지금이야 REST로 API를 만들어서 제공하지

giljae.com

 

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
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 29 30 31
글 보관함