카카오, 토스 개발자가 알려주는 수백개의 MSA 환경에서의 성능 보장을 위한 RPC 처리 기법
INTERFACE DEFINITION · order.proto
서비스끼리도
REST로 부르고 있다면
밖에서 들어오는 요청은 REST가 맞습니다. 그런데 서비스가 서비스를 부르는 안쪽 통신까지 같은 방식이면, 서비스가 늘어날수록 헤더와 직렬화에 쓰는 비용이 함께 늘어납니다.
- 난이도 입문
- Go 실습
- Protocol Buffers
- 스트리밍 통신
- 수강기한 무제한
gRPC는 인터페이스를 문서가 아니라 파일로 먼저 정의합니다. 서버와 클라이언트 코드가 이 파일에서 생성되기 때문에, 규격이 어긋나면 컴파일 단계에서 걸립니다.
2 · 시작
실제로 오간 대화입니다
카카오와 토스, 두 곳의 현직 개발자가 같은 이야기를 했습니다.
3 · 통신 방식
부르는 방법이 네 가지입니다
어느 쪽이 스트림인지에 따라 넷으로 나뉩니다. 실시간 기능을 만들 때 무엇을 고를지가 여기서 갈립니다.
CLIENTSERVER
Unary
요청 하나에 응답 하나. 가장 많이 쓰이고 반드시 알아야 하는 형태입니다.
CLIENTSERVER
Server Streaming
한 번 요청하고 응답을 여러 번 나눠 받습니다. 진행 상황을 밀어 주는 자리에 씁니다.
CLIENTSERVER
Client Streaming
여러 번 보내고 마지막에 응답을 한 번 받습니다. 묶어서 올리는 작업에 맞습니다.
CLIENTSERVER
Bidirectional
양쪽이 동시에 주고받습니다. 동시성 주의사항을 함께 봅니다.
섹션 5가 이 자리입니다. 마지막 실습의 메신저 예제가 Unary만으로는 안 되는 자리를 그대로 보여 줍니다.
4 · 커리큘럼
무엇을 어떤 순서로 다루나
배경과 proto 설계를 잡고 통신 방식과 최적화를 거쳐 전체 실습으로 끝납니다.
01
강의 소개
- 강의 소개
- Source Code
- gRPC 강의 요약 파일
- 공식 gRPC 홈페이지
02
개발 환경별 언어의 차이
- 개발 환경에 대한 Java vs Go의 차이 알아보기
03
분산 시스템의 발전과 그에따른 단점들
- 왜 다양한 프로토콜이 존재하고 발전될까
- 분산 시스템에서의 대표적인 문제와 RPC 패러다임
- Google은 왜 gRPC를 사용하고 도입했을까
- 섹션 3 퀴즈
04
Protocol Buffers와 .proto 작성법
- Protocol Buffers와 그에따른 설계 철학
- 기본 .proto 문법 작성과 메시지간에 연관 관계 맺기
- 고급 .proto 패턴과 실무적인 메시지 모델링 하기
- 섹션 4 퀴즈
05
gRPC에서의 다양한 통신 기법
- 가장 많이 사용되고 반드시 알아야 하는 Unary RPC 통신 및 최적화
- 실시간 통신에 필수로 사용이되는 Streaming RPC 통신
- Bidirectional Streaming RPC 주의 사항 및 동시성
- 섹션 5 퀴즈
06
gRPC에서의 최적화 기법과 구현 기능
- gRPC Performance Best Practice
- 통신 안정화를 위한 Flow Control & 코드 재사용을 위한 Interceptors
- gRPC Load Balancing & Reflection의 유용함
- Graceful Shutdown을 통한 리소스 정리 & Request Hedging을 통한 최적화
- 섹션 6 퀴즈
07
gRPC 전체 실습
- 카카오 쇼핑하기와 같은 이커머스 플랫폼 proto 설계하기
- 자동 코드 생성 기능을 통해 생성된 pb 파일 분석
- eCommerce Business Logic 분석하며 배우는 gRPC 구현
- eCommerce gRPC Server와 Client 구성에 따른 코드 분석 및 테스트
- KakaoTalk과 같은 양방향 통신 메시지 플랫폼 proto 설계하기
- Stream 통신을 위한 Client, Server gRPC 코드 분석하기
- 섹션 7 퀴즈
5 · 실습
두 가지를 처음부터 만듭니다
문법만 배우고 끝나지 않게, 성격이 다른 두 서비스를 각각 설계하고 구현합니다.
LAB 01
이커머스 플랫폼
- 쇼핑 플랫폼의 proto를 직접 설계합니다
- 자동 생성된 pb 파일이 무엇을 만들어 냈는지 뜯어 봅니다
- 비즈니스 로직을 분석하며 서버와 클라이언트를 구성합니다
- 구성한 뒤 테스트까지 이어집니다
LAB 02
양방향 메시지 플랫폼
- 메신저 형태의 proto를 설계합니다
- 스트림 통신을 위한 서버·클라이언트 코드를 분석합니다
- Unary만으로는 안 되는 자리가 어디인지 직접 확인합니다
- 앞에서 배운 동시성 주의사항이 여기서 쓰입니다
실습은 Go로 진행합니다. 섹션 2에서 Java와 Go의 개발 환경 차이를 먼저 짚기 때문에 Go가 처음이어도 출발점은 있습니다.
6 · 대상
이 강의는 누구를 위한 강의인가요
7 · 지금 시장
AI가 개발자를 대체한다는 이야기
신입 채용은 줄고, 기업은 검증된 사람만 뽑으려 합니다. 최근 몇 달 사이 나온 기사들입니다.
- 2025사상 최대 실적을 낸 크래프톤이 인력 감원에 나섰습니다. 'AI 퍼스트' 기업으로 전환하겠다는 이유였습니다.
- 2025SW 전문기업들이 신입 개발자 채용을 중단하고 있습니다. 초급 개발자 채용이 77% 급감할 것이라는 전망도 나왔습니다.
- 2025게임 디자이너의 53%가 "AI가 내 일을 대체할 것"이라고 답했습니다. 권고사직 사례도 보고됐습니다.
기업이 불안한 만큼 뽑히는 쪽은 더 분명한 차이를 보여줘야 합니다. 프로토콜 이름을 아는 것과 왜 그것을 골랐는지 설명하는 것은 다른 이야기입니다.
8 · 수강평
먼저 들은 분들의 이야기
인프런 수강평에서 그대로 옮겼습니다.
정말 유익한 내용이었습니다. 구체적으로 표현하자면 첫째, MSA에서 왜 HTTP로는 구현의 한계가 있는지 알 수 있었다. 둘째, 기본부터 심화까지 다양한 요구사항을 대응할 수 있는 RPC 설계를 알게 되었다. 셋째, RPC를 사용하는 과정에서 고려해야 하는 부분들을 알게 되었다. 넷째, 연결 최적화나 프로토콜 레벨에서의 연결 재사용 등 쉽게 알지 못하는 내용을 학습할 수 있었다.
이병석 · 100% 수강 후 작성
개발에 미칠 수 있을 만큼의 너무 유익한 내용이었습니다. 일반적으로 보기 힘든 주제에 관심 있는 내용이어서 이런 강의 제공해 주셔서 너무 감사합니다.
개발에 미친자 · 92% 수강 후 작성
이론부와 실습부가 적절히 분배되어 있습니다. gRPC 입문 등에서 가격 대비 만족한 강의였습니다.
Rojojun · 100% 수강 후 작성
9 · 만든 사람
세 명이 함께 만들었습니다
카카오와 토스에서 각각 현업을 하고 있는 두 개발자, 그리고 판교 플랫폼 서버 개발자 Hong입니다.
KAKAO · BACKEND & DATA ENGINEER
Choi
제1금융권을 거쳐 지금은 카카오에서 백엔드와 데이터 엔지니어링을 담당하고 있습니다. 면접관으로도 활동하고 있습니다.
"MSA 이야기가 나오면 면접에서 RPC를 반드시 묻습니다."
TOSS · BACKEND ENGINEER
Toss 개발자
지방에서 컴퓨터공학을 전공하고 네이버를 거쳐 지금은 토스에서 백엔드를 개발하고 있습니다.
"HTTP로만 통신하면서 MSA를 다 만들었다는 건, 사실 완성이 아닙니다."
지식공유자 · 판교 플랫폼 서버 개발
Hong
비전공자로 시작해 지금은 판교에서 플랫폼 백엔드를 개발하고 있습니다. 현업의 지인들과 함께 강의를 만듭니다.
"바깥과 안쪽은 다른 문제라는 걸 알고 나면 선택이 달라집니다."
10 · 질문
gRPC 강의 자주 묻는 질문
Q.Go를 몰라도 들을 수 있나요?
⌄
Q.REST를 버리고 gRPC로 가야 하나요?
⌄
Q.Protocol Buffers는 어디까지 다루나요?
⌄
Q.스트리밍 통신도 다루나요?
⌄
Q.운영에서 필요한 것들도 나오나요?
⌄
Q.면접 준비에 도움이 되나요?
⌄
안쪽 통신은 다르게 설계합니다
서비스가 늘어날수록 비용이 곱해지는 자리가 어디인지 알고 나면 선택이 달라집니다.
결정하기 전에 커리큘럼 다시 훑어보기개발자 오픈채팅 커뮤니티
강의를 듣다 걸리는 부분, 자기 서비스에 적용하면서 생기는 질문, 커리어 이야기까지 나누는 공간이 따로 있습니다. 막히는 자리는 대체로 남들도 막힙니다.