RPC(Remote Procedure Call) 개념
상호 미리 정의된 규격을 준수하여 원격에서 동작하고 있는 프로세스에 포함된 함수를 호출 가능하게 하는 프로세스 간 통신기술이다.
일반적으로 프로세스는 자신의 주소공간안에 존재하는 함수를 호출하여 실행가능하지만,
RPC를 이용하면 다른 주소공간에서 동작하는 프로세스의 함수를 실행할 수 있게 된다.
분산 컴퓨팅 환경에서 프로세스 간 상호 통신 및 컴퓨팅 자원의 효율적인 사용을 위하여 발전된 기술이다.
[개념도]
1) IDL(Interface Definition Language) 을 사용하여 서버의 호출 규약을 정의한다
함수명, 인자, 반환값에 대한 데이터형이 정의된 IDL 파일을 rpcgen 컴파일러를 이용하여 stub 코드를 자동으로 생성한다.
2) Stub는 원시소스코드 (C코드등) 형태로 만들어지므로 클라이언트,서버 프로그램에 포함하여 빌드한다
3) 클라이언트 프로그램 입장에서 자신의 프로세스 주소공간의 함수를 호출하는 동일하게 stub 에 정의된 함수를 호출할 수 있게 된다
4) stub 코드는 데이터형을 XDR(eXternal Data Representation) 형식으로 변환하여 RPC 호출을 실행한다.
-XDR 변환 이유는 기본 데이터 타입(정수형, 부동소수점 등)에 대한 메모리 저장방식(리틀엔디안, 빅엔디안)이
CPU 아키텍쳐별로 다르며, 네트워크 전송과정에서 바이트 전송 순서를 보장하기 위함이다.
5) 서버는 수신된 함수/프로시저 호출에 대한 처리 완료 후, 결과값을 XDR 변환하여 반환한다.
6) 최종적으로 클라이언트 프로그램은 서버의 결과값을 반환받는다.
[RPC 장단점]
-장점
1) 고유 프로그램 개발 집중 가능 (하부 네트워크 프로토콜에 신경쓰지 않아도 되기 때문에)
2) 프로세스간 통신 기능을 비교적 쉽게 구현가능하고 정교한 제어가 가능
-단점
1) 호출 실행과 반환시간이 보장되지 않음 (네트워크 구간을 통하여 RPC통신을 하는 경우 네트워크 끊기는 경우 치명적 문제 발생)
2) 보안이 보장되지 않음
[끝 마치며]
RPC는 네트워크로 연결된 컴퓨터간의 통신에도 사용되지만,
동일한 머신내의 프로세스 또는 공유메모리를 공유하는 processor간에도 활용된다는 점은 참고하시면 좋을 것 같습니다.
RPC에 대한 기본 개념을 이해하기 위하여 포스팅하였으며,
잘못된 내용은 지적하여 주시면 보완하도록 하겠습니다.
'IT' 카테고리의 다른 글
CA(Computer Architecture) 마인드맵 (0) | 2022.02.16 |
---|---|
OS 마인드맵 (0) | 2022.02.16 |
윈도우즈 2016 서버에 Docker EE 설치 및 실행 (0) | 2018.12.14 |
Teclast F5 구매 및 개봉기 (0) | 2018.11.24 |
eMMC와 SSD 차이점 (0) | 2018.11.03 |