🚩 RPC - gRPC에 관하여
저번 정리글에서 RPC에 대한 개념을 정리하였다.
이번에는 RPC 의 개념을 활용한 Google 에서 제작한 오픈 소스 프레임워크인 gRPC 에 관해서 정리해보려고 한다.
📝 gRPC ( Google Remote Procedure Call ) 란 ?
■ gRPC ( Google Remote Procedure Call ) 의 정의
- HTTP/2 와 ProtocodBuf 를 활용하여 Google 에서 개발한 오픈소스 RPC Framework
○ gRPC ( Google Remote Procedure Call ) 동작 원리

■ gRPC ( Google Remote Procedure Call ) 의 특징
- HTTP/2 를 활용한 뛰어난 효율성
- ProtoBuf(proto3) 를 이용한 JSON 상위의 성능
- RPC 의 단점을 보완한 인증, 암호화, 압축 등 풍부한 내장 기능
- Java, C++, C#, Python, Ruby, Node.js 등 10개의 언어 지원
○ HTTP/2 란?
- HTTP 1.1 의 개선된 버전으로 SPDY ( 스피디 ) 기반 HTTP 프로토콜의 두번재 버전
- SPDY ( 스피디 )
전송 지연 ( latency ) 문제의 해결을 집중하여 HTTP 통신을 고속화하기 위해 구글이 개발한 비표준 개방형 네트워크 프로토콜
○ HTTP/2 특징

- HTTP/1.1 의 순차적 처리와는 다른 하나의 TCP/IP 연결에서 여러개의 스트림을 동시에 열어 병렬처리
- 기존 Client 와 Server 에서 사용된 Header 들의 목록들을 관리하여 중복 헤더 프레임을 압축해서 전송
- HTTP/1.1 Text 기반 protocol 에서 Binary protocol 지원
○ ProtoBuf ( Protocol Buffer ) 란?
- gRPC 에서 사용되는 XML, JSON 과 유사한 직렬화 데이터 구조
○ ProtoBuf ( Protocol Buffer ) 특징
- byte 를 전송하기 때문에 JSON 과 같은 Parsing ( 파싱 ) 의 불필요
- 같은 데이터라도 데이터의 크기가 작아 빠른 통신 속도
- binary 구조로 인한 인간이 읽기 어려운 구조
- proto 문법에 대한 Learning Curve
■ gRPC ( Google Remote Procedure Call ) 의 장점
- ProtoBuf 기반 Binary Protocol 사용
- HTTP/2 사용
※ 우수한 네트워크 및 메모리 효율성
■ gRPC ( Google Remote Procedure Call ) 의 단점
- Browser 환경에서 사용 불가
- Binary Protocol 로 인한 Debug 에 어려움 ( Not Human Readable )
- 기존의 RPC 보다는 간편하나 여전한 Learning Curve
- Load Balancer ( 로드밸런서 ) 가 HTTP/2 를 지원해야한다.
※ Rest 에 비해 Learning Curve 가 높다.
🚩 마치며..
gRPC 에 대한 개념을 정리해보았다.
Rest 와 비교하여 확실히 Learning Curve 가 무지막지하게 높다.
전문가가 된다면 지금의 상용서비스를 활용하지 않고도 이 기술만으로도 요구사항을 충족할 수 있을 것 같다.