RPC에 대해

seok222·2023년 2월 24일
0

Intern

목록 보기
5/6

RPC란

RPC 탄생 배경

  • MSA(Micro Service Architecture) 구조로 서비스를 만들다보면, 다양한 언어와 프레임워크로 개발되는 경우가 잦다. 이런 Polyglot 한 구조에서는 프로토콜을 맞춰서 통신해야 하는 비용이 발생한다. 이 경우에 RPC를 이용하여 언어에 구애받지 않고, 원격에 있는 프로시저를 호출하여 조금 더 비즈니스 로직에 집중하는 개발을 할 수 있다.

RPC 개념

  • RPC(Remote Procedure Call)란 프로세스간 통신을 위해 사용하는 IPC(Inter Process Communication) 방법의 한 종류이다. 원격지의 프로세스에 접근하여 프로시저 또는 함수를 호출하여 사용한다. 말 그대로 원격지의 프로시저를 호출하는 것이다.
  • 일반적으로는 프로세스는 자신의 주소 공간 안에 존재하는 함수만 호출하여 실행 가능하다. 하지만, RPC를 이용하면 다른 주소 공간에서 동작하는 프로세스의 함수를 실행할 수 있게 된다. 위에도 언급했듯, 분산 컴퓨팅 환경에서 프로세스 간 상호 통신 및 컴퓨팅 자원의 효율적인 사용을 위해서 발전된 기술이다.
  • RPC는 분산 컴퓨팅과 client-server를 베이스로 한 앱을 위한 기술이다. RPC는 일반적인 로컬 프로시저 호출을 확장하는 것을 기반으로 한다. 그래서 호출된 프로시저의 필요가 호출하는 프로시저 처럼 같은 주소 공간에 존재하지 않는다. 두 프로세스들이 같은 시스템에 있거나 다른 시스템에 존재하며 네트워크가 그들을 연결하는 형태로 존재한다.
💡 프로시저와 함수의 차이?????
  • 함수는 인풋에 대비한 아웃풋의 발생을 목적으로 한다.
  • 프로시저는 결과 값에 집중하기 보단 '명령 단위가 수행하는 절차'를 목적으로 한다.

RPC 동작 흐름 이미지 (Client - Server process)

  • RPC (원격 프로시저 호출)는 응용 프로그램이 네트워크를 통해 서로 통신할 수 있도록 하는 통신 유형이다. 한 응용 프로그램의 기능이나 프로시저를 다른 응용 프로그램에서 호출할 수 있으므로 분산 컴퓨팅과 더 큰 확장성이 가능하다.
  • RPC 는 호출 응용 프로그램(클라이언트 라고도 함)에서 다른 응용 프로그램(서버 라고도 함)으로 요청을 보내고 응답을 받는 방식으로 작동한다. 요청은 일반적으로 매개변수 및 반환 값과 같이 실행해야 하는 절차에 대한 정보가 포함된 데이터 패킷으로 전송된다.
  • 서버가 패킷을 수신하면 이를 처리하고 관련 데이터 또는 결과와 함께 응답을 반환한다.

RPC 동작 원리

  1. 클라이언트가 일반적인 방식으로 파라미터를 넘겨 client stub procedure를 호출한다. client stub은 클라이언트를 소유한 주소의 공간 내에 거주한다.
  2. client stub이 파라미터들을 메세지로 모은다. 여기서 모은다는 것에 파라미터의 표현을 표준 포맷으로 변경하고 각 파라미터를 복사해서 메세지로 넣는 것도 포함된다.
  3. client stub은 원격 서버 머신으로 메세지를 보내는 계층인 transport layer로 메세지를 보낸다.
  4. 서버에서, transport layer는 메세지를 server stub으로 보낸다. server stub은 또 파라미터들을 모아주고 일반적인 프로시저 호출 메커니즘을 사용하여 요구된 서버 루틴을 호출한다.
  5. 서버 프로시저가 완료될 때, 서버 프로시저는 server stub으로 반환된다. (이를테면 일반적인 프로시저 호출 반환값을 통해), server stub은 결과 값들을 모아서 메세지에 넣고, transport layer에 메세지를 보낸다.
  6. transport layer는 결과 메세지를 다시 client transport layer로 보내고 client transport layer는 그 결과를 또 client stub에게 전달한다.
  7. client stub은 반환 파라미터들과 실행 결과값을 다시 해제한다.
profile
영차영차!!!

0개의 댓글