반응형
Microservices Communication
성능이냐 생산성이냐,
gRPC vs REST API 선택의 기준
안녕하세요, code-resting입니다. 마이크로서비스(MSA) 환경에서 서비스 간 통신이 잦아질수록 네트워크 지연 시간(Latency)은 시스템 전체 성능의 병목이 됩니다. 우리는 흔히 REST API에 익숙해져 있지만, 대규모 트래픽을 처리하는 넷플릭스나 구글은 왜 내부적으로 gRPC를 사용할까요? 오늘 그 이유를 파헤쳐 봅니다.
1. 무엇이 다른가? (JSON vs Protobuf)
REST는 텍스트 기반의 JSON을 사용하고, gRPC는 바이너리 기반의 Protocol Buffers(Protobuf)를 사용합니다.
- 🚀 Payload 크기: 바이너리 형식인 Protobuf는 JSON보다 크기가 훨씬 작아 네트워크 대역폭을 절약합니다.
- ⚡ 직렬화 속도: 텍스트를 파싱할 필요가 없는 gRPC가 REST보다 수 배 이상 빠릅니다.
2. 전송 프로토콜의 차이
gRPC가 강력한 이유는 HTTP/2를 기반으로 하기 때문입니다.
- Multiplexing: 하나의 커넥션으로 여러 개의 요청을 동시에 보낼 수 있습니다. (HOL Blocking 해소)
- Server Push: 클라이언트가 요청하지 않아도 서버가 데이터를 보낼 수 있습니다.
- Bi-directional Streaming: 실시간 채팅이나 데이터 스트리밍에 최적화되어 있습니다.
3. REST vs gRPC 한눈에 비교
| 항목 | REST API | gRPC |
|---|---|---|
| 프로토콜 | HTTP/1.1 (주로) | HTTP/2 |
| 페이로드 | JSON (Text) | Protobuf (Binary) |
| 브라우저 지원 | 매우 우수 | 제한적 (gRPC-Web 필요) |
| 생산성 | 매우 높음 | 낮음 (.proto 관리 필요) |
4. 그래서 무엇을 써야 할까요?
✅ REST API 추천: 외부 공개용 API, 브라우저 직접 호출, 단순한 CRUD가 위주인 서비스
✅ gRPC 추천: MSA 간 내부 통신, 성능이 최우선인 실시간 시스템, 다국어(Polyglot) 환경에서의 타입 안전성이 중요한 프로젝트
💡 결론
무조건 gRPC가 정답은 아닙니다. 하지만 2026년 백엔드 시장에서 '성능 최적화'를 논할 때 gRPC는 빠질 수 없는 선택지입니다. 서비스의 특성을 고려하여 하이브리드(External: REST / Internal: gRPC) 구조를 설계해 보시기 바랍니다.
반응형
'스프링 > WebClient' 카테고리의 다른 글
| JdbcTemplate (0) | 2021.06.04 |
|---|---|
| WebClient & WebClient vs RestTemplate (0) | 2021.05.20 |
댓글