[컴] gRPC

 

rpc /

gRPC

  • 구글에서 시작(그래서 google’s RPC)
  • CNCF(Cloud Native Computing Foundation) ecosystem 의 일부다
  • transport protocol 로 HTTP/2 를 이용
  • Protocol Buffers 를 이용한다.
  • json 에 비해 message size는 60-80% 작고, 약 8배정보 빠르다.

HTTP/2 의 이점

  • binary framing protocol: 텍스트 기반인 HTTP 1.1과 달리 데이터 전송이 가능하다.
  • multiplexing 지원 : 여러병렬 요청들을 하나의 연결로 보낼 수 있다. - HTTP 1.1은 한 번에 하나의 요청/응답 메시지 처리만 가능
  • Bidriectional full-duplex 통신 : 클라이언트 요청과 서버 응답을 동시에 보낼 수 있다..
  • Built-in streaming : request 들과 response들이 비동기적으로 large data set 들을 stream 하는 것을 가능하게 해준다.
  • Header 압축 : 네트워크 사용량을 줄여준다.

Protocol Buffers

  • cross-platform IDL(Interface Definition Language)을 이용해서, 개발자들은 각 microservice를 위한 service contract 를 정의하게 된다.
  • 이 contract 는 text 기반의 .proto file 로 구현된다.
  • 이 contract 가 각 서비스에 대한 method, input, output을 정의하게 된다.
  • platform 이 다른 server와 client 가 있다고 해도 양쪽에서 같은 contract file 을 사용한다.

.proto file을 protoc를 이용해서 compile 한다. 그러면 target platform 에 대한 client code 와 service code를 만들어 준다. code는 다음 내용을 가지고 있다.

  • Strongly typed objects :
    • 이 object들은 client 와 service 사이에서 공유된다.
    • service 작업들과 message를 위한 data 요소들 표현한다.
  • A strongly typed base class 는 remote gPRC service 가 상속하고, 확장할 수 있는 필수 netowrk 연결(network plubming) 을 가지고 있다.
  • A client stub : 이 stub 는 remote gRPC service 를 호출하기 위한 필수 plubing 을 포함한다.

envoy proxy server

browser client 를 위한 gRPC의 javascript 구현이 gRPC-Web 이다. gRPC-web client 들은 gRPC service들에 접근할 때 Envoy(proxy)를 이용해서 연결하게 된다

envoy 가 필요한 이유:

  • 브라우저에서 HTTP/1.1 request 를 보내면 그것을 받아서 gRPC request 들로 변환해서 이것을 gRPC service server 로 넘겨주고, 다시 이 서버에서 오는 응답을 client 에게 다시 HTTP/1.1 로 변환해서 넘겨주는 역할을 하게 된다.

envoy proxy server가 web browser에서 보내는 gRPC 요청을 받아서 gRPC server로 넘겨준다.

예시

Reference

  1. gRPC | Microsoft Learn
  2. Quick start | Web | gRPC
  3. gRPC Web Example | Vinsguru

댓글 없음:

댓글 쓰기