본문 바로가기

개발자의 logs

gRPC 프로토콜로 통신하는 서버 프로그램은 API 서버인가? 본문

개발 공부지식/*개발 공부*

gRPC 프로토콜로 통신하는 서버 프로그램은 API 서버인가?

주인장v 2022. 6. 2. 13:21

 

RPC(Remote Communication Mechanism)

RPC(원격 프로시저 호출)는 한 프로그램이 네트워크의 세부 정보를 이해하지 않고도 네트워크 안의 다른 컴퓨터에 있는 프로그램에서 서비스를 요청하는 프로토콜이다. RPC는 client-server 모델을 사용한다. 클라이언트에서 서비스를 요청(function call)하면, 서버에서 서비스를 제공한다.

 

 

gRPC

gRPC는 Google에서 개발한 RPC(Remote Procedure Call) 시스템이다. 전송을 위해 TCP/IP 프로토콜과 HTTP 2.0 프로토콜을 사용하고 IDL(Interface Definition language)로 protocol buffer를 사용한다.

 

 

비교를 위한 HTTP 지식

HTTP 프로토콜

HTTP(Hypertext Transfer Protocol)는 웹에서 쓰이는 통신 프로토콜이다. 프로토콜이란 상호간에 정의한 규칙을 의미한다.

HTTP 프로토콜은 TCP/IP 프로토콜 위의 레이어(Application layer)에서 동작합니다. 각 프로토콜 별 layer 계층은 다음과 같이 간략히 표현된다.

 

 

 

 

HTTP 프로토콜은 stateless 프로토콜이다.

여기서 상태가 없다는 의미는 데이터를 주고 받기 위한 각각의 데이터 요청이 서로 독립적으로 관리된다는 의미이며, 이전 데이터 요청과 다음 데이터 요청이 서로 관련이 없다는 말을 뜻한다.

HTTP는 기본적으로 서버-클라이언트 구조를 따른다.

이 구조에서, HTTP 프로토콜로 데이터를 주고받기 위해서는 아래와 같이 Request를 보내고 Response를 받아야 한다!

 

 

HTTP/HTTPS 프로토콜이 아닌 gRPC 프로토콜로 통신하는 서버 프로그램은

API 서버라고 부를 수 있을까요?

 

 

gRPG 프로토콜로 통신하는 서버 프로그램은 API라고 부를수 있다.

기본적으로 gRPC는 구글에서 만든 RPC 플랫폼이며 protocol buffer와 RPC를 사용한다.


Java, C++, python, Java Lite, Ruby, JavaScript 등등에서 사용가능하며,

클라이언트와 서버간 교환되는 모든 데이터를 암호화하며 HTTP보다 성능이 뛰어나며 확장이 가능한 API이다.

 

HTTP와 비교하여 gRPG는 배포된 환경이나 기능이 같다면 보내고 받을 때 효율적으로 사용가능하며,

gRPC는 TCP보다는 멀티플렉싱을 이용하여 통신한다. 멀티플렉싱은 HOL을 제거하여 사용한다.

이 둘과 gPRC의 차이는 사양차이라고 생각한다. Json을 사용 하는 HTTP API의 경우 공식적인 사양은 없으나,

gRPC는 gRPC사양이 있어 플랫폼등을 구현에 상관없이 일치하게 된다.

Comments