핵심 요약
토스가 주최하는 개발자 컨퍼런스 SLASH 26이 5월 13~14일 양일간 강남 르네상스 호텔에서 진행 중이다. 가장 화제가 된 발표는 코어 챕터 박재성 시니어의 "GraphQL에서 tRPC로 — 6개월의 마이그레이션 회고". 풀스택 TypeScript 환경에서 GraphQL을 버리고 tRPC로 옮긴 의사결정과 트레이드오프를 솔직하게 공개했다.
- 발표 일시: 5월 13일 14:00, 그랜드볼룸
- 발표자: 박재성 시니어 (토스 코어 챕터)
- 관련 시스템: 토스 증권 + 토스 페이먼츠 일부
- 실시간 시청: 800석 만석, 라이브 스트리밍 1.2만 명 동시 접속
왜 GraphQL을 버렸나
토스는 2021년부터 GraphQL을 풀스택 표준으로 사용했다. 4년 사용 끝에 옮긴 이유:
- 풀스택 TS 환경: 모든 코드가 TS인 환경에서 GraphQL 스키마는 별도 정의 — 중복
- 코드 생성: codegen이 빌드 시간 6분 추가 + CI 안정성 이슈
- 런타임 오버헤드: GraphQL 파싱·resolver 호출이 평균 8~14ms 추가
- 학습 곡선: 신입 개발자 온보딩 평균 3주
- 외부 노출 X: 토스 GraphQL은 사내 전용 — REST보다 GraphQL의 장점이 의미 약했음
tRPC를 선택한 이유
| 비교 | GraphQL | tRPC |
|---|---|---|
| 스키마 정의 | 별도 .graphql | TS 코드 자체 |
| 코드 생성 | 필요 (codegen) | 불필요 (타입 추론) |
| 런타임 | 파싱·resolver | 일반 함수 호출 |
| 외부 노출 | 표준 GraphQL | 자사 풀스택 전용 |
| 모바일 클라이언트 | 지원 풍부 | 자체 어댑터 필요 |
마이그레이션 6개월 회고
Phase 1 — 신규 API만 tRPC로 (2개월)
- 전체 약 1,800개 endpoint 중 신규 130개를 tRPC로 작성
- GraphQL과 공존 — Gateway가 라우팅
- 학습·문제 파악 위주
Phase 2 — 핵심 도메인 마이그레이션 (3개월)
- 토스증권 핵심 API 320개 변환
- 각 변환마다 회귀 테스트 + 카나리 배포
- 실측: 평균 P99 응답시간 12ms 감소
Phase 3 — 정리 (1개월)
- 나머지 API 변환
- GraphQL 인프라 제거 — codegen 파이프라인·resolver 등
- 빌드 시간 6분 → 1분 (84% 감소)
실측 — 마이그레이션 효과
| 지표 | GraphQL 시점 | tRPC 이후 |
|---|---|---|
| 풀스택 빌드 시간 | 11분 | 3.5분 (-68%) |
| P99 응답 시간 (API 평균) | 72ms | 58ms (-19%) |
| 신입 온보딩 시간 | 3주 | 1주 |
| API 정의 → 호출 라인 수 | 평균 47줄 | 평균 18줄 |
| codegen 인프라 비용/월 | $1,200 (CI) | $0 |
예상치 못한 어려움
- 모바일 클라이언트: iOS·Android에 tRPC 클라이언트 없음 — 자체 OpenAPI 어댑터 추가 개발
- 외부 파트너: 일부 GraphQL endpoint는 외부 파트너 호환 위해 유지 (전체 5%)
- 회의 시간: "tRPC 안 써본 시니어"의 거부감 — 의사결정 회의에 시간 많이 소요
발표자 박재성 시니어의 결론
"GraphQL이 나쁜 게 아니다. 풀스택 TS + 사내 전용이라는 조건에서 GraphQL의 가치가 떨어진 것이다. 외부 API·다양한 클라이언트가 있다면 GraphQL이 여전히 답이다. 토스 SLASH 26의 메시지는 단순하다: 너의 회사 조건에 맞는 도구를 골라라. 트렌드 따라가지 마라."
현장 반응
발표 직후 Q&A 시간에 30분 동안 질문이 끊이지 않았다. 가장 많은 질문은 "우리도 옮겨야 하나" — 박재성 시니어는 "답은 회사마다 다르다. 코드 생성 인프라·온보딩 시간·외부 노출 여부 3가지를 우선 보라"고 조언했다.
다른 인기 세션
| 제목 | 발표자 | 일시 |
|---|---|---|
| 토스 인증 — 4억 사용자 무중단 마이그레이션 | 유지원 (토스뱅크) | 5/13 16:00 |
| 토스 핀테크 보안 SDLC | 김민혁 (토스 보안팀) | 5/13 17:30 |
| 토스의 모놀리스 분리 — 잘된 것, 후회한 것 | 강도훈 (토스코어) | 5/14 10:00 |
| 토스 데이터 플랫폼 — 페타바이트 SQL 인프라 | 이정환 (토스 데이터) | 5/14 14:00 |
온라인 시청
SLASH 26 모든 발표는 5월 20일 토스 유튜브 채널에 공개된다. 박재성 시니어의 GraphQL→tRPC 마이그레이션 발표는 작년 SLASH 25의 인기 1위였던 "토스 SLASH 21·22·23·24의 회고"를 넘는 조회수가 예상된다.

댓글 0