WIPIVERSE

gRPC

gRPC gRPC는 구글이 개발한 오픈소스 원격 프로시저 호출(Remote Procedure Call, RPC) 프레임워크이다. HTTP/2 기반의 전송 계층을 사용하며, 인터페이스 정의는 프로토콜 버퍼(Protocol Buffers, protobuf) 형식으로 작성한다. 이를 통해 서비스 간 호출 시 효율적인 바이너리 직렬화와 다중 스트리밍, 흐름 제어, 헤더 압축 등을 제공한다.

주요 특징

  1. HTTP/2 기반
    • 다중 요청 multiplexing, 서버 푸시, 흐름 제어 등 HTTP/2의 기능을 활용한다.
  2. 프로토콜 버퍼
    • 서비스 인터페이스와 메시지 형식을 .proto 파일에 정의하고, 이를 자동으로 코드 스텁으로 변환한다.
  3. 다양한 언어 지원
    • 공식적으로 Go, C++, Java, Python, Ruby, C#, Node.js, PHP, Objective‑C 등 다수의 언어를 지원한다.
  4. 양방향 스트리밍
    • 단일 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에 대한 객관적이고 확인된 정보이며, 최신 공식 문서 및 공개된 자료에 근거한다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기