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 |