본문 바로가기

네트워크 통신/grpc

1. grpc 란

1. 정의

1) 구글에서 개발한 rpc(remote procedure call) 시스템으로 tcp/ip, http2.0 프로토콜을 사용한다. 여기서 rpc란 다른 서버의 서비스를 마치 내부 서비스 콜 하듯 쉽게 콜을 하는 프로토콜이다.

 

2) 클라 서버간에 통신 데이터 규약을 protocol buffer(protobuf)를 이용해 정의한다. protocol buffer는 .proto 파일에 key-value 형태로 정의하고 protoc로 컴파일한다.

message Person {

    string name = 1;

    int32 id = 2;

    bool has_ponycopter = 3;

}

 

2. 장점

1) grpc는 직렬화된 바이트 스트림으로 통신하므로 json 통신보다 통신 속도가 빠르다.

 

3. 단점

1) json과 다르게 전송된 protobuf 내용은 사람이 읽기 힘든 형태로 되어 있다.

2) 아직 브라우저저와 서버간의 통신은 지원하지 않는다.

 

4. rest vs grpc

1) 통신 메세지 규약

    - grpc는 protobuf를 사용하고 rest는 주로 json을 사용

    - protobuf는 데이터를 압축한 이진파일 포멧이고 json은 텍스트 파일이기 때문에 속도면에서는 protobuf가 우세하지만 개발자가 메세지를 보기에는 json형태가 보기 좋음

2) http method

    - rest와 다르게 grpc는 http method를 사용하지 않음

3) 통신 방법

    - rest는 1개 request -> 1개 response 만 가능

    - grpc는 4가지 케이스 가능

        - 1개 request -> 1개 response

        - 1개 request -> n개 response

        - n개 request -> 1개 response

        - n개 request -> n개 response

4) 클라 <> 서버 간 커뮤니케이션

    - rest는 문서화를 직접 하거나 swagger같은 third party 툴을 사용해야 함

    - .proto file을 서로 공유하기 때문에 따로 문서화가 필요 없음

 

 


참조.

https://blog.banksalad.com/tech/production-ready-grpc-in-golang/?gclid=CjwKCAjwx6WDBhBQEiwA_dP8rUcU3_nXItk899J5F9KSZvdNwg6grEAtyflYO0Vt9CI3MIZS85RmcRoCCYMQAvD_BwE#%EC%99%9C-grpc%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%EA%B0%80

https://chacha95.github.io/2020-06-15-gRPC1/

https://code.tutsplus.com/tutorials/rest-vs-grpc-battle-of-the-apis--cms-30711

'네트워크 통신 > grpc' 카테고리의 다른 글

4. grpc의 여러가지 통신 기법  (0) 2021.04.25
3. spring boot에서 grpc 사용하기  (379) 2021.04.20
2. proto3 언어  (0) 2021.04.11