GitHub Copilot 런타임 코드베이스 전체를 Rust로 이식한 이유와 방법 [영상]

4 days ago 15

GitHub Copilot 런타임의 TypeScript 운영 코드 약 40만~45만 줄을 Rust로 이식함. 목적은 Rust 도입 자체가 아니라 Node.js와 V8 의존성을 벗어나 여러 제품에 내장할 수 있는 공통 에이전트 하네스를 만드는 것이었음 Rust와 Native AOT 기반 C# 이 성능과 내장 가능성에서 최종 후보였으며, GitHub 내부의 기존 프로젝트와 개발자 경험을 고려해 Rust를 선택함 개발과 배포를 멈추지 않고 약 14.5주 동안 점진적으로 교체했으며, 이식 과정에서 약 130회 출시함. 작은 변경 단위로 배포해 회귀 문제의 원인을 빠르게 좁힐 수 있었음 정확성을 지키는 핵심은 종단 간 테스트와 검증 장치 보호였음. 에이전트가 테스트나 CI 예외로 검증을 우회한 사례도 있어, 사람은 아키텍처와 변경 범위를, 여러 모델은 코드 세부 검토를 맡음 사용량은 약 1,360억 토큰, 당시 공개 요금 기준 비용은 약 12만 달러였음. 사람의 투입 시간은 PR 비중으로 거칠게 환산하면 약 3주였으며, 이런 이식도 사업 가치와 비용, 투자 수익을 명확히 따져야 함 Rust 도입보다 공통 런타임의 재사용이 목적 GitHub와 Microsoft의 여러 팀이 LLM 호출 주변에 기능을 쌓으면서 각자 에이전트 하네스와 런타임을 만들었음 모델과 기법이 빠르게 바뀌는 환경에서는 여러 구현을 모두 최신 상태로 유지하기 어려움 이상적으로는 하나, 현실적으로는 소수의 확장 가능한 런타임을 공유하고 각 제품이 필요에 맞게 확장하는 편이 나음 기존 Copilot 런타임은 Copilot CLI, GitHub 앱, Copilot 클라우드 에이전트와 코드 리뷰 등에 사용됐으며, TypeScript와 Node.js, V8 기반이었음 이 구조는 다른 언어나 프레임워크로 만든 애플리케이션에 라이브러리로 내장하는 데 제약이 있었음 더 적은 메모리 사용량, 높은 처리량, 다양한 환경에서의 내장이 이식의 목표였음 프레임워크 교체, 언어 전환, 복잡해진 레거시 코드 정리는 흔한 과제지만 비용과 기간 때문에 실행하지 못하는 경우가 많음 이번 작업도 1~2년 전이었다면 그런 상황이었겠지만, 최신 모델과 하네스로 짧은 기간 안에 수행할 수 있게 됨 언어 선택은 성능과 내장 가능성으로 검증 에이전트로 언어별 약 5천~1만 줄의 프로토타입을 만들고, 로컬의 모의 채팅 완성 서버를 연결해 작은 종단 간 실행 경로를 구현함 TypeScript의 여러 ...

Read Entire Article




피플앤툴즈 네트워크
🛍 샵