Knowledge

[Knowledge] RPC란?? RPC의 간단한 개념..

Jeong Jeon
반응형

최근 RPC라는 말을 드문드문 보게되었다.

알아보고 싶은것들이 계속 많아지는 시기라.... 간단간단하게 공부하면서 차후에 제대로 알아봐야겠다...!

 

RPC(Remote Procedure Call)란? 

원격 제어를 위한 코딩없이 다른 주소 공간의 함수나 프로시저를 실행할 수 있게 하는 프로세스간 통신방식이다.

여기서 함수는 Input이 있으면 output이 있는 Return값이 있는 아이이고, 프로시저는 명령이 수행하는 절차를 통한 개념적인 아이이다.

 

그렇다면 RPC는 어디에 쓰는것인가!?

보통 프로세스들은 자신이 할당받은 주소공간안에 있는 함수들을 실행한다. 이때 A프로세스가 주소 공간이 다른 B프로세스의 함수를 실행시키고 싶을때 사용하는 프로토콜이라고 보면 될것 같다. (자기것이 아닌 남의것을 자기것인것 마냥 호출하고 싶을때!)

RPC 구조

RPC는 IDL을 사용하여 호출을 정의하고, 함수명, 매개변수, 반환값에 대한 데이터 타입이 저장된 IDL파일을 컴파일러를 통해 Stub코드로 자동생성 시킨다고 한다.

여기서 IDL(Interface Definition Language)이란  인터페이스 정의언어로, 구현 언어 (Java, C...)가 아닌 Definition Language로 어느 언어로 구현이 되어있던 매핑을 시켜서 사용할 수 있게 도와준다.

 

RPC 통신과정

  1. IDL 을 사용하여 호출규약을 정의한다.
    • 함수명, 인자, 반환값에 대한 데이터 타입이 정의된 IDL 파일을 rpcgen으로 컴파일 하여 stub code를 생성한다.
  2. Stub Code에 생성된 함수들은 정의만 되어있고, Detail한 기능들은 서버측에 존재한다.
    • 이때 생성된 Stub Code는 Client 와 Server 양쪽에 함께 빌드된다.
  3. Client에서 Stub에 정의되어있는 함수를 호출하게 되면, Client Stub은 RPC runtime을 통해 호출되고, Server에서는 받은 요청받은 프로시저를 처리하고 결과를 반환한다.

 

 

RPC의 장단점을 알아보자.

RPC장점

1). 네트워크 프로토콜 까지 고려하면서 개발하지 않아도 되니, 고유 프로세스의 개발에만 집중할 수 있다 

2). 원격지 프로세스간 통신이 가능하다.

3). 빠르고 분산 프로그래밍에 유용하다.

 

RPC단점

1). 함수나 프로시저를 호출해서 사용할때 호출 실행과 반환의 시간이 보장되지 않는다. 우선 네트워크 통신을 해버리니 네트워크 자체가 끊겨버리면 Request가 통쨰로 날아갈 수 있다.

2). 구현이 어렵고 지원기능의 한계가 있었다. 그래서 우리가 익숙한 REST를 사용했다고 한다.

 

gRPC(Google Remote Procedure Call) 란?

Google에서 만든 RPC이다.  PB 기반 Serizlaizer에 HTTP/2를 결합하여 RPC 프레임워크로 만들었다고 한다.

프로토콜 버퍼를 사용하여 데이터를 전달한다는데 이부분도 확인 해봐야겠다.

 

자세한건 조만간 차근차근 하나씩 알아가자..!

 

반응형