RPC
IT 위키
Remote Procedure Call; 원격 프로시저 호출
다른 주소 공간이나 원격 시스템에 있는 함수를 마치 로컬 함수처럼 호출할 수 있게 해 주는 기술
- 개발자가 네트워크 통신 코드를 직접 작성하지 않아도 되도록 통신 과정을 감춘다.
- 분산 시스템과 미들웨어 의 기반 기술이다.
- 클라이언트가 로컬 함수를 부르듯 스텁(Client Stub) 을 호출한다.
- 스텁이 인자를 전송 가능한 형태로 바꾼다. 이 과정을 마샬링(Marshalling) 이라 한다.
- 메시지가 네트워크를 통해 서버로 전달된다.
- 서버 스텁이 인자를 복원(언마샬링)하고 실제 함수를 호출한다.
- 결과가 같은 경로를 거꾸로 거쳐 클라이언트에 반환된다.
스텁은 인터페이스 정의 언어(IDL)로 기술한 명세에서 자동 생성하는 것이 일반적이다.
- 원격 호출을 로컬 호출처럼 다루므로 분산 시스템 개발이 간단해진다.
- 네트워크 지연, 부분 실패, 서버 다운 같은 로컬 호출에는 없는 실패를 고려해야 한다.
- 호출자가 응답을 기다리는 동기 방식이 기본이라 지연이 그대로 전파된다.
- RPC 서비스는 포트매퍼(111번)를 통해 동적으로 포트를 할당받아 방화벽 정책 수립이 까다롭다.
- 불필요한 RPC 서비스는 중지하고, 외부에서의 111번 포트 접근을 차단하는 것이 보안 점검 항목이다.
