목록 보기
타입스크립트스럽게 성능과 생산성 두 마리 토끼 모두 잡기
백엔드

타입스크립트스럽게 성능과 생산성 두 마리 토끼 모두 잡기

데브시스터즈
데브시스터즈
2024년 9월 4일

두줄요약

웹 기반 게임 Admin의 gRPC 통신에서 FE와 BE용 API 중복 구현 문제를 Proxy로 해결한 사례를 소개했습니다. 코드 생성 결과를 JSON 메타데이터로 바꿔 부팅 부담도 줄였습니다.

문제 상황

  • 웹 기반 게임 Admin에서 gRPC 게임 서버와 통신해야 하는데, 브라우저 제약으로 직접 gRPC 호출이 어려운 구조
  • protobuf code-gen은 주로 Node.js 런타임 대상이라 FE ↔ BE 구간에 재사용하기 어렵고, gRPC 메서드 추가마다 REST endpoint를 반복 작성해야 하는 불편
  • 생성 코드가 많아질수록 Admin BE 부팅 시간과 코드 유지 부담이 커지는 문제

해결 방법

  • JavaScript Proxy로 프로퍼티 접근 경로를 누적해 FE에서 beClient처럼 보이는 동적 API 클라이언트 구현
  • apply() handler로 실제 호출 시점에 /grpc 단일 엔드포인트로 path와 payload 전송
  • 코드 생성 결과를 JavaScript 대신 JSON 메타데이터 중심으로 바꿔 직렬화/역직렬화 로직을 단순화

적용해볼 점

  • 타입 정보와 런타임 메타데이터를 결합해 FE/BE 간 API 중복 구현을 줄이는 방식
  • 대규모 스키마 환경에서 code-gen 산출물을 줄여 부팅 성능과 운영 부담을 낮추는 접근

다음 읽기

#gRPC 주제를 다룬 다른 회사 글

Web을 위한 gRPC Stub과 Runtime 생성하기 - Feat. Buf & kubernetes

Buf 플러그인으로 gRPC-Gateway용 타입 안전 HTTP 클라이언트를 자동 생성했습니다. SSR에는 Kubernetes 내부 DNS를 적용해 응답 시간과 IPS 부하를 줄였습니다.

뱅크샐러드
뱅크샐러드
프론트엔드
전체 보기

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...