Post

HTTP와 RPC(feat. gRPC)

웹에서 자주 사용되는 통신 프로토콜인 HTTP, RPC 그리고 gRPC를 비교해보며 알아보자.

HTTP (Hypertext Transfer Protocol)

HTTP는 웹에서 데이터를 주고받기 위한 프로토콜이다. 주로 웹 브라우저와 웹 서버 간의 통신에 사용된다.

특징

  • 단방향 통신
  • 웹에서 가장 많이 사용되는 프로토콜이다.
  • 요청-응답 방식으로 동작하며, 클라이언트가 서버에 요청을 보내고, 서버가 응답을 반환한다.
  • 주로 웹 페이지, 이미지, 동영상 등의 리소스를 전송하는 데 사용된다.
  • 다양한 메서드 (GET, POST, PUT, DELETE 등) 방식을 지원한다.

용도

  • 웹 애플리케이션, API 서버, RESTful API 등에서 주로 사용된다.

RPC (Remote Procedure Call)

RPC는 원격 프로시저 호출을 위한 프로토콜이다. 클라이언트가 서버의 메서드를 호출하여 원격에서 코드를 실행할 수 있다.

특징

  • 단방향, 양방향 통신 모두 지원
  • 원격 프로시저 호출을 위한 프로토콜이다.
  • 원격 함수를 직접 호출하는 간편한 방식으로 동작한다.
  • 주로 서버 간의 통신에 사용되며, 데이터를 직렬화하여 전송한다.
  • 다양한 RPC 프로토콜(RMI, SOAP, gRPC 등)이 존재한다.

용도

  • IoT, 분산 시스템, 마이크로서비스 아키텍처, 데이터베이스 연동 등에서 활용된다.

gRPC

gRPCGoogle에서 개발한 RPC 프레임워크로, HTTP/2 기반의 프로토콜 버퍼를 사용하여 효율적인 통신을 지원한다.

특징

  • 단방향, 양방향 통신 모두 지원
  • 이진 프로토콜 버퍼(Protobuf)를 사용하여 효율적인 데이터 직렬화를 지원한다.
  • HTTP/2를 기반으로 하여 멀티플렉싱, 효율적인 프레이밍, 압축 등을 제공한다.
  • 코드 생성을 통해 클라이언트와 서버 간의 강력한 형식의 통신을 가능하게 한다.

용도

  • 마이크로서비스 서버, 고성능 스트리밍 서버, 다중 언어 환경, 네트워크 제한 환경 등에서 자주 활용된다.

HTTP vs RPC vs gRPC

구분HTTPRPCgRPC
특징간단하고 가벼운, 다양한 리소스 지원로컬 함수 호출처럼 간편한 원격 함수 호출높은 성능, 스트리밍 기능 지원, 마이크로서비스 환경에 적합
장점웹에서 가장 많이 사용되며 간단한 구현방식함수 호출 방식으로 효율적인 통신 및 개발 편의성 향상HTTP/2 기반 및 Protobuf 사용으로 성능적인 이점, 스트리밍 지원
단점성능 개선 제약, 스트리밍 기능 부족프로토콜 종류에 따라 호환성 문제 발생 가능, 추가적인 설정 필요HTTP보다 복잡한 설정, Protobuf 사용 숙련 필요
용도웹 서버, API 서버, 콘텐츠 전송 서버분산 시스템, 마이크로서비스 아키텍처, 게임 서버마이크로서비스 서버, 고성능 스트리밍 서버, 데이터 처리 서버
This post is licensed under CC BY 4.0 by the author.