
난세의 영웅 gRPC
두줄요약
gRPC의 Protocol Buffers, HTTP/2, 이벤트 기반 스트리밍 구조를 Spring Boot에 적용하는 방법을 설명했습니다. 통신 코드 자동화로 비즈니스 로직에 집중할 수 있지만, 낮은 트래픽에서는 성능 이득이 제한적이었습니다.
문제 상황
- MSA 확대로 서비스 간 REST 호출 중첩, 통신 횟수·데이터 종류 증가
- JSON 변환·직렬화, 스레드 블로킹, REST 명세 공유에 따른 리소스·개발 시간 낭비
구조와 흐름
- Protocol Buffers IDL 기반 메시지·서비스 인터페이스 정의와 소스 코드 자동 생성
- HTTP/2 및 이벤트 기반 동작, Unary·클라이언트/서버·양방향 스트리밍 4가지 통신 방식
- Spring Boot에서 Netty 기반 gRPC 서버 Bean 구성, 애플리케이션 시작·종료와 서버 생명주기 연동
선택 이유
- 이기종 언어·환경 간 바이너리 통신 지원과 반복 통신 코드 자동화
- 클라이언트의 생성 인터페이스 호출 및 서버의 비즈니스 로직 구현 중심 개발 방식
트레이드오프
- 이미지 벡터 조회 서비스의 낮은 요청량으로 성능상 큰 이득 부재
- EC2 환경에서 로드 밸런서의 gRPC 프로토콜 처리 수동 설정 필요
- 서비스 간 통신량이 많은 환경에서 자동 생성과 효율적 스트리밍의 높은 가치


