RPC

개요

Remote Procedure Call
원격 프로시저 호출

간단하게 말하자면, A 컴퓨터에서 B 컴퓨터에 있는 함수를 호출하는 것.
조금 더 상세하게 말하자면 다른 주소 공간에서 함수나 프로시저를 실행할 수 있게 하는 프로세스 간 통신 기술.
흔히 한 서버의 로직이 과부하된다면 그 로직의 일부를 다른 서버에서 실행하는 대안을 생각해볼 수 있을 것이다.
이때 다른 서버가 단순한 http 요청을 받아서 처리하는 방식으로도 구현할 수 있겠지만, 그보다 더 좋은 건 해당 로직을 실행하고 결과만 네트워크를 타고 돌려주는 방식일 것이다.
그러니까 네트워크 요청 상에서 귀찮은 곁다리 과정 다 생략하고 안 속 내용물만 취할 수 있는 좋은 전략인 것.
Micro Service Architecture 환경에서 아주 적합한 기술 중 하나일 수밖에 없다.

특징

언어에 독립적

일단, 언어에 종속적이지 않다.
즉, 파이썬으로 만든 코드에서 자바의 함수를 실행할 수 있게 해준다는 것.
이게 가능한 원리는 바로 IDL에 있다.

IDL

Interface Definition Language
인터페이스만 정의된 언어
rpc를 지원하기 위해 모든 언어에서 이 방식을 지원한다.

이 IDL에 맞게만 코드를 작성하면 rpcgen이란 컴파일러가 stub이라는 코드로 만들어준다.
이놈은 우리가 사용하는 언어와 다른 녀석이기 때문에 서로 rpc를 사용할 게 확실하기만 하다면 언어에 구애받지 않고 사용이 가능해진다!

다른 컴퓨터의 리소스를 활용

이게 RPC를 사용하는 주 이유가 될 것이다.
위의 가상 시나리오처럼, 로직을 분할하여 실행할 때 매우 유용한 툴이 된다.
다른 방법도 많겠지만, 이 녀석은 매우 빠르다는 장점이 있다.

원리

Pasted image 20241016201808.png

조금 더 상세하게 보면 좋겠지만, 당장은 이정도로만 보고 넘기도록 하겠다.

참고