Toss의 gRPC
2026. 4. 7. 12:45ㆍSpring Microservice
토스(Toss)는 대한민국 금융 IT 업계에서 gRPC를 가장 적극적이고 수준 높게 사용하는 기업 중 하나로 유명합니다. 토스의 기술 블로그나 컨퍼런스(Slash) 발표 내용을 보면, 그들이 왜 그리고 어떻게 gRPC를 쓰는지 실무적인 힌트를 많이 얻을 수 있어요. 🚀
토스가 gRPC를 다루는 방식은 우리가 앞서 이야기한 '실무 레벨의 쇼핑몰' 설계에 아주 좋은 이정표가 됩니다.
1. 📂 토스의 gRPC 관리법: "IDL 중앙 집중화"
토스는 수백 개의 마이크로서비스가 얽혀 있는 구조입니다. 각 팀이 자기 맘대로 .proto 파일을 만들면 관리가 안 되겠죠?
- 중앙 저장소: 모든 서비스의
.proto파일을 하나의 Git 레포지토리에서 관리합니다. - 자동화된 배포: 누군가
.proto파일을 수정해서 푸시하면, CI/CD 파이프라인이 동작하여 Java(Spring), Go, Node.js용 라이브러리를 자동으로 빌드하고 사내 넥서스(Private Repository)에 배포합니다. - 결과: 개발자는 그저
dependency에 한 줄 추가하면 최신 gRPC 스텁(Stub) 코드를 바로 쓸 수 있습니다. 📦
2. 🛡️ 보안과 인증 (Internal Security)
금융 서비스인 만큼 보안이 생명이죠. 토스는 gRPC의 인터셉터(Interceptor)를 적극 활용합니다.
- 공통 인터셉터: 모든 gRPC 호출 시점에 토큰을 검증하거나, 호출하는 서비스가 누구인지(Client ID) 확인하는 로직을 공통 라이브러리로 만들어 배포합니다.
- 어노테이션 기반 권한 제어: 스프링 부트 환경에서 특정 gRPC 메서드에
@RoleCheck같은 커스텀 어노테이션을 붙여 권한을 관리하기도 합니다. 👮♂️
3. 📊 관찰성 (Observability)
서비스가 복잡해지면 "어디서 에러가 났지?"를 찾는 게 일입니다.
- Distributed Tracing: gRPC 헤더에
Trace ID를 실어 보내서, 하나의 요청이 여러 서비스를 거쳐갈 때의 전체 경로를 시각화합니다. (Zipkin이나 Jaeger 활용) - 표준 에러 핸들링: gRPC는 HTTP 상태 코드와 다른 독자적인 에러 코드를 가집니다. 토스는 이를 사내 표준에 맞춰 맵핑하여, 에러 발생 시 어느 레이어에서 문제가 생겼는지 즉시 알 수 있게 설계합니다. 🔍
💡 토스도 "Outbox 패턴"을 쓸까요?
네, 당연히 씁니다! gRPC가 아무리 빨라도 '비동기 처리'가 필요한 영역은 반드시 존재하기 때문입니다.
- gRPC 구간: 송금 요청, 잔액 조회, 카드 승인 등 사용자가 결과를 바로 확인해야 하는 구간 💸
- Kafka(Outbox) 구간: 송금 완료 후 푸시 알림, 내역 저장, 혜택 포인트 지급 등 조금 늦어도 정확히 처리되어야 하는 구간 🔔
'Spring Microservice' 카테고리의 다른 글
| gRPC vs Outbox 패턴 (0) | 2026.04.07 |
|---|---|
| QueryDSL에서 Elasticsearch로: 검색 엔진 도입이 백엔드에 가져온 변화 (1) | 2026.04.07 |
| Spring Cloud BOM (0) | 2026.01.02 |
| Config (0) | 2025.03.02 |
| 1.Welcome to the Spring Cloud (0) | 2025.02.28 |