RPC(Remote Procedure Call)

ILLION·2024년 3월 26일
0

HTTP

목록 보기
17/18

RPC란

RPC는 원격 프로시저 호출이라는 뜻으로, 네트워크 상의 다른 컴퓨터에 있는 프로그램을 로컬 컴퓨터에서 호출하여 사용하는 프로토콜입니다. 즉, 분산 네트워크 환경에서 프로시저나 함수를 마치 로컬에 있는 것처럼 사용할 수 있게 해줍니다. 프로세스간 통신을 위해 사용하는 IPC(Inter Process Communication) 방법의 한 종류이다

참고* 프로세스들은 기본적으로 메모리를 공유하지 않기 때문에 각자 자신의 일만 한다. 하지만 필요에 따라 프로세스간 정보를 교환해야하는데 이때 별도 수단을 이용해 프로세스 통신하는 방법론을 통칭해 IPC라 한다.
예) socket, RPC, REST

RPC는 원격 호출에 사용되는 프로토콜임에도 불구하고 구체적인 네트워크 전송은 다양한 하부 프로토콜 중 하나를 사용하도록 유연하게 설계되어 있다. 따라서 RPC의 전송 프로토콜(transmit protocol)로서 TCP/IP, UDP, HTTP등을 사용할 수 있다

RESTRPC
ProtocolHTTP프로토콜에 무관 (TCP, UDP, HTTP, WebSocket, ...)
SchemeResource 기반의 API 인터페이스(예) 강아지 목록을 반환하는 API 를 GET /dogs 로 설계Action 기반의 API 인터페이스(예) 강아지 목록을 반환하는 API 를 POST /listDogs 로 설계
DesignRESTful API 는 Stateless 를 전제제약이나 규약이 없음

예시)

예를 들어, 우리가 웹 서버와 데이터베이스 서버가 각각 다른 컴퓨터에 위치해 있다고 상상한다. 이 때 웹 서버가 데이터베이스 서버에 있는 데이터를 필요로 할 때, 웹 서버는 일반적으로 데이터베이스 서버에 요청을 보내고 그 결과를 받아옵니다.

하지만 RPC를 사용하면, 웹 서버는 마치 자신의 컴퓨터에 있는 로컬 함수를 호출하는 것처럼 간단하게 데이터베이스 서버에 있는 함수를 호출할 수 있다. 웹 서버는 데이터베이스 서버에 있는 함수를 마치 로컬에 있는 것처럼 사용할 수 있게 해주는 것이 RPC입니다.

즉, RPC 는 서버와 클라이언트가 통신하기 위한 API 의 통신 패러타임 중 하나이고, REST API 와 비교될 수 있는 차원의 개념이라고 할 수 있다.

RPC 는 기본적으로 정해진 구조를 갖고있지는 않지만, 기본적인 Terminology 를 몇가지 갖고있다.

  • IDL (Interface Definition Language) : 서로 다른 언어로 작성된 서비스들 사이에서 공통된 인터페이스를 정의하기 위한 중간 언어
  • Stub : 서버와 클라이언트는 서로 다른 주소 공간을 사용하므로 함수 호출에 사용된 매개변수를 변화해줘야하며, 그 역할을 담당한다
    • client stub - 함수 호출에 사용된 파라미터의 변환(Marshalling) 및 함수 실행 후 서버에서 전달된 결과의 반환
    • server stub - 클라이언트가 전달한 매개변수의 역변환(Unmarshalling) 및 함수 실행 결과 변환을 담당

RPC 모델은 분산 컴퓨팅 환경에서 많이 사용됐으며, 현재는 MSA에서 마이크로 서비스 간에 많이 사용한다. 서로 다른 환경이지만 서비스간의 프로시저 호출을 가능하게 해줌에 따라 언어에 구애받지 않고 환경에 대한 확장이 가능하며, 좀 더 비즈니스 로직에 집중하여 생산성을 증가시킬 수 있다.

profile
결과를 중요시하기보단 과정을 중요하게 생각하는 마음가짐

0개의 댓글