gRPC는 HTTP/2와 Protocol Buffers(Protobuf) 두 가지 핵심 기술을 기반으로 합니다.
-
HTTP/2: 단일 연결 다중화, HTTP 헤더 압축, 서버 푸시, 이진 전송 등 개선된 기능을 통해 통신 효율을 극대화합니다.
-
Protocol Buffers (Protobuf): 언어 및 아키텍처 중립적인 직렬화 메커니즘으로, 강력한 타입 검사와 이전/이후 버전 호환성을 제공합니다.
.proto파일로 메시지와 서비스 인터페이스를 정의하고,protoc컴파일러로 서버/클라이언트용 클래스를 자동 생성합니다.
Ruby on Rails 통합 과정:
-
Proto 파일 정의: 데이터 구조를 정의합니다.
-
코드 생성:
grpc_tools_ruby_protoc명령어로 Ruby 클래스(메시지 및 서비스)를 생성합니다. -
Rails 설정:
Gemfile에grpc및grpc-tools젬을 추가합니다. -
gRPC 서버 초기화: Rails 이니셜라이저에서
GRPC::RpcServer.new로 서버 인스턴스를 생성하고 포트를 설정합니다. -
서비스 구현: 생성된 스텁 클래스를 상속받아 비즈니스 로직을 구현하고, 응답 객체를 반환합니다.
-
서비스 등록:
server.handle(OrderService)로 구현된 서비스를 gRPC 서버에 등록합니다. -
클라이언트 통신:
grpcurl등으로 통신합니다.
Protobuf 호환성 규칙:
-
필드 번호 변경 및 재사용 금지.
-
새 필드는 고유 번호 사용.
-
일부 데이터 타입(예:
int32↔int64)은 호환 가능합니다. 이러한 규칙으로 이전/이후 버전 호환성을 유지합니다.