RPC processing techniques for ensuring performance in environments with hundreds of MSAs, as shared by Kakao and Toss developers
This course covers RPC communication techniques to maximize performance in large-scale MSA (Microservice Architecture) environments. Beyond simple gRPC practice, you will learn how to implement stable and efficient inter-service communication in real-world production environments where hundreds of microservices operate simultaneously. Based on Golang, the curriculum focuses on practical applications, including writing Protocol Buffers (proto) syntax, automated code generation and service implementation, the structure of gRPC and its advantages over traditional RPC, and performance optimization strategies. Designed to be easily understood even by non-majors or entry-level server developers, the course explains everything from the basic concepts of RPC to the internal workings of gRPC step-by-step, helping you build practical skills that can be applied immediately to real services.
I'm a developer working at Toss who has also participated in and helped with lectures. You absolutely must know about RPC communication. Many people say they've implemented MSA by simply implementing it with HTTP, but honestly, I don't agree with that.
In fact, when I went to interviews in the past, whenever MSA architecture came up, they would invariably ask questions about RPC as well, which shows that RPC communication in MSA is one of the extremely important elements in terms of resource optimization and management.
I hope this lecture will be of great help to you.
5.0
Choi
100% enrolled
I'm a developer who worked at Kakao and created this course together with Hong!! I think there are many people who can't properly explain the connection between RPC communication and MSA architecture, and don't understand the importance of their compatibility.
If you can say "I've implemented MSA down to the core level," I believe you must be able to utilize RPC to optimize network-level resources and explain what aspects you improved in this process.
I've prepared this course based on that topic, and I hope you'll find it very helpful after watching the course. Thank you!
5.0
이병석
100% enrolled
This was really beneficial content.. I'm so excited for other lectures and learned so much. To be specific:
1. I was able to understand why there are implementation limitations with HTTP in MSA.
2. I learned about RPC design that can handle various requirements from basic to advanced levels.
3. I became aware of the considerations needed when using RPC.
4. I was able to learn about content that's not easily known, such as connection optimization and connection reuse at the protocol level.
Thank you so much for such a great lecture.
What you will gain after the course
"Why is RPC Necessary?" – Understanding the Essence of High-Performance Communication Beyond REST
Mastering gRPC – From proto design to automatic code generation and building real-world services
The Secret to Sustaining Hundreds of Microservices – Kakao's Performance Guarantee Strategy Revealed
INTERFACE DEFINITION · order.proto
If services are also calling each other via REST
It is correct for external incoming requests to use REST. However, if internal communication between services uses the same method, the costs associated with headers and serialization will increase as the number of services grows.
Difficulty: Beginner
Go Hands-on Practice
Protocol Buffers
Streaming communication
Unlimited access period
// Define the interface first, and code is generated from heresyntax = "proto3";serviceOrderService {rpc CreateOrder (CreateOrderRequest) returns (Order);rpc WatchOrder (WatchRequest) returns (streamOrderEvent);rpc Chat (streamMessage) returns (streamMessage);}
gRPC defines the interface as a file rather than a document first. Since both server and client code are generated from this file, any specification mismatch is caught at the compilation stage.
1 · Problem Definition
The outside and the inside are different matters.
This is not about choosing one over the other. It is about deciding which one to use in which situation.
Classification
Client ↔ Server
Service ↔ Service
The calling side
Browsers and apps. Humans read and debug them.
Other services. Humans rarely need to see it.
Priority
Versatility and Compatibility
Cost and latency per call
Number of calls
As many as the number of users
It is multiplied by the number of users × the number of services.
The right choice
REST / HTTP
gRPC — HTTP/2 · Multiplexing · Header Compression
When there are hundreds of services, header overhead and serialization costs are multiplied by the number of calls. To make that judgment, you need to know what gRPC does differently.
2 · Start
This is an actual conversation that took place.
Current developers from both Kakao and Toss said the same thing.
HHongLooking for someone who has built MSA down to the core level by introducing gRPC.
KKakao DeveloperMe. We haven't implemented it across the board, but some parts are communicating via gRPC. Other teams also use regular RPC or JSON-RPC.
TToss DeveloperWe are also using it in some parts. Since it's a protocol, we use WebSockets and, of course, RPC communication as well.
KKakao DeveloperI understand that even Google uses RPC because HTTP couldn't handle it when traffic spiked. As the number of services increases, network communication costs grow exponentially.
KKakao DeveloperSituations vary by company, but it's a bit of a shame to build an MSA without using gRPC.
TToss DeveloperI agree. I think there are many people who say, "We implemented everything with MSA while communicating via HTTP," but in reality, that's not a perfect implementation.
3 · Communication Methods
There are four ways to call it.
It is divided into four types depending on which side is the stream. This is where the choice of what to use when creating real-time features is determined.
CLIENTSERVER
Unary
One request, one response. This is the most commonly used form and a must-know.
CLIENTSERVER
Server Streaming
Send one request and receive multiple responses in installments. It is used for pushing progress updates.
CLIENTSERVER
Client Streaming
You send multiple times and receive a single response at the end. This is suitable for batch upload tasks.
CLIENTSERVER
Bidirectional
Both sides send and receive simultaneously. We will also look at concurrency precautions.
Section 5 is where this belongs. The messenger example in the final practice session clearly demonstrates why Unary alone is not enough.
4 · Curriculum
What will be covered and in what order
It begins with the background and proto design, moves through communication methods and optimization, and concludes with a comprehensive hands-on exercise.
01
Course Introduction
Course Introduction
Source Code
gRPC Lecture Summary File
Official gRPC Website
02
Differences in languages by development environment
Learning the differences between Java vs Go regarding the development environment
03
The evolution of distributed systems and their subsequent drawbacks
Why do various protocols exist and continue to evolve?
Typical Problems in Distributed Systems and the RPC Paradigm
Why did Google use and adopt gRPC?
Section 3 Quiz
04
Protocol Buffers and How to Write .proto
Protocol Buffers and its design philosophy
Writing basic .proto syntax and establishing relationships between messages
Advanced .proto patterns and practical message modeling
Section 4 Quiz
05
Various communication techniques in gRPC
Unary RPC communication and optimization, the most widely used and essential to know.
Streaming RPC communication, which is essential for real-time communication
Bidirectional Streaming RPC Precautions and Concurrency
Section 5 Quiz
06
Optimization Techniques and Implementation Features in gRPC
gRPC Performance Best Practice
Flow Control for communication stabilization & Interceptors for code reuse
gRPC Load Balancing & The Usefulness of Reflection
Resource cleanup via Graceful Shutdown & optimization through Request Hedging
Section 6 Quiz
07
gRPC Comprehensive Hands-on Practice
Designing a proto for an e-commerce platform like Kakao Shopping
Analyzing pb files generated through the automatic code generation feature
Learning gRPC Implementation through eCommerce Business Logic Analysis
Code analysis and testing based on the eCommerce gRPC Server and Client configuration
Designing a proto for a bidirectional communication message platform like KakaoTalk
Analyzing Client and Server gRPC code for Stream communication
Section 7 Quiz
5 · Hands-on Lab
Build two things from scratch.
To ensure you don't just stop at learning grammar, you will design and implement two services with different characteristics.
LAB 01
E-commerce Platform
Design the shopping platform's proto yourself.
We will examine what the automatically generated pb files have created.
Analyze the business logic and configure the server and client.
It continues through configuration and all the way to testing.
LAB 02
Bidirectional messaging platform
Design a messenger-style proto.
Analyze the server and client code for stream communication.
You will see for yourself where Unary alone is not enough.
The concurrency precautions learned earlier are applied here.
The practice sessions will be conducted in Go. Since we will first cover the differences between Java and Go development environments in Section 2, there is a starting point even if you are new to Go.
It doesn't end with just learning the syntax. We will build two services with different characteristics, from proto design to the actual code.
Developers who are curious about how communication is handled in services at the scale of hundreds.
Junior
A backend developer who knows HTTP but has never experienced RPC communication.
Scalability concerns
Developers weighing both traffic scalability and compatibility
Job hunting
Job seekers who want to go one step further than just saying, "I implemented MSA"
7 · Current Market
Stories about AI replacing developers
New hiring is decreasing, and companies are trying to hire only those who are proven. These are articles that have come out in recent months.
2025Krafton, which achieved record-breaking performance, has begun downsizing its workforce. The reason given was its transition into an 'AI-first' company.
2025SW specialized companies are halting the recruitment of new developers. There are also projections that the hiring of entry-level developers will plummet by 77%.
2025 53% of game designers responded that "AI will replace my job." Cases of recommended resignation have also been reported.
As much as companies are feeling uneasy, those being hired must demonstrate an even clearer distinction. Knowing the name of a protocol is one thing, but explaining why you chose it is a completely different story.
8 · Reviews
Stories from those who listened first
I copied this directly from the Inflearn course reviews.
It was truly informative content. To be more specific: first, I was able to understand why there are implementation limits when using HTTP in MSA. Second, I learned about RPC design that can handle various requirements from basic to advanced levels. Third, I learned about the factors that must be considered when using RPC. Fourth, I was able to learn about topics that are not easily encountered, such as connection optimization and connection reuse at the protocol level.
Lee Byeong-seok · Written after 100% completion
It was such informative content that I could truly become obsessed with development. Since it covered topics that are generally hard to find yet very interesting to me, I am so grateful that you provided this lecture.
Crazy about Development · Written after 92% completion
The theory and practice sections are well-balanced. It was a satisfying course for the price, especially as an introduction to gRPC.
Rojojun · Written after 100% completion
9 · Created by
Created by three people together
We are two developers currently working at Kakao and Toss, respectively, and Hong, a platform server developer in Pangyo.
KAKAO · BACKEND & DATA ENGINEER
Choi
After working in the primary financial sector, I am now in charge of backend and data engineering at Kakao. I am also active as an interviewer.
"If the topic of MSA comes up, I always ask about RPC during interviews."
TOSS · BACKEND ENGINEER
Toss Developer
I majored in Computer Science at a regional university and worked at Naver; now, I am developing backends at Toss.
"Saying that you've built a complete MSA while communicating only via HTTP means it's not actually finished."
Knowledge Sharer · Pangyo Platform Server Developer
Hong
I started as a non-major and am now developing platform backends in Pangyo. I create courses together with colleagues currently working in the industry.
"Once you realize that the outside and the inside are different matters, your choices will change."
10 · Questions
gRPC Course Frequently Asked Questions
Q.Can I take this course even if I don't know Go?
⌄
The practice sessions are conducted in Go. Since Section 2 covers the differences between Java and Go development environments first, there is a starting point even for those who use other languages. Furthermore, the focus of this course is not on language syntax but on proto design and communication methods, so it is more important to follow the structure rather than the code itself.
Q.Should we abandon REST and move to gRPC?
⌄
No. There are many places where REST is the right fit for incoming external requests. The issue lies within the internal service-to-service calls; as the number of calls increases, header overhead and serialization costs multiply. The purpose of this course is to enable you to judge which tool to use in which situation.
Q.To what extent are Protocol Buffers covered?
⌄
Section 4 is entirely dedicated to that. Starting from the design philosophy, it covers basic syntax and establishing relationships between messages, all the way to advanced message modeling patterns used in practice. In the final section, we will personally design two systems: e-commerce and a messenger.
Q.Do you also cover streaming communication?
⌄
In Section 5, we start with Unary and cover Streaming RPC and Bidirectional Streaming, even addressing the concurrency issues that require special attention in bidirectional communication. The message platform example in the final lab applies these concepts directly.
Q.Does it also cover things needed for production?
⌄
Section 6 is that very place. It covers performance-related recommendations, Flow Control for communication stabilization, Interceptors for code reuse, load balancing and Reflection, and even Graceful Shutdown and Request Hedging.
Q.Is this helpful for interview preparation?
⌄
This course was co-created by a developer who serves as an interviewer at Kakao and a current developer at Toss. Both agree that whenever MSA is mentioned, they ask about RPC. Knowing the name of a protocol is one thing, but explaining why you chose it is another, and this course focuses on the latter.
Internal communication is designed differently
Once you understand where costs multiply as your service grows, your choices will change.
There is a separate space to discuss everything from parts of the lecture you get stuck on and questions that arise while applying concepts to your own service, to career advice. The places where you get stuck are usually where others get stuck as well.
I started studying development after becoming interested in it while idling at home, and I am currently responsible for platform server development in Pangyo. I am continuing my activities as a knowledge sharer because I want to provide you with the methods I used to study, as well as the various problems and solutions you may encounter in practice.
These lectures are not created solely through my own knowledge. There are others who collaborate on every lecture.
Hello Rojojun, thank you for the kind review. Your feedback is very encouraging. I will continue to provide even more valuable lectures!!
Have a great day!!
I'm a developer working at Toss who has also participated in and helped with lectures. You absolutely must know about RPC communication. Many people say they've implemented MSA by simply implementing it with HTTP, but honestly, I don't agree with that.
In fact, when I went to interviews in the past, whenever MSA architecture came up, they would invariably ask questions about RPC as well, which shows that RPC communication in MSA is one of the extremely important elements in terms of resource optimization and management.
I hope this lecture will be of great help to you.
This was incredibly beneficial content that could drive me crazy with excitement for development. Since it was about a topic that's generally hard to find and that I'm interested in, I'm so grateful that you provided this kind of lecture. I've often watched other lectures by the instructor, and I'll look forward to more in the future. Thank you so much.
Hello, Development Maniac! It feels great that this seems like a course that can make you even more crazy about development 😊😊 Thank you for the good review!
This was really beneficial content.. I'm so excited for other lectures and learned so much. To be specific:
1. I was able to understand why there are implementation limitations with HTTP in MSA.
2. I learned about RPC design that can handle various requirements from basic to advanced levels.
3. I became aware of the considerations needed when using RPC.
4. I was able to learn about content that's not easily known, such as connection optimization and connection reuse at the protocol level.
Thank you so much for such a great lecture.
Hello Mr. Byeongseok Lee, thank you for leaving such a Kind review.
You listed the advantages one by one, which I think will be very helpful for those who are curious about this course. I will continue to work hard to create more beneficial courses. Thank you!