구글에서 개발한 RPC(Remote Procedure Call)로, 모든 환경에서 실행 할 수 있는 오픈소스 고성능 RPC Framework.
RPC에 대해서는 앞서 게시한 게시글을 참고하자.
https://wish-place.tistory.com/4
RPC(Remote Procedure Call)란?
RPC란?별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 함수/procedure를 실행하는 프로세스간 통신 기술= 다른 원격 서버에 있는 함수를 호출하여 실행한다 * 참고사항 - 함수와 프로시져
wish-place.tistory.com
Protocol buffer
gRPC는 IDL (Interface Definition Language) 로 Protocol Buffer(프로토콜 버퍼)를 사용한다.
직렬화(serialization)을 위한 프로토콜로, 어떤 언어나 플랫폼에서도 구조화된 데이터를 전환하게 해주는 방법이다.
직렬화의 대표적 예는 Json과 XML이 있다. XML보다 작고 빠르고 간단하다.
protocol buffer로 작업시에는 여러 프로그래밍 언어를 지원하기 때문에 특정 언어에 종속성이 없는 형태로 .proto 파일에서 데이터 구조를 정의 한다.
데이터는 'name - key' pair인 메시지로 구성된다.
protoc 컴파일러로 해당 파일을 컴파일 하여 각 언어에 맞는 형태의 데이터 클래스를 생성한다.
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply) {}
}
messages HelloRequest {
string name = 1
}
messages HelloReply {
string message = 1
}
장점
높은 생산성
HTTP/2 기반 양방향 스트리밍serialization된 바이트 스트림으로 통신하여 JSON보다 더 빠르고 가볍다.
다양한 언어를 기반으로 만들 수 있으며 유지보수가 쉽다.
단점
메세지가 바이너리로 전달되어 테스트가 어렵다
메세지 구조가 많이 변하면 안정성 확보가 어렵다
브라우저와 서버간 gRPC 통신 지원되지 않음
다음 포스트는 golang 서버와 c++ 클라이언트 간 통신 예제를 다뤄보겠다.
'개발(프로그래밍) > gRPC' 카테고리의 다른 글
RPC(Remote Procedure Call)란? (0) | 2024.12.18 |
---|---|
IPC란? (Inter Process Communication) (0) | 2024.12.03 |