본문 바로가기
개발(프로그래밍)/gRPC

RPC(Remote Procedure Call)란?

by 캔두500 2024. 12. 18.

RPC란?

별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 함수/procedure를 실행하는 프로세스간 통신 기술

= 다른 원격 서버에 있는 함수를 호출하여 실행한다

 

 

* 참고사항 - 함수와 프로시져의 차이

Function: process를 수행하기 위해 필요한 기능. client에서 값을 받고 server에서 필요한 값을 가져와 client에서 작업을 한 후 반환. 

Procedure: process를 절차적으로 기술해 놓은 것. client에서 값을 받아 server에서 작업 후 client에게 전달.

https://mjn5027.tistory.com/47

 

[ Oracle ] 프로시저와 함수의 차이

오라클을 사용하다보면 자주 접하게 되는 프로시저와 함수. ​ 이 둘의 정의와 차이점에 대해 알아보자. 프로시저(Procedure)란? 넓은 의미로는 어떤 업무를 수행하기 위한 절차를 뜻한다. ​ 예를

mjn5027.tistory.com

 

RPC와 Library의 차이?

라이브러리는 프로그램 내부에 설치하는 과정이 필요. 

하지만, RPC는 프로그램 내부에 설치하지 않고 사용.

network통신을 통해 client에서 호출 시 server의 함수를 호출하고 그 결과를 client로 반환. 

 

RPC는 결국 client-server 간 네트워크 통신으로, 이때 필요한 상세정보는 감춰진다. (언어, 환경과 독립적)

외부의 원격 함수를 동일 프로세스의 함수를 호출하는 것처럼 사용

클라이언트가 원격 서버의 함수에 대해 RPC를 직접적으로 호출하는데 마치 클라이언트 로컬로 호출된 것 처럼 작동한다.

개념

- IDL(Interface Definition Language)

호출에 대한 인터페이스 정의. 

서로 다른 언어로 작성된 서비스들 사이에서 공통된 인터페이스를 정의하기 위한 중간 언어.

XML, JSON을 많이 사용한다.

 

- Stub

client - server 통신을 추상화, 단순화하는데 사용되는 객체. 

정의된 IDL을 기반으로 컴파일러인 rcpgen을 통해 stub이 생성된다. 

client sub: 원격 procedure를 호출할 때 사용. 함수의 파라미터 marshal(변환) 및 함수 실행 후 서버에서 전달된 결과 반환

server sub: 요청을 받아 처리. 클라이언트가 전달한 매개변수를 Unmarshal(복원)하고 원격 프로시저를 호출 해 받은 반환값을 클라이언트에 전송하기 위해 다시 marshal하여 전송. 

 

 

- 통신 과정

IDL을 통해 호출에 대한 인터페이스를 정의한 후, rpcgen으로 stub과 skeleton 생성. 

client는 원격 프로시져를 사용하기 위해 stub의 프로시저를 호출하고, 필요한 parameter와 method를 호출. 

stub은 서버가 이해할 수 있는 형태로 데이터 캐스팅을 진행 한 후, 서버 RPC로 호출. 

서버는 수신된 데이터를 처리 후 데이터 캐스팅을 거쳐 client로 결과 전송.  

 

 

장점

쉽게 사용이 가능하며 프로그래밍 부담이 적다

다양한 언어를 가진 환경에서 쉽게 확장 가능

 

 

단점

호출 실행과 반환시간이 보장되지 않음. 

보안이 보장되지 않음. 

'개발(프로그래밍) > gRPC' 카테고리의 다른 글

gRPC란?  (1) 2024.12.18
IPC란? (Inter Process Communication)  (0) 2024.12.03