서버

Rpc와 proto의 차이 및 개념

+채사원+ 2021. 10. 22. 08:52


RPC(remote procedure call)는 IPC(Inter Process Communication)의 한 종류인데

IPC부터 보자면 프로세스간 통신 이라는 의미죠. 프로세스와 프로그램의 차이부터 알아야 하는데 프로그램을 다운받고 프로그램이  실행되고 있는 상태면 프로세스입니다.

IPC는 프로세스끼리 통신하는 수단이나 방법을 의미하는데 프로세스끼리 통신하는 한 수단으로 RPC(원격 프로시저 콜)가 있습니다. 다른 IPC 수단으로는 파이프나 공유메모리 같은게 있으나 주제와 벗어나니 패스하고.

RPC를
Remote 원격으로
Procedure 절차
Call 호출하는 으로 해석해보면
원격에서 어떤 기능(일련의 절차)을 호출한다.
라고 생각하시면 됩니다.
원격이지만 현장에서 작업하는 것과 기능적으로 다를게 없다고 보시면 됩니다.

쉽게 예시를 들면 집에서 가져온 리모컨으로 사무실에서 전원버튼을 눌렀을 때 집 TV가 켜진다고 가정합시다. 물론 집에 있는 TV를 물리적인 전원 버튼을 눌러서 키는 방법도 리모컨의 전원버튼을 누르는 것과 '동일한 기능'입니다  (중요)

현실에 빗대어 RPC를 설명하자면 질문자님과 TV는 각각의 프로세스고 전원버튼을 눌러 티비를 키고 꺼야(통신) 합니다.
티비의 전원을 물리적으로 누르는 것(RPC 이외의 방법)과 원격에서 리모컨으로 전원버튼을 누르는 방법이 있습니다.(RPC)
둘 다 티비의 전원을 키는 기능은 똑같은데 원격(RPC)이냐 아니냐(다른 IPC)로 방법이 구분됩니다.

여기까지가 RPC였습니다.

proto는 protocol buffer로 버퍼(데이터를 담을 공간) 규약입니다.
원격에서 리모컨으로 aaabbccd와 같은 데이터를 입력하여 TV에 통신할 때 통신과정에서 데이터가 클 수록 네트워크 트래픽을 많이 많이 요구됩니다.
님이 카톡으로 원본사진 보내면 무제한 데이터가 아닌사람은 데이터가 녹아 내리는 것처럼요. 그래서 우리는 압축해서 보내줍니다.

프로토콜 버퍼는 보낼 데이터를 압축해서 통신하겠다는 규약이라고 생각하세요. aaaaabbbbcccdde(원본)을 알파뱃-빈도수로 생각하여 a5b4c3d2e1(압축된 데이터)으로 본다면 원본의 글자 수 길이는 15지만 압축된 데이터의 글자수 길이는 10으로 무려 33%나 네트워크 트래픽을 아낄 수 있게 됩니다. 또한 길이가 줄어드니 더 빠르게 보내고 받고가 가능해져 성능상에 이점이 있습니다. 물론 실제 proto의 압축 방식이 위와 완전히 똑같진 않습니다. 예시를 위해 간략하게 설명한 것입니다.

'서버' 카테고리의 다른 글

[Linux] TOMCAT과 JDK 설치 및 환경설정  (0) 2021.10.19
리눅스 TOMCAT + HTTPD 설정방법  (0) 2021.10.19