SlideShare a Scribd company logo
1 of 22
Download to read offline
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

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

병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임codenavy
 
Presto, Zeppelin을 이용한 초간단 BI 구축 사례
Presto, Zeppelin을 이용한 초간단 BI 구축 사례Presto, Zeppelin을 이용한 초간단 BI 구축 사례
Presto, Zeppelin을 이용한 초간단 BI 구축 사례Hyoungjun Kim
 
Restful 제대로 알기(Getting to know the RESTful)
Restful 제대로 알기(Getting to know the RESTful)Restful 제대로 알기(Getting to know the RESTful)
Restful 제대로 알기(Getting to know the RESTful)광희 조
 
open api seminar
open api seminaropen api seminar
open api seminarNamhoon Kim
 
[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우NAVER D2
 
문돌이가 가르치는 서버사이드 PHP
문돌이가 가르치는 서버사이드 PHP문돌이가 가르치는 서버사이드 PHP
문돌이가 가르치는 서버사이드 PHP동현 조
 
Node.js에서 공공API를 활용해서 개발하기
Node.js에서 공공API를 활용해서 개발하기Node.js에서 공공API를 활용해서 개발하기
Node.js에서 공공API를 활용해서 개발하기Inho Kwon
 
맨땅에서 AI학습플랫폼을 만들기까지
맨땅에서 AI학습플랫폼을 만들기까지맨땅에서 AI학습플랫폼을 만들기까지
맨땅에서 AI학습플랫폼을 만들기까지Sunwoo Park
 
Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)정명훈 Jerry Jeong
 
Geo tools Data Transfer
Geo tools Data TransferGeo tools Data Transfer
Geo tools Data TransferJiyoon Kim
 
Open source engineering - 0.1
Open source engineering - 0.1Open source engineering - 0.1
Open source engineering - 0.1YoungSu Son
 
[214] data science with apache zeppelin
[214] data science with apache zeppelin[214] data science with apache zeppelin
[214] data science with apache zeppelinNAVER D2
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In ProductionMooYeol Lee
 
2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료
2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료
2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료beom kyun choi
 
DDD 5기 서버 직군 발표 - 황성찬
DDD 5기 서버 직군 발표 - 황성찬DDD 5기 서버 직군 발표 - 황성찬
DDD 5기 서버 직군 발표 - 황성찬SungChanHwang
 
파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호Jiho Lee
 
[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기
[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기
[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기KTH, 케이티하이텔
 
Golang+on+analytics+and+blockchain
Golang+on+analytics+and+blockchainGolang+on+analytics+and+blockchain
Golang+on+analytics+and+blockchainNAVER Engineering
 
Http2(http2.0,g rpc,cookie,session,idempotent, x forwarded-for)
Http2(http2.0,g rpc,cookie,session,idempotent, x forwarded-for)Http2(http2.0,g rpc,cookie,session,idempotent, x forwarded-for)
Http2(http2.0,g rpc,cookie,session,idempotent, x forwarded-for)진태 이
 

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

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

More from HYEONGNAM LEE

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

More from HYEONGNAM LEE (6)

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

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