HTTP/2
멀티플렉싱
하나의 연결에서 여러 스트림을 처리해 내부 호출 효율을 높인다.
gRPC는 HTTP/2와 Protocol Buffers로 내부 서비스 간 호출을 강하게 타입화한다. NestJS에서는 proto 계약이 서버 핸들러와 클라이언트 프록시를 동시에 묶는다.
HTTP/2
하나의 연결에서 여러 스트림을 처리해 내부 호출 효율을 높인다.
protobuf
필드 타입과 번호가 서비스 사이 데이터 모양을 고정한다.
stub
클라이언트는 proto의 서비스 이름으로 타입화된 메서드를 얻는다.
status
not found, deadline exceeded 같은 상태를 호출자 정책으로 바꾼다.
문서와 구현이 따로 움직이면 소비자 오류가 늦게 발견된다.
서비스, 메서드, 메시지 타입이 코드 생성 기준으로 고정된다.
브라우저 친화적이고 디버깅이 쉽지만 payload가 상대적으로 크다.
이진 직렬화와 HTTP/2 스트림으로 내부 통신 비용을 줄인다.
공개 API, 브라우저 직접 호출, 간단한 통합에는 REST가 편하다.
서비스 간 고성능 호출, 폴리글랏 팀, streaming 요구에 잘 맞는다.