The System Design Newsletter

The System Design Newsletter

How RPC Actually Works

#96: What Is RPC? Understanding Remote Procedure Calls for Microservices.

Neo Kim's avatar
Ashutosh Maheshwari's avatar
Neo Kim and Ashutosh Maheshwari
Oct 29, 2025

Download my system design playbook for FREE on newsletter signup:


This post outlines how RPC works.

  • Share this post & I'll send you some rewards for the referrals.

How do hundreds of internal services at a company like Netflix or Google talk to each other? And that too, at millions of times per minute?

A standard REST API, while great for public use, often creates too much overhead for this internal, high-speed chatter. Because it typically uses text-based formats like JSON. While easy for humans to read, it’s inefficient for services that need to have millions of conversations per day.

Instead, these services need to talk in a language that is incredibly compact and fast for computers to process. Plus, they need a pre-agreed set of rules, like a shared blueprint, that guarantees both sides know exactly how to talk to each other without errors.

And most importantly, it should offer a good developer experience without sacrificing performance.

Modern applications use many distributed services. Yet this creates a core challenge:

How to achieve extreme machine-to-machine efficiency? A function call across a network should feel as simple as a local one.

The answer is Remote Procedure Call (RPC). It’s a protocol designed for high-performance internal communication.

Onward.


I want to introduce Ashutosh as a guest author.

He’s a software engineer at YouTube, ex-Google Search, and Microsoft Azure.

  • Substack

  • LinkedIn

  • Twitter

  • YouTube

Connect with him if you want to get deep dives into system design, AI, and software engineering.


Meet Dex, an AI-Powered Recruiter for Software Engineers (Sponsored)

Dex is a conversational AI and career matchmaker that works on behalf of each person. You spend 15-20 minutes on the phone with him, talking about your experience, your ambitions, and your non-negotiables.

Dex then scans thousands of roles and companies to identify the most interesting and compatible opportunities.

Once we’ve found a match, Dex connects you to hiring managers and even helps you prep for interviews.

Thousands of exceptional engineers have already signed up, and we’re partnered with many of the UK’s leading start-ups, scale-ups, hedge funds, and tech companies.

Don’t waste another day at a job you hate. Speak with Dex today.

Try for Free


What Is a Remote Procedure Call

Let’s dive in!

RPC is a protocol that allows a function call to cross from one program’s address space into another. This frees the developer from manually managing the raw network connection points (sockets) or translating data into a sendable format (serialization).

When your code calls a function like math.sqrt(9), you aren’t concerned with the complex algorithm running inside the math library. You simply trust its public API and know the function’s signature.

RPC extends this exact concept across the network.

The client application gets a stub object - a local proxy that mirrors the remote service’s API. But its methods contain only the logic to forward the call over the network. When you call a function on this stub, it handles all the complex network communication behind the scenes to execute the code on the server.

So, a call like result = paymentService.charge(userId, amount) doesn’t call the payment logic directly. Instead, it calls a local proxy method, which then makes a remote operation. This makes the remote call feel like a simple local library call.

Before we go further, let’s understand this first:


How Remote Procedure Call Works

Subscribe for free to continue reading

Enter your email and get every post from The System Design Newsletter.
Already have an account? Sign in
© 2026 Neo Kim · Publisher Privacy
Substack · Privacy ∙ Terms ∙ Collection notice
Start your SubstackGet the app
Substack is the home for great culture