hobokai 님의 블로그

gRPC 강점 본문

Backend

gRPC 강점

hobokai 2025. 9. 4. 16:58

gRPC의 주요 강점들:

  1. 성능과 속도
  - HTTP/2 기반으로 빠른 바이너리 통신
  - Protocol Buffers 직렬화로 JSON보다 작고 빠름
  - 스트리밍 지원 (단방향, 양방향)
  - 멀티플렉싱으로 단일 연결에서 여러 요청 처리

  2. 강력한 타입 시스템
  - .proto 파일로 스키마 정의
  - 컴파일 타임 타입 검증
  - 자동 코드 생성 (다양한 언어)

  3. 언어 중립성
  - 10+ 프로그래밍 언어 지원
  - 언어 간 일관된 API

  4. 고급 기능들
  - 로드 밸런싱, 타임아웃, 재시도 내장
  - 인증, 압축, 메타데이터 지원
  - 스트림 기반 실시간 통신

  속도 비교 예시:
  - JSON REST API: ~100-200ms
  - gRPC: ~20-50ms (같은 데이터)

  주요 사용 사례:
  - 마이크로서비스 간 통신
  - 실시간 시스템
  - 모바일/IoT 클라이언트
  - 고성능이 중요한 백엔드 시스템

  REST API보다 빠르지만, 설정 복잡도와 HTTP 프록시 호환성 등은 트레이드오프 대상입니다..

 

다음과 같은 문제들..

 

1. HTTP/2 지원 문제
  클라이언트 ↔ 프록시 ↔ gRPC 서버
  - gRPC는 HTTP/2 필수
  - 많은 기존 프록시들이 HTTP/1.1만 지원
  - HTTP/2를 지원하지 않는 프록시에서 연결 실패

  2. 바이너리 데이터 처리
  # REST API (텍스트)
  GET /api/users HTTP/1.1
  Content-Type: application/json

  # gRPC (바이너리)
  POST /service.UserService/GetUser HTTP/2
  Content-Type: application/grpc
  [바이너리 protobuf 데이터]
  - 프록시가 바이너리 데이터를 잘못 해석
  - 캐싱, 로깅이 어려움

  3. 로드밸런서/게이트웨이 문제
  # Nginx 설정 예시
  upstream grpc_backend {
      server backend1:9090;  # gRPC 포트
      server backend2:9090;
  }

  server {
      listen 443 ssl http2;  # HTTP/2 필수!
      location / {
          grpc_pass grpc://grpc_backend;  # 특별한 설정 필요
      }
  }

  4. 방화벽/보안 장비
  - HTTP/1.1 트래픽만 검사하는 장비
  - gRPC 트래픽을 차단하거나 오해석

  5. 디버깅의 어려움
  # REST API는 쉽게 확인 가능
  curl -X GET https://api.example.com/users

  # gRPC는 특별한 도구 필요
  grpcurl -plaintext localhost:9090 service.UserService/GetUser

  해결책:
  - gRPC-Web (브라우저 호환)
  - HTTP/2 지원 프록시 사용 (Envoy, 최신 Nginx)
  - gRPC-Gateway (REST API 변환)

 

 REST API는 기존 웹 인프라와 "그냥 잘 동작"하지만, gRPC는 인프라 업그레이드가 필요합니다.