RPC

민정·2025년 7월 3일

gRPC

목록 보기
1/7

정의

  • 원격 프로시저 호출(Remote Procedure Call)
  • 운영 체제에서 사용되는 고수준 통신 패러다임을 제공하는 프로토콜
    • RPC는 통신 프로그램 간에 메시지 데이터를 전달하기 위해 TCP/IP, UDP와 같은 저수준 전송 프로토콜이 존재한다고 가정
    • 고수준이기 때문에 저수준 프로토콜보다 더욱 추상화된 형태
  • 네트워크를 통해 서로 다른 컴퓨터, 프로세스 간 통신을 지원하는 기술
    • 클라이언트-서버 모델 사용
    • 원격 통신을 로컬 통신처럼 사용 가능

XDR

  • eXternal Data Representation(XDR)
  • 원격 통신에서 데이터 표현을 표준화
  • RPC 프로토콜은 XDR을 기반으로 구축
  • RPC 클라이언트-서버가 통신에서 전달한 값을 자동으로 서로 간 합의된 포맷으로 변환함
  • 서로 다른 시스템 간에도 문제없이 데이터를 주고받을 수 있음


Local Procedure Call Model

  • 원격 프로시저 호출(RPC) 모델은 로컬 프로시저 호출 모델과 유사
  • 로컬 프로시저 호출 모델은 내 프로그램의 함수 호출 과정이라고도 표현 가능
  1. Caller(호출자)가 함수에 넘길 매개변수(인수) 저장
  2. 함수(프로시저, Callee)로 제어권을 넘김
  3. 함수 실행이 끝나면 제어권이 다시 Caller에게 돌아옴
  4. Caller는 함수의 결과를 받아서 이후 실행을 계속

Remote Procedure Call Model

  • RPC는 Local Procedure Call Model와 유사한 방식으로 작동
    • 외부 프로그램의 함수(원격 프로시저)를 내 프로그램의 함수(로컬 프로시저)인 것처럼 호출할 수 있는게 핵심
  1. IDL을 사용하여 서버의 호출 규약을 정의
    • IDL(Interface Definition Language)에서 프로시저의 통신 규약(이름, 인자, 반환값의 데이터 타입 등)을 정의
    • XDR 프로토콜을 사용해 클라이언트-서버 간 합의된 포맷을 사용하기 위함
  2. stub을 클라이언트, 서버 프로그램에 포함하여 빌드
    • 빌드 후 클라이언트는 자신의 함수를 호출하는 것처럼 동일하게 stub에 정의된 함수를 호출할 수 있게 된다.
  3. stub 코드는 데이터형을 XDR 형식으로 변환(marshalling)하여 RPC 호출을 실행한다.
  4. 서버는 수신된 프로시저 호출에 대한 처리 완료 후, 서버 stub이 결과값을 XDR 변환(unmarshalling)하여 반환한다.
  5. 최종적으로 클라이언트 프로그램은 서버의 결과값을 반환받는다.

핵심

  • RPC의 핵심은 외부 프로그램의 함수를 내 프로그램의 함수인 것 처럼 호출
    • 클라이언트가 호출할 수 있는 함수 리스트를 서버, 클라이언트 모두 stub으로 내장
    • 클라이언트-서버 간 데이터 전달 포맷을 통일(XDR)
  • 클라이언트는 stub에 내장된 함수를 미리 서버와 합의해둔 데이터 포맷으로 호출할 수 있음
profile
시스템 + 리눅스 + 클라우드

0개의 댓글