gRPC gRPC는 구글이 개발한 오픈소스 원격 프로시저 호출(Remote Procedure Call, RPC) 프레임워크이다. HTTP/2 기반의 전송 계층을 사용하며, 인터페이스 정의는 프로토콜 버퍼(Protocol Buffers, protobuf) 형식으로 작성한다. 이를 통해 서비스 간 호출 시 효율적인 바이너리 직렬화와 다중 스트리밍, 흐름 제어, 헤더 압축 등을 제공한다.
주요 특징
- HTTP/2 기반
- 다중 요청 multiplexing, 서버 푸시, 흐름 제어 등 HTTP/2의 기능을 활용한다.
- 프로토콜 버퍼
- 서비스 인터페이스와 메시지 형식을
.proto파일에 정의하고, 이를 자동으로 코드 스텁으로 변환한다.
- 서비스 인터페이스와 메시지 형식을
- 다양한 언어 지원
- 공식적으로 Go, C++, Java, Python, Ruby, C#, Node.js, PHP, Objective‑C 등 다수의 언어를 지원한다.
- 양방향 스트리밍
- 단일 RPC 호출 내에서 클라이언트와 서버가 각각 독립적으로 스트림을 전송할 수 있다.
역사
- 2001~2006: 구글 내부에서 “Google RPC”라는 이름으로 개발이 진행되었다.
- 2015: 구글이 gRPC를 오픈소스로 공개하고, Apache License 2.0 하에 배포하였다.
- 2016: Cloud Native Computing Foundation(CNCF)에 프로젝트가 인큐베이팅 되었으며, 이후 CNCF의 프로젝트로 채택되었다.
사용 사례
- 마이크로서비스 아키텍처에서 서비스 간 통신
- 모바일 및 웹 클라이언트와 백엔드 서버 간의 고성능 API
- 실시간 데이터 스트리밍 (예: IoT, 영상 전송)
- 다중 데이터 센터 혹은 클라우드 간 연동
기술 생태계
- gRPC‑Core: C 기반의 핵심 라이브러리
- gRPC‑Python, gRPC‑Java, gRPC‑Go 등 언어별 구현
- gRPC‑Gateway: HTTP/JSON API를 자동으로 생성해 RESTful 인터페이스 제공
- Envoy, Linkerd 등 서비스 메쉬와 연동 가능
표준화 및 커뮤니티
- 현재 CNCF에서 관리되며, 정기적인 릴리즈와 보안 패치를 제공한다.
- GitHub(https://github.com/grpc/grpc) 저장소가 주요 개발 허브이며, 활발한 커뮤니티 기여가 이루어진다.
이상은 gRPC에 대한 객관적이고 확인된 정보이며, 최신 공식 문서 및 공개된 자료에 근거한다.