- Published on
gRPC
- Authors

- Name
- JaeHyeok CHOI
- none
gRPC(google Remote Procedure Call) 란?
gRPC는 HTTP/2 기반의 RPC(Remote Procedure Call) 프레임워크로, HTTP/2의 이점과 동시에 gRPC의 특성을 결합한 프로토콜입니다.
우선 RPC(Remote Procedure Call) 란?
RPC(Remote Procedure Call)는 원격 프로시저 호출의 약자로, 클라이언트가 서버의 함수를 호출하는 방식을 말합니다.
RPC에서 클라이언트-서버 통신은 클라이언트 API 요청이 로컬 작업이거나 요청이 내부 서버 코드인 것처럼 작동합니다.
RPC에서 클라이언트는 서버의 프로세스로 요청을 전송하고, 이 프로세스는 항상 원격 호출을 수신 대기 중인 상태로 유지되며, 요청에는 직접적으로 호출할 서버 함수와 전달할 파라미터가 포함됩니다. RPC API는 HTTP,TCP 또는 UDP와 같은 프로토콜을 기본 데이터 교환 메커니즘으로 사용합니다.
gRPC와 RPC의 차이는??
gRPC는 몇 가지 최적화와 함께 기존 RPC를 구현하는 시스템입니다.
예를 들어 gRPC는 데이터 전송에 Protocol Buffer 와 HTTP 2를 사용합니다.
또한 개발자의 데이터 교환 메커니즘을 추상화하여, 널리 사용되는 또 다른 RPC API 구현인 OpenAPI를 사용할 때에 개발자가 RPC 개념을 HTTP 프로토콜에 매핑해줘야 했던 것을 gRPC가 기본 HTTP 통신을 추상화 합니다.
gRPC vs REST
우선 둘 다 API 설계에 사용되는 방법들입니다.
유사점
데이터 교환 메커니즘 클라이언트-서버 통신은 클라이언트 API 요청이 로컬 작업이거나 요청이 내부 서버 코드인 것처럼 작동합니다.
HTTP 기반 통신 둘 다 웹에서 선호되는 효율적인 통신 프로토콜인 HTTP 요청-응답 메커니즘을 통해 데이터를 전달하지만, gRPC는 이 메커니즘이 개발자에게 보이지 않고 REST에서는 명확합니다.
구현 유연성 다양한 프로그래밍 언어로 구현이 가능합니다.
확장 가능한 분산 시스템에 대한 적합성
- 비동기식 통신
- 무상태 설계 즉, 개발자는 gRPC 및 REST를 사용해 동시 요청 수가 많은 내결함성 시스템을 구축할 수 있습니다. 이를 통해 여러 클라이언트가 있는 확장 가능한 분산 시스템을 구축할 수 있습니다.
차이점
gRPC와 REST의 주요 차이점은 데이터 교환 방식입니다.
| 프로토콜 | REST | gRPC |
|---|---|---|
| 프로토콜 | HTTP 프로토콜을 사용하여 데이터를 교환합니다. | HTTP/2를 사용하여 데이터를 교환합니다. |
| 데이터 교환 방식 | JSON, XML, YAML 등 | Protocol Buffer |
그리고 gRPC는 HTTP/2의 이점인 헤더 압축, 이진 프레임, 향후 HTTP/3 지원 등이 기본으로 포함됩니다.
gRPC와 REST의 사용 시기
gRPC
- 동시 요청 수가 많은 내결함성 시스템
- 고성능 시스템
- 실시간 또는 스트리밍 애플리케이션
gRPC API는 항상 HTTP 2를 사용하고, REST는 HTTP 1.1를 사용합니다. HTTP 2는 HTTP 1.1과 달리 범용 브라우저를 지원하지 않으므로, 이 제한된 브라우저 지원으로 인해 웹 애플리케이션을 지원하고자하는 개발제에게 gRPC는 그다지 매력적이지 않을 수 있습니다.
출처 https://aws.amazon.com/ko/compare/the-difference-between-grpc-and-rest/