| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- 메시징 패턴
- 마이크로서비스
- 분산 시스템
- 메시지 브로커
- devops
- 서비스 설계
- 고가용성
- 클라우드
- kubernetes
- 모노리스 분해
- 모니터링
- 보안
- 인메모리데이터베이스
- RabbitMQ Exchange
- docker
- Kafka 클러스터
- 마이크로서비스 통신
- 마이크로서비스 운영
- 프로덕션 운영
- 컨테이너오케스트레이션
- infrastructureascode
- 이벤트 스트리밍
- 클러스터
- 세션저장소
- CI/CD
- 분산 모니터링
- Python
- ApacheBench
- 서비스 메시
- rabbitmq
- Today
- Total
hobokai 님의 블로그
gRPC 강점 본문
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는 인프라 업그레이드가 필요합니다.
'Backend' 카테고리의 다른 글
| OAuth2 & JWT 고급 활용 가이드 (0) | 2025.08.07 |
|---|---|
| Spring Boot 완전 가이드 Part 5: 운영과 모니터링 (1) | 2025.08.06 |
| Spring Boot 완전 가이드 Part 4: 데이터 액세스와 배치 (2) | 2025.08.06 |
| Spring Boot 완전 가이드 Part 3: 웹 개발과 REST API (3) | 2025.08.06 |
| Spring Boot 완전 가이드 Part 2: 설정과 자동구성 (2) | 2025.08.06 |