이전 장에서, gRPC의 특징인
protocol buffer, HTTP/2
이 REST와 비교되는 이점이다.
HTTP/2 관련 이점
HTTP/2는 HTTP1.1의 프로토콜을 계승하면서도 성능 향상에 초점을 두어 업그레이드 함.
1.
Multiplexed Streams
•
한 connection으로 동시에 여러개 메시지를 주고 받을 수 있으며, Response는 순서에 상관없이 stream으로 주고 받음
2.
Stream Prioritization
•
리소스간 우선순위를 설정해 클라이언트가 먼저 필요한 리소스부터 보낸다.
3.
Server Push
•
서버는 클라이언트의 요청에대해 요청하지 않은 리소스를 마음대로 낼 수 있다. == 요청 최소화
4.
Header Compression
•
Header table과 Huffman Encoding 기법(HPACK 압축방식)을 이용해 압축함
•
용량이 작아져서 속도가 빨라진다.
→ HTTP1.1을 기반으로 하는 REST API은
마이크로 서비스가 여러 클라이언트로부터 많은 쿼리를 받는 경우,
모델이 모든 쿼리를 개별적으로 처리해야 하므로 전체 시스템이 다운될 가능성이 높은데 반해
HTTP 2를 기반으로 통신하는 g RPC API에는 이 문제가 발생하지 않는다.
protocol buffer 관련 이점
g RPC API - protocol buffer
•
프로토콜 버퍼를 사용하여 페이로드(메시지) 데이터를 직렬화
◦
직렬화 : 객체의 데이터를 연속적인 바이트 코드로 변경하는 작업
•
이 방법은 메시지를 더 작게 만들고 압축된 구조여서 가벼움 (바이너리 형식)
Rest API
•
Rest는 대부분 JSON 또는 XML 형식을 사용하여 데이터를 주고 받는다.
•
가독성은 좋으나….
•
서버와 클라이언트 측 모두에서 사용되는 프로그래밍 언어로 직렬화되고 번역되어야 해서 데이터 전송을 느려지게 한다.
→ 바이너리 코드로 압축해서 페이로드 데이터를 전송하는 gRPC API에 비해,
JSON과 XML과 같은 객체 구조의 페이로드 데이터를 전송하는 REST API가 데이터 전송이 더 느리다.
참고