본문 바로가기

네트워크

gRPC

gRPC는 구글에서 만든 RPC 프레임워크 이다.

RPC는 Remote Procedure Call 이고, 이름에서 알 수 있듯, 다른 컴퓨터에 있는 어떤 기능을 자기 기능인 것 처럼 실행할 수 있도록 하는 프로토콜이다.

 

RPC는 언어 독립적이므로 서로 다른 프로그래밍 언어를 사용하는 서버와 클라이언트 사이에서도 사용될 수 있다는 점이 특징이다.

 

gRPC 서버 클라 코드

 

stub : 해당 객체는 서버의 부두 인형 같은 역할

자기 컴퓨터에 있는 이 부두 인형에게 시키는 일은 곧 원격의 서버에게 시키는 일이 된다.

 

이러한 특성 때문에 개발자는 서버나 통신과정에 대해 하나하나 알아두거나 고려할 필요 없이 마치 로컬의 함수를 가져다 쓰듯 기능들을 필요에 따라 사용하는데만 집중할 수 있게 된다.

 

REST API : gRPC 비교

 

한 데이터를 찾으려고 서버에 요청을 하면 색인 번호를 담아서 서버에 요청을 하면 서버에서는 여러 정보들을 응답으로 보내준다. (JSON 형태) 하지만 같은 종류의 요청이 반복된다면 "키" 값의 중복으로 낭비되는 부분도 커질 것 이다. 

하지만 "키" 값을 없애면 어떻게 구분할 것 인가? 에 대해서 gRPC는 "Protocol Buffer"를 사용한다. 

.proto 확장자를 가진 파일은 JSON 객체에서 사용하였던 키들이 필드로 작성되어 있고, 각 필드는 색인 번호가 붙어있다.

이 것은 메세지가 어떻게 작성될지에 관한 약속으로, 서버와 클라이언트 모두에게 공유 된다.

 

프로토콜 버퍼에 장점은 단지 메세지의 키만 간소화하는 것이 아니 바이너리 형태로 직렬화 해서 전송한다.

간단하게 메세지를 압축해서 보낸다는 뜻이다.

 

gRPC의 또 다른 강점은 HTTP/2 기반이라는 점!!

RESTful API에서는 주로 사용되는 HTTP/1.1은 편지로 요청과 응답을 주고 받는 것과 같다.

즉 클라이언트가 편지들을 적어보내면 서버는 이를 하나씩 받아서 순서대로 답장을 돌려보내는 식으로 소통이 이루어진다.

반면 gRPC의 HTTP/2는 전화로 대화를 주고받는 것과 같다.

한번 통화가 연결되면 서버와 클라이언트는 양방향에서 동시에 대화를 주고받을 수 있다.

그래서 여러 메세지를 한번에 보낼 수도 있고, 순서와 상관없이 빠르게 처리해서 답을 보낼 수 있다.

 

마지막으로 gRPC는 TLS (Transport Layer Security)를 통해 데이터를 암호화해서 전송하여 다른 누군가가 데이터를 훔쳐보거나 데이터를 변경하지 못하여 안전한 통신을 보장한다.

728x90

'네트워크' 카테고리의 다른 글

게임 네트워크  (1) 2025.05.31
Lockstep Server  (2) 2025.05.26
터널링(Tunneling)  (0) 2025.05.23
RESTful API  (0) 2025.01.16
TCP, UDP 차이점  (0) 2024.04.19