RPC 장점과 단점RPC 작동 원리RPC와 일반적인 API 호출의 차이점RPC란?backend

RPC 개념과 작동 원리

KUKJIN LEE
KUKJIN LEE
2024년 10월 29일
389

RPC(Remote Procedure Call)는 네트워크 상에서 원격 시스템의 프로시저(함수)를 로컬에서 호출하듯이 호출할 수 있는 기술입니다. 복잡한 분산 시스템을 간단하게 구현하기 위해 많은 개발자들이 사용됩니다.

 

RPC란 무엇인가?

RPC(Remote Procedure Call)는 로컬 함수를 호출하는 것처럼 간단하게 분산 환경에서 코드를 실행할 수 있도록 하는 기술입니다. 일반적으로 클라이언트와 서버 간 통신을 쉽게 구현하는 데 사용되며, 네트워크의 복잡성을 추상화하여 개발자가 함수 호출만으로 네트워크를 통한 작업을 수행할 수 있게 합니다.

RPC는 서버 측에 구현된 함수(프로시저)를 클라이언트가 호출하는 형태로 사용됩니다. 예를 들어, 데이터베이스 서버에 접근하여 데이터를 가져오거나, 다른 시스템에서 실행해야 할 특정 작업을 요청할 때 주로 사용됩니다.

 

RPC와 일반적인 API 호출의 차이점

  1. 개념적 접근: 일반적인 API 호출은 주로 리소스 중심의 CRUD 작업을 처리하는 방식입니다. 즉, 데이터를 생성(Create), 읽기(Read), 갱신(Update), 삭제(Delete)하는 작업에 초점을 맞춥니다. 반면, RPC는 서버의 특정 함수나 작업을 호출하는 데 중점을 둡니다. 클라이언트는 원격 서버의 특정 함수를 호출하고, 그 결과를 반환받는 방식으로, 마치 로컬 함수처럼 서버 측 기능을 호출하는 것입니다.

  2. 표현 방식: API 호출은 RESTful API와 같은 자원(URL) 기반의 접근을 사용하며, HTTP 메서드(GET, POST 등)를 통해 요청합니다. 반면에 RPC는 서버에서 제공하는 함수의 이름과 매개변수를 사용하여 호출하는 방식으로, 함수 호출에 대한 추상화가 더 명확하게 드러납니다.

 

RPC의 작동 원리

  1. Client Stub: 클라이언트에서 호출된 함수는 먼저 클라이언트 스텁으로 전달됩니다. 스텁은 호출된 함수와 파라미터를 직렬화하여 네트워크를 통해 전달할 준비.

  2. 네트워크 전송: 클라이언트 스텁에서 직렬화된 데이터는 네트워크를 통해 서버로 전송.

  3. Server Stub: 서버 측에서는 이 데이터를 수신하여 역직렬화하고, 요청된 함수를 호출.

  4. 결과 반환: 함수가 실행된 결과를 서버 스텁이 직렬화하여 네트워크를 통해 클라이언트로 반환.

  5. 클라이언트 처리: 클라이언트 스텁이 서버로부터 전달받은 결과를 역직렬화하고 클라이언트 프로그램에 전달.

  • Stub은 클라이언트 서버 간 통신을 도와주는 역할을 합니다.

  • 직렬화는 네트워크 전송을 위해 이진 형식 또는 문자열 형식을 변환하는 과정입니다. (예를 들어, 객체를 JSON 문자열로 변환)

  • 역직렬화는 데이터를 원래의 형태로 복원하는 과정입니다.

  • 직렬화, 역직렬화가 필요한 이유는 효율적인 통신을 위함입니다.

 

RPC의 장점과 단점

장점

  • 개발 편의성: RPC를 사용하면 네트워크 통신 부분을 추상화하여 코드의 복잡성을 줄일 수 있습니다. 개발자는 마치 로컬 함수를 호출하듯 원격 함수를 호출할 수 있습니다.

  • 일관된 인터페이스: 함수 호출 방식이 일관되어 클라이언트와 서버 간의 통신이 쉽게 이루어집니다.

단점

  • 네트워크 의존성: 네트워크 상태에 따라 호출이 지연되거나 실패할 수 있습니다. 네트워크 문제를 고려하여 에러 처리 로직을 추가해야 합니다.

  • 플랫폼 종속성: 일부 RPC 구현은 특정 플랫폼이나 언어에 종속적일 수 있습니다. 이를 해결하기 위해 gRPC와 같은 크로스 플랫폼 프레임워크가 많이 사용됩니다.

#RPC 장점과 단점#RPC 작동 원리#RPC와 일반적인 API 호출의 차이점#RPC란?#backend