본문 바로가기
개발/gRPC

[gRPC] gRPC란?

by 돌돌블로거 2024. 11. 13.

1.gRPC란 무엇인가?

gRPC는 Google에서 개발한 오픈 소스 원격 프로시저 호출(Remote Procedure Call, RPC) 프레임워크입니다. 분산 시스템에서 서비스 간의 통신을 간편하고 효율적으로 구현할 수 있도록 설계되었습니다. HTTP/2를 기반으로 하며, 프로토콜 버퍼(Protocol Buffers)를 사용하여 직렬화합니다.

1.1 주요 특징

  • 다양한 언어 지원(C++, Java, Python, Go 등)
  • 양방향 스트리밍 지원
  • 효율적인 이진 직렬화(Protocol Buffers)
  • 플러그인 방식의 인증 및 로드 밸런싱 지원

 

2. gRPC의 주요 특징

2.1 효율성

프로토콜 버퍼를 통한 이진 직렬화를 사용하여 데이터 크기를 최소화하고, 네트워크 대역폭을 효율적으로 활용합니다.

2.2 다중 언어 지원

서버와 클라이언트가 서로 다른 언어로 작성되어도 통신이 가능합니다.

2.3 스트리밍 지원

  • Unary RPC: 일반적인 요청-응답 방식.
  • Server Streaming RPC: 클라이언트의 요청 하나에 대해 서버가 여러 개의 응답을 스트림으로 보냄.
  • Client Streaming RPC: 클라이언트가 여러 개의 요청을 스트림으로 보내고, 서버는 하나의 응답을 반환.
  • Bidirectional Streaming RPC: 클라이언트와 서버가 서로 스트림을 통해 여러 메시지를 주고받음.

2.4 HTTP/2 기반

HTTP/2의 멀티플렉싱, 헤더 압축, 양방향 스트리밍 등의 이점을 활용합니다.

 

3. gRPC의 작동 원리

  • 서비스 정의: 프로토콜 버퍼 파일(.proto)에 서비스와 메시지를 정의합니다.
  • 코드 생성: protoc 컴파일러를 사용하여 서버와 클라이언트에서 사용할 코드를 생성합니다.
  • 서버 구현: 생성된 베이스 클래스를 상속받아 서비스 로직을 구현합니다.
  • 클라이언트 구현: 생성된 스텁을 사용하여 서버와 통신합니다.
반응형