RPC - RPC에 관하여

몽루문·2024년 4월 15일
0

TIL - 개발지식

목록 보기
5/10
post-thumbnail

🚩 RPC - RPC에 관하여

현재 유행하는 MSA ( Micro Service Architecture ) 구조로 서비스를 만들다보면, 다양한 언어와 프레임워크로 개발되는 경우가 빈번하다.
그러면 Service 간에 통신이 환경의 영향을 받아 매우 복잡해지게 되는데 이러한 문제를 해결하기 위해서 프로그램 간에 API ( Application Programming Interface ) 를 만든다.
현재 제일 대중적인 API 는 HTTP Protocol 을 활용한 RestAPI 인데, 우연히 RPC 에 대해서 알게되어 정리해보려고 한다.

📝 RPC ( Remote Procedure Call ) 란 ?

■ RPC ( Remote Procedure Call ) 의 정의

  • Remote Procedure Call( 원격 프로시저 호출 )의 약자로, 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 함수 ( Function ) 혹은 프로시저 ( Procedure ) 를 실행할 수 있게 하는 프로세스 간 통신 기술

용어 정리

  • 함수 ( Function ) : Input에 따른 Output의 발생이 목적이므로 Return값을 필수로 가지는 계산
  • 프로시저 ( Procedure ) : Input에 따른 Output의 발생에 집중하기보다는 작업에 집중한 개념

■ RPC ( Remote Procedure Call ) 의 동작 원리

동작 순서

  1. Client 에서 매개변수를 Client stub 에 전달
  2. Client stub 에서 매개변수를 메시지로 Marshalling
  3. Client stub 은 Marshalling 된 메세지를 전송계층 ( Transport Layer ) 으로 전달하여 Server 로 전송.
  4. Server 에서 메시지를 받아 Server stub 으로 전달하고 매개 변수를 UnMarshalling 하여 Server 함수 호출
  5. 함수 수행이 완료되면 Server Stub 으로 리턴되며 리턴값을 메시지로 Marshalling
  6. 결과 메시지를 Client 에 보내고 Client 는 UnMarshalling 후, 리턴값을 Client 에게 반환

용어 정리

  • Stub : 서버와 클라이언트는 서로 다른 주소 공간을 사용하므로 함수 호출에 사용된 매개변수를 Marshalling, UnMarshalling 하는 역할

    • Client stub : 함수 호출에 사용된 파라미터의 변환(Marshalling) 및 함수 실행 후 Server 에서 전달된 결과의 반환
    • Server stub : Client 가 전달한 매개변수의 역변환(UnMarshalling) 및 함수 실행 결과 변환하여 Client 에 반환
  • Marshalling & UnMarshalling : 데이터를 전송하기 위해서 변환하는 일련의 과정

  • Serialize & Deserialize : 데이터를 전송하기 위해 byte stream 으로 변환하는 과정

■ RPC ( Remote Procedure Call ) 의 최종 지향점

  • Client <-> Server 간의 커뮤니케이션에 필요한 상세정보는 최대한 감춘다.
  • Client 는 일반 메소드를 호출하는 것처럼 Server 의 Method 를 호출할 수 있다.
  • Server 도 마찬가지로 일반 메소드를 다루는 것처럼 Client Method 를 다룰 수 있다.

■ RPC ( Remote Procedure Call ) 의 장점

  1. 환경에 제한 받지 않고 프로그램 간 통신을 쉽게 구현하고 정교한 제어가 가능하다.
  2. 네트워크 프로토콜에 대한 제한 없이 프로그램 개발 집중이 가능하다.

■ RPC ( Remote Procedure Call ) 의 단점

  1. 호출 실행과 반환 시간이 보장되지 않는다.
    • 네트워크 구간을 통하여 RPC 통신을 하는 경우, 네트워크가 끊겼을 때 치명적 문제 발생한다.
  2. 통신간의 보안이 보장되지 않는다.

🚩 마치며..

RPC 에 대한 개념을 정리해보았다.
다음에는 RPC 개념을 활용하여 Google에서 만든 gRPC 에 대하여 정리해보려고한다.
gRPC 는 Google, IBM, Netflix 에서 채용한 고성능 오픈 소스 RPC 프레임워크이다.

profile
알고 있는 것을 정리하고, 새로운 것을 알기위해 끄적이는곳..

0개의 댓글