RPC

IT 위키

Remote Procedure Call; 원격 프로시저 호출

다른 주소 공간이나 원격 시스템에 있는 함수를 마치 로컬 함수처럼 호출할 수 있게 해 주는 기술

  • 개발자가 네트워크 통신 코드를 직접 작성하지 않아도 되도록 통신 과정을 감춘다.
  • 분산 시스템과 미들웨어 의 기반 기술이다.
  1. 클라이언트가 로컬 함수를 부르듯 스텁(Client Stub) 을 호출한다.
  2. 스텁이 인자를 전송 가능한 형태로 바꾼다. 이 과정을 마샬링(Marshalling) 이라 한다.
  3. 메시지가 네트워크를 통해 서버로 전달된다.
  4. 서버 스텁이 인자를 복원(언마샬링)하고 실제 함수를 호출한다.
  5. 결과가 같은 경로를 거꾸로 거쳐 클라이언트에 반환된다.

스텁은 인터페이스 정의 언어(IDL)로 기술한 명세에서 자동 생성하는 것이 일반적이다.

  • 원격 호출을 로컬 호출처럼 다루므로 분산 시스템 개발이 간단해진다.
  • 네트워크 지연, 부분 실패, 서버 다운 같은 로컬 호출에는 없는 실패를 고려해야 한다.
  • 호출자가 응답을 기다리는 동기 방식이 기본이라 지연이 그대로 전파된다.
  • Sun RPC (ONC RPC) — NFS 가 사용한다
  • DCE RPC, 마이크로소프트 RPC
  • XML-RPC, JSON-RPC
  • gRPC — 구글이 만든 현대적 구현
  • RPC 서비스는 포트매퍼(111번)를 통해 동적으로 포트를 할당받아 방화벽 정책 수립이 까다롭다.
  • 불필요한 RPC 서비스는 중지하고, 외부에서의 111번 포트 접근을 차단하는 것이 보안 점검 항목이다.

같이 보기

[편집 | 원본 편집]