gRPC는 구글에서 만든 RPC 프레임워크 이다.
RPC는 Remote Procedure Call 이고, 이름에서 알 수 있듯, 다른 컴퓨터에 있는 어떤 기능을 자기 기능인 것 처럼 실행할 수 있도록 하는 프로토콜이다.
RPC는 언어 독립적이므로 서로 다른 프로그래밍 언어를 사용하는 서버와 클라이언트 사이에서도 사용될 수 있다는 점이 특징이다.

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)를 통해 데이터를 암호화해서 전송하여 다른 누군가가 데이터를 훔쳐보거나 데이터를 변경하지 못하여 안전한 통신을 보장한다.
'네트워크' 카테고리의 다른 글
게임 네트워크 (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 |