우리가 일반적으로 사용하는 통신 패턴인 HTTP는
- Client to Server 패턴
- 서버를 키면
- 클라이언트는 서버에 데이터 혹은 행동을 요청함
- 서버는 요청 받은 내용에 대한 응답을 반환함
- 클라이언트는 응답 값으로 자신의 요청 결과를 알 수 있음
RPC란
원격 프로시저 호출(영어: remote procedure call, 리모트 프로시저 콜, RPC)은 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 함수나 프로시저를 실행할 수 있게하는 프로세스 간 통신 기술이다. 다시 말해, 원격 프로시저 호출을 이용하면 프로그래머는 함수가 실행 프로그램에 로컬 위치에 있든 원격 위치에 있든 동일한 코드를 이용할 수 있다.
출러-wikipedia
RPC는 프로세스 간 통신의 형태(IPC)의 한 형태로 떨어져 있거나 분산되어 있는 컴퓨터간의 통신을 위한 기술
프로시저
원격에서 호출될 함수나 메소드
그래서 RPC를 사용하면 클라이언트 애플리케이션은 마치 로컬에 있는 함수를 호출하는 것처럼 원격에 위치한 프로시저를 호출할 수 있음
스텁
Stub이란 프로시저 호출을 추상화하는 작은 코드입니다.
RPC에서 stub은 클라이언트와 서버 사이에 원격 프로시저 호출을 처리하기 위해 사용됩니다.
RPC의 작동 과정
- 클라이언트에서 원격 프로시저를 호출하려면, 클라이언트 측에 stub이 필요함, 이 stub은 각각의 원격 프로시저에 대해 별도로 존재함
- 클라이언트가 스텁 프로시저를 호출하면, RPC 시스템은 해당 stub을 호출하고 원격 프로시저에 제공된 매개변수를 전달함.
- 클라이언트 측 stub은 서버의 포트를 찾아 매개변수를 정리(marshal)한 다음 메세지를 사용해 서버로 정보를 전송합니다.
- 서버 측에도 유사한 stub 존재 해서, 이 stub은 메세지를 받아 서버에서 프로시저를 호출함.
- 필요한 경우, 반환값은 같은 방법을 사용해 클라이언트로 전달됨

출처: geeks for geeks
RPC의 장점
- 각가의 프로세스 개발 집중 가능
- 프로세스간 통신 기능을 비교적 쉽게 구현하고 정교한 제어가 가능
RPC의 단점
- 네트워크 구간을 통하여 RPC 통신을 하는 경우 반환과 요청 시간이 보장되지 않는다.(네트워크가 끊겼을 때 치명적 문제 발생)
- 보안이 보장되지 않음
대표적인 RPC 프레임워크
- gRPC
- Apache Thrift
- Apache Avro: Apache