gRPC를 알아보자

DeokwonPark·2023년 1월 30일
1

gRPC란?

gRPC는 Google에서 개발한 RPC(Remote Procedure Call)시스템입니다. 전송을 위해 TCP/IP 프로토콜과 HTTP 2.0 프로토콜을 사용하고 IDL(Interface Definition language)로 protocol buffer를 사용합니다.

◆ 지원 언어 : C++, Java, Python, Ruby, Node.js, C#, Go, PHP, Objective-C 등등

RPC - 클라이언트, 서버간의 통신에서 상세한 정보는 감추고 로직에 집중

- caller/callee
개발자가 비지니스 로직을 생성하고 정의된 IDL로 작성하여 stub 을 호출

- Stub
Stub compiler 가 IDL 파일을 읽어 원하는 language 로 생성하고 파라미터를 마샬링/언마샬링 처리하여 RPC 프로토콜로 전달
마샬링 (한 객체의 메모리에서 표현방식을 저장 또는 전송에 적합한 다른 데이터 형식으로 변환하는 과정)

IDL - 서버와 클라이언트간에 정보를 저장하는 규칙이다.

protocol buffer - XML보다 구조화된 데이터를 직렬화 하는데 있어 더 많은 장점을 가지는 IDL

  • 간단하다
  • 파일 크기가 3에서 10배 정도 작다
  • 속도가 20에서 100배 정도 빠르다
  • XML보다 가독성이 좋고 명시적이다

GRPC와 REST의 차이점 및 특징

  • gRPC는 HTTP2방식을 사용한다.(REST는 1.1방식)
    http/2에서는 한 connection으로 동시에 여러 개 메시지를 주고 받으며, header를 압축하여 중복 제거 후 전달하기에 version1에 비해 훨씬 효율적
  • gRPC는 protocol buffer data format을 사용하고, REST는 JSON 데이터 사용

gRPC에서 IDL로 정의하면 높은 성능을 보장하는 서비스와 메세지에 대한 소스코드를 각 언어에 맞게 자동 생성된다. 따라서 언어에 구애받지 않고 의사소통이 원활해 진다.

gRPC 코드 생성

.proto파일을 정의해 각 프로그래밍 언어별 코드를 생성할 수 있다.

  • .proto파일 정의

(https://tech.buzzvil.com/handbook/grpc/)
(https://devjin-blog.com/golang-grpc-server-1/)

0개의 댓글