2 minute read

RPC


원격 프로시저 호출(영어: remote procedure call, 리모트 프로시저 콜, RPC)은 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 함수나 프로시저를 실행할 수 있게하는 프로세스 간 통신 기술이다. 다시 말해, 원격 프로시저 호출을 이용하면 프로그래머는 함수가 실행 프로그램에 로컬 위치에 있든 원격 위치에 있든 동일한 코드를 이용할 수 있다.

객체 지향의 원칙을 사용하는 소프트웨어의 경우 원격 프로시저 호출을 원격 호출(remote invocation) 또는 원격 메소드 호출(remote method invocation)이라고 일컫는다.

가끔 ONC RPC와 DCE/RPC와 같은 비호환 대상을 수행하기 위해 쓰이는 다른 수많은 기술이 있다.


출처 위키백과

operating-system-remote-procedure-call-1

출처 https://www.geeksforgeeks.org/remote-procedure-call-rpc-in-operating-system/

RPC 가 등장하게 된 배경은 어떻게하면 분산 네트워크 컴퓨터 환경에서 프로그래밍을 쉽게 할수있을까에 대한 고민이였습니다.

분산시스템은 기본적으로 다수의 컴퓨터가 하나의 시스템처럼 작동하여 사용자에게 그 차이를 느끼지 못하게 하는 시스템을 말합니다.

이 분산시스템에서 가장 중요한 것은 시스템에 소속되어 있는 컴퓨터간의 통신인데 각 컴퓨터에서 실행되고 있는 프로그램 또는 프로세스들이 서로 통신이 가능해야 한다는 것입니다.

우리가 평소 사용하고 있고 알고있는 통신 패턴 아래와 같습니다.

Client - Server 패턴

  • Client는 요청 -> 대기

  • Server는 요청한 내용을 실행 -> 결과 Return

  • Client는 결과값 -> 활용

Socket

  • 수작업으로 Formatting 해야 하는 단점

  • 직접 네트워크 주소를 입력하고 보내야 하는 단점

RPC의 목적

  • 클라이언트 - 서버간의 커뮤니케이션에 필요한 상세한 정보는 최대한 감추기

  • 클라이언트는 일반 메소드를 호출하는 것처럼

  • 서버도 마찬가지로 일반 메소드를 다루는 것처럼!

일반 Browser/Server(주로 client/server 라고 부르는) 과 차이

1. RPC 호출은 연결 지향적이지 않다.

client 는 그것이 실제로 실행되었는지 아닌지 알수없습니다.

그러므로 예측할수없는 네트워크 문제가 발생할때 그 호출이 실패한다면 오류가 발생할수있습니다.

신뢰성이 필요한경우 이 문제는 치명적일수있습니다.

2. client/server 는 아키텍쳐일뿐

사실 RPC 와 client/server 는 느슨하게 관련되어있습니다.

client 는 request 를 보내고 server 는 그것을 받는 하나의 아키텍쳐 일뿐입니다.

그래서 client 의 호출을 받는 server 는 RPC 를 사용할수도, 사용하지 않을수도 있습니다.

3. RPC 는 프록시 Object 에 메서드 호출

RPC는 클라이언트가 프록시 Object 에 메서드를 호출하고 , 그 프록시의 Object 가 서버에 요청을 보내게됩니다.(원격 프로시저 호출)

그런 다음 서버는 그 프록시의 Object 에 대한 메서드 호출로 변환하게됩니다.

언뜻 보기에는 클라이언트가 서버 Object 의 메서드를 호출하는것처럼 보이지만,

실제로 그것을 가능하게 하는것은 client/server code 입니다.

RPC 가 서버와 클라이언트에 연결 하는법

Static Binding

  • 서버 주소 Hard Coding

  • 간단하고 효율적

  • 서버 주소 변경에 약함.

Dynamic Binding

  • 주소 변경에 매우 유동적

  • 여분의 서버를 둬야 하는 단점.

    Name Server Load Balancer

RPC 데이터 흐름

서버와 클라이언트 사이에서 전송되는 데이터들을 Encoding/Decoding해주는 과정이 필요합니다.

이런 과정은 표준적으로 제공해주는데 그 중 하나가 ONC RPC에서 이용하는 XDR(eXternal Data Representation)입니다.

XDR은 C함수와 매크로의 모음으로 구성되어 있는데, 주고 받을 데이터를 각 머신에 맞도록 표준적인 방법으로 재해석하는 일을 하게됩니다.

RPC 구조와 상호작용

2019-07-09-14-23-33

RPC 장점

  • 비즈니스 로직에 집중할 수 있음.

  • 다양한 언어를 가진 환경에서 쉽게 확장할 수 있음.

  • 쉽게 인터페이스 협업이 가능함.

  • 객체간의 메세지 전송을 통해 실행된다

RPC 단점

  • 새로운 학습 비용이 듬.
  • 사람의 눈으로 읽기 힘듬.

Reference

https://stackoverrun.com/ko/q/1875439

https://nesoy.github.io/articles/2019-07/RPC

https://girlsy7.tistory.com/133

Categories:

Updated: