목록 보기
난세의 영웅 gRPC
백엔드

난세의 영웅 gRPC

딜리셔스
딜리셔스
2022년 7월 11일

두줄요약

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 프로토콜 처리 수동 설정 필요
  • 서비스 간 통신량이 많은 환경에서 자동 생성과 효율적 스트리밍의 높은 가치

다음 읽기

#Spring Boot 주제를 다룬 다른 회사 글

mapstruct를 활용해 spring boot에서 gRPC 쉽게 사용하기

Endpoint API와 Recommend API 간 호출 지연을 줄이기 위해 gRPC를 도입하고, DTO와 gRPC message 매핑을 MapStruct로 단순화했습니다. Spring Boot 환경에서 proto와 Mapper를 구성해 반복 변환 코드를 줄이는 방법을 소개했습니다.

what's min
what's min
백엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...