타입스크립트답게 성능과 생산성 모두 잡기
·2024.09.04 09:00
JavaScript Proxy API를 활용해 gRPC 통신용 프론트엔드 클라이언트를 동적으로 구현하여 개발 생산성을 높이는 방법을 소개한다.
쿠키런: 킹덤을 포함한 데브시스터즈의 게임들은 효율적인 실시간 통신을 위해 gRPC 프로토콜을 채택하고 있다. 하지만 브라우저가 gRPC에 필요한 커스텀 헤더를 지원하지 않아, 프론트엔드(FE)가 게임 서버에 직접 호출하는 대신 **Admin Backend(BE)**를 프록시 서버로 두는 구조를 사용한다.
기존 구조에서는 gRPC 메서드가 추가될 때마다 BE에 REST API 엔드포인트를 직접 작성하고, FE에서도 이에 대응하는 클라이언트 코드를 일일이 구현해야 하는 번거로움이 있었다. 이는 protobuf를 통해 데이터 구조를 정의하고 자동화하려는 목적을 퇴색시킨다.
이 문제를 해결하기 위해 JavaScript Proxy를 활용하여 런타임에 동적으로 동작하는 FE 클라이언트를 설계했다. Proxy의 get 핸들러를 통해 객체의 프로퍼티 접근 경로를 캡처함으로써, 별도의 코드 생성(code-gen) 없이도 BE의 타입 시그니처를 그대로 따르는 클라이언트를 구현하여 개발 생산성을 극대화할 수 있다.
이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.
요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.