SlideShare a Scribd company logo
REST가 unrest할 때
GraphQL, gRPC는
어때요?
이형남, leohnlee@gmail.com
BE/Data Engineer, (주)두들린
1. 도입 동기 및 기존 시스템
2. RESTful API
3. GraphQL의 도입
4. gRPC의 도입
목차
도입 동기
코딩에는 정답이 없다.
하지만 오답은 있다.
동..동기화가 필요해..
FE BE AI
리팩하기 귀찮지만 유연함은 갖고 싶어
FE BE AI
Graph
QL
gRPC
RESTful API
RESTful API는 쉽게 말해서...
HTTP 프로토콜을 사용하는 아키텍처로써
Resource(URI, data)를 정의된
Method(get, post ...)로 처리하는 것.
CRUD
1. 표준의 부재
2. 데이터 사용자가 아닌 관리자의 입장에서 설계
3. Overfetching Vs. 사용자 종속적인 설계
4. JSON 기반의 느린 통신
5. 구현할 게 많다보니, Human Fault도 많다.
(문서 누락, 많은 구현량에 따른 많은 테스트)
RESTful API의 단점
GraphQL
1. 페이스북에서 만든 쿼리언어
2. 일반적으로 HTTP 프로토콜 사용
3. 언어/플랫폼/네트워크 등에 종속적이지 않다
4. 단 하나의 Endpoint
5. 정의된 Schema를 기준으로
서버사이드에서는 Resolver를,
클라이언트에서는 Query를 구현
GraphQL로 말할 것 같으면
단 하나의 Endpoint
https://www.apollographql.com/blog/graphql-vs-rest-5d425123e34b/
단 하나의 Endpoint
https://worth.systems/insight-graphql-what-why-and-how
GraphQL은 쉽게 말해서...
정의된 스키마를 기반으로 통신.
Server는 관리에 최적화된 형태로 Resolver 구현
Client는 사용에 최적화된 형태로 Query 구현
Schema
1. Resolver는 BE가, Query는 FE가 구현
2. 네트워크 비용 감소
3. API의 클라이언트 종속성 해소
4. 기능 확장에 유리
5. 모바일 등 클라이언트 확장에 유리
GraphQL을 적용하고 나서...
gRPC
1. 구글에서 만든 RPC프레임워크
2. HTTP/2 프로토콜을 사용
3. 플랫폼/언어 등에 종속적이지 않다
4. 바이너리로 전송해서 JSON보다 빠르다
5. 양방향 스트리밍이 가능하다
6. Protocol Buffers 구현체를 기반으로 한다
gRPC로 말할 것 같으면
RPC(Remote Procedure Call)
https://grpc.io/docs/what-is-grpc/introduction/
1. Unary:요청 1회-응답 1회
2. 클라이언트 스트리밍:연속 요청-응답 1회
3. 서버 스트리밍:요청 1회-연속 응답
4. 양방향 스트리밍:연속 요청-연속 응답
gRPC의 요청/응답 종류
gRPC와 Protocol Buffers
https://www.xenonstack.com/insights/google-protocol-buffer/
gRPC는 쉽게 말해서...
Protocol Buffers를 통해서 통신.
원격 머신을 로컬 함수를 호출하듯이.
네트워크 비용이 감소한다.
Function
감사합니다

More Related Content

PPT
DzinnyPing(포트폴리오)-정재훈
PDF
How to use Python in Video streaming service - PyCon Korea 2020
PPTX
PyCon2020 NLP beginner's BERT challenge
PDF
Popular Convention 개발기
PDF
11 1 while반복문
PPTX
Hello python 오리엔테이션(파이썬 스터디, 발표자료)
PDF
왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)
PPTX
오픈소스를 활용한 Batch_처리_플랫폼_공유
DzinnyPing(포트폴리오)-정재훈
How to use Python in Video streaming service - PyCon Korea 2020
PyCon2020 NLP beginner's BERT challenge
Popular Convention 개발기
11 1 while반복문
Hello python 오리엔테이션(파이썬 스터디, 발표자료)
왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)
오픈소스를 활용한 Batch_처리_플랫폼_공유

Similar to REST가 unrest할 때, GraphQL, gRPC는 어때요? (20)

PPTX
병렬 프로그래밍 패러다임
PDF
Presto, Zeppelin을 이용한 초간단 BI 구축 사례
PDF
Restful 제대로 알기(Getting to know the RESTful)
PPTX
open api seminar
PPTX
[112]rest에서 graph ql과 relay로 갈아타기 이정우
PDF
문돌이가 가르치는 서버사이드 PHP
PPTX
Node.js에서 공공API를 활용해서 개발하기
PDF
맨땅에서 AI학습플랫폼을 만들기까지
PPTX
Python study 1강 (오픈소스컨설팅 내부 강의)
PPTX
Geo tools Data Transfer
PPTX
Open source engineering - 0.1
PDF
[214] data science with apache zeppelin
PDF
AngularJS In Production
PPT
2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료
PPTX
DDD 5기 서버 직군 발표 - 황성찬
PDF
파이콘 2017 그만퇴근합시다_이지호
KEY
[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기
PDF
Golang+on+analytics+and+blockchain
ODP
팀장 잔소리
PDF
Http2(http2.0,g rpc,cookie,session,idempotent, x forwarded-for)
병렬 프로그래밍 패러다임
Presto, Zeppelin을 이용한 초간단 BI 구축 사례
Restful 제대로 알기(Getting to know the RESTful)
open api seminar
[112]rest에서 graph ql과 relay로 갈아타기 이정우
문돌이가 가르치는 서버사이드 PHP
Node.js에서 공공API를 활용해서 개발하기
맨땅에서 AI학습플랫폼을 만들기까지
Python study 1강 (오픈소스컨설팅 내부 강의)
Geo tools Data Transfer
Open source engineering - 0.1
[214] data science with apache zeppelin
AngularJS In Production
2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료
DDD 5기 서버 직군 발표 - 황성찬
파이콘 2017 그만퇴근합시다_이지호
[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기
Golang+on+analytics+and+blockchain
팀장 잔소리
Http2(http2.0,g rpc,cookie,session,idempotent, x forwarded-for)
Ad

More from HYEONGNAM LEE (6)

PDF
소프트웨어 마에스트로 10기 - 책을 만나는 순간, 책을찍다
PDF
STEC: 채용공고로 알아보는 IT 기술 트렌드 분석 서비스
PDF
계륵 같은 딥러닝, 실 서비스 적용기
PDF
Rnn for seq
PPTX
코딩은 문제해결이다 (도구로써 파이썬)
PDF
Why game users drop out of blade & soul? - 2018 big contest
소프트웨어 마에스트로 10기 - 책을 만나는 순간, 책을찍다
STEC: 채용공고로 알아보는 IT 기술 트렌드 분석 서비스
계륵 같은 딥러닝, 실 서비스 적용기
Rnn for seq
코딩은 문제해결이다 (도구로써 파이썬)
Why game users drop out of blade & soul? - 2018 big contest
Ad

REST가 unrest할 때, GraphQL, gRPC는 어때요?