RPC (Remote Procedure Calls) 란?
RPC (Remote Procedure Calls)란 원격에 있는 함수를 호출해 주는 프로세스 간 통신 기술입니다.
RPC는 플랫폼에 제약 없이 사용할 수 있어 분산 시스템 기법에 효과적입니다.
RPC는 IDL(Interface Definition Language)
를 사용하여 인터페이스를 명시합니다.
대표적인 IDL은 아래와 같습니다.
- Google 의 ProtocolBuffer
- Facebook 의 Thrift
- Twitter 의 Finalge
RPC 동작 흐름
RPC는 아래와 같이 동작합니다.
- 클라이언트에서 매개변수를 Stub에 전달합니다.
- 클라이언트 Stub에서 매개변수를 메시지로 마샬링합니다.
- 클라이언트 Stub은 메세지를 전송계층으로 전달하여 Server에 보냅니다.
- 서버에서 메시지를 받아 Stub으로 전달하고 매개 변수를 언마샬링 하여 함수를 호출합니다.
- 함수 수행이 완료되면 서버 Stub으로 리턴되며 리턴값을 메시지로 마샬링합니다.
- 결과 메시지를 클라이언트에 보내고 클라이언트는 언마샬링 후, 리턴값을 호출자에게 반환합니다.
Marshaling / UnMarshaling 의미
-
Marshaling
은 데이터를 바이트로 쪼개서 TCP/IP 같은 통신 채널을 통해 전송될 수 있는 형태로 바꿔주는 과정입니다. -
UnMarshaling
은 반대로 전송받은 바이트를 원래의 형태로 복원하는 과정입니다.
레이어 설명
Client/Serve
- 사용자(Client / Server)가 필요한 비즈니스 로직을 작성하는레이어
- IDL(interface definition language)로 작성
Stub
- Stub Compiler가 IDL 파일을 읽어 원하는 Language로 생성
- Parameter 객체를 Message 형태로 Marshaling/Unmarshalling 하는 레이어
RPC Runtime
- Client와 Server를 연결하는 레이어
- 통신 중 발생한 에러처리도 진행