gRPC: Cloud Native Computing Foundation에서 관리하는 open source API architecture 및 system.
Remote Procedure Call(원격 프로시저 호출) 모델을 기반으로 함
RPC 모델은 광범위 하지만, gRPC는 특정 구현
1. Remote Procedure Call
RPC에서 client-server 통신은 client API request가 local 작업이거나, request가 내부 서버 코드인 것처럼 작동
request에는 직접적으로 호출할 server function과 parameter 포함
RPC API는 HTTP, TCP 또는 UDP와 같은 protocol을 기본 데이터 교환 메커니즘으로 사용
2. gRPC
gRPC는 몇 가지 최적화와 함께 기존 RPC를 구현하는 시스템
ex) gRPC는 데이터 전송에 Protocol Buffer와 HTTP 2를 사용
개발자의 데이터 교환 메커니즘을 추상화
ex) 널리 사용되는 또 다른 RPC API 구현인 OpenAPI를 사용할 때, 개발자가 RPC 개념을 HTTP 프로토콜에 매핑해야 함, 하지만 gRPC는 기본 HTTP 통신을 추상화 -> 이런 최적화 덕에 다른 RPC 구현보다 더 빠르고 쉽게 구현할 수 있으며 웹 친화적임
Protocol Buffer: 구글에서 개발한 구조화된 데이터를 직렬화하는 메커니즘 - 언어/플랫폼 중립적, 확장성을 갖춤 HTTP/2: HTTP protocol version 2 - HTTP/1.1과의 차이점 중 Multiplexing: HTTP/1.1에서는 한 리소스를 로드할 수 없는 경우 그 뒤에 있는 다른 모든 리소스가 차단됨 -> HTTP/2에서는 단일 TCP 연결을 사용하여 한 번에 여러 데이터 스트림을 보낼 수 있음 - 데이터를 이진 코드 메시지로 분할하고, 클라이언트가 각 이진 메시지가 속한 스트림을 알 수 있도록, 메시지에 번호를 부여