지노윈 2024. 7. 25. 20:46
반응형

 

gRPC는 Google에서 제작한 고성능, 범용 오픈 소스 원격 프로시저 호출(RPC) 프레임워크로, 프로토콜 버퍼(Protocol Buffers)를 인터페이스 정의 언어(IDL)와 기본 메시지 교환 형식으로 사용합니다.

gRPC를 통해 클라이언트 애플리케이션은 마치 로컬 객체인 것처럼 다른 머신의 서버 애플리케이션에서 메서드를 직접 호출할 수 있습니다. 이는 분산 애플리케이션과 서비스를 더욱 쉽게 만들 수 있게 합니다. 많은 RPC 시스템과 마찬가지로 gRPC는 서비스를 정의하고 매개변수와 반환 유형으로 원격으로 호출할 수 있는 메서드를 지정하는 아이디어를 기반으로 합니다.

gRPC 서버 사이드

서버는 정의된 인터페이스를 구현하며, 클라이언트 호출을 처리하기 위해 gRPC 서버를 실행합니다.

gRPC 클라이언트 사이드

클라이언트는 서버와 동일한 메서드를 제공하는 Stub(일부 언어에서는 단순히 클라이언트라고 함)을 가집니다. 이 Stub은 서버의 메서드를 호출하는 역할을 합니다.

gRPC 클라이언트와 서버는 다양한 환경에서 실행되고 서로 통신할 수 있습니다. 예를 들어, C++로 서버를 구현하고 Ruby나 Java로 클라이언트를 구현하여 서로 통신할 수 있습니다.

 

 

Protobuf와 gRPC

gRPC는 Protobuf를 사용하여 데이터를 직렬화하고 전송합니다. 따라서 gRPC를 효과적으로 사용하기 위해서는 Protobuf에 대한 이해가 필요합니다. Protobuf는 gRPC의 성능과 효율성을 극대화하는 데 중요한 역할을 하며, 데이터의 구조를 정의하고 이를 직렬화하는 데 사용됩니다.

gRPC의 장점

  1. 고성능: gRPC는 HTTP/2를 기반으로 하여 높은 성능을 제공합니다. 이는 낮은 지연 시간과 높은 처리량을 가능하게 합니다.
  2. 다양한 언어 지원: gRPC는 C++, Java, Python, Go 등 다양한 프로그래밍 언어를 지원합니다.
  3. 양방향 스트리밍: gRPC는 클라이언트와 서버 간의 양방향 스트리밍을 지원하여 실시간 데이터 전송이 가능합니다.
  4. 자동 코드 생성: gRPC는 프로토콜 버퍼를 사용하여 자동으로 클라이언트 및 서버 코드를 생성합니다.

gRPC는 현대 애플리케이션에서 요구하는 고성능, 멀티 언어 지원, 스트리밍 기능 등을 제공하여 분산 시스템 개발을 크게 단순화합니다. 이를 통해 개발자는 안정적이고 효율적인 분산 애플리케이션을 쉽게 구축할 수 있습니다.

 

gRPC는 프로토콜 버퍼를 인터페이스 정의 언어(IDL)와 기저 메시지 교환 형식으로 사용할 수 있습니다.

 

gRPC에서 클라이언트 애플리케이션은 마치 로컬 객체인 것처럼 다른 머신의 서버 애플리케이션에서 메서드를 직접 호출할 수 있으므로 분산 애플리케이션과 서비스를 더 쉽게 만들 수 있습니다.