IT 최신 뉴스

GitHub Copilot의 백엔드 아키텍처 설계 방법

Pro.Dev 2025. 3. 27. 11:04
반응형

GitHub Copilot의 도전과 해결

설명 영상 링크 : https://youtu.be/M0Ev-mD5LsM

근본적인 이유: 클라우드 AI와 로컬 IDE의 괴리

GitHub Copilot이 직면한 여러 문제들의 근본적인 원인은 "AI 모델 기반 코드 자동완성을 IDE 수준의 속도로 제공해야 한다"는 근본적인 모순에 있습니다. 일반적인 IDE 자동완성은 로컬에서 즉시 실행되지만, AI 모델 추론은 클라우드에서 수행되어야 하기 때문에 네트워크 지연이 불가피합니다. 여기에 전 세계 사용자를 지원해야 하는 글로벌 서비스의 특성과 보안 요구사항까지 더해져 복잡한 기술적 도전이 발생했습니다.이러한 근본적인 모순에서 다음 세 가지 핵심 문제가 발생했습니다:

 

핵심 문제 3가지

1. 네트워크 지연으로 인한 느린 응답 속도

발자들은 자동완성이 200ms 이내에 응답하기를 기대합니다. 그러나 일반적인 클라우드-클라이언트 통신은 TCP+TLS 핸드셰이크에만 300ms 이상이 소요됩니다. 매 요청마다 이런 지연이 발생하면 개발자들은 Copilot을 "느리다"고 인식하고 사용하지 않게 됩니다.

 

2. 사용자 타이핑 패턴에 따른 요청 취소와 자원 낭비

Copilot은 사용자가 코딩을 잠시 멈출 때 자동완성을 제안합니다. 그러나 요청을 보낸 후 사용자가 계속 타이핑하면 해당 요청은 무의미해집니다. 실제로 전체 요청의 45%가 이런 식으로 취소되었고, 이는 비싼 AI 연산 자원의 대규모 낭비로 이어졌습니다.

 

3. 전 세계 사용자에게 일관된 성능 제공 문제

리적 거리에 따른 지연은 불가피하며, 아시아나 오세아니아의 사용자가 미국 서버에 접속하면 수백 ms의 추가 지연이 발생합니다. 이는 세계 각지의 개발자들에게 동등한 사용 경험을 제공하는 데 큰 장벽이 되었습니다.

해결을 위한 아키텍처 설계

GitHub 팀은 이러한 문제들을 해결하기 위해 다음과 같은 혁신적인 아키텍처를 설계했습니다:

1. HTTP/2 기반 프록시 시스템 도입

GitHub copilot-proxy라는 HTTP/2 기반 프록시 서버를 개발했습니다. 이 프록시는:

  • 하나의 TCP 연결에서 여러 요청을 멀티플렉하여 핸드셰이크 비용 절감
  • 장기 연결(Long-lived Connection) 유지하여 TCP 최적화 활
  • 스트리밍 방식의 응답으로 사용자에게 실시간처럼 느껴지게 함
  • Go 언어의 Context 객체 활용해 요청 취소를 효율적으로 처리

를 통해 연결 오버헤드를 크게 줄이고, 응답 속도를 200ms 이내로 유지할 수 있었습니다.

 

2. 전 세계 분산 배치와 지능형 라우팅

GitHub는 Azure와 협력하여:

  • 델과 프록시를 전 세계 여러 Azure 리전에 함께 배치
  • octoDNS를 활용해 사용자를 가장 가까운 리전으로 자동 라우
  • 헬스 체크 기반 페일오버 시스템으로 안정성 확보
  • 기 치유(self-healing) 구로 장애 상황에서도 서비스 지속

이 접근법으로 전 세계 어디서나 일관된 속도로 Copilot을 사용할 수 있게 되었고, 특정 지역의 장애가 전체 서비스 중단으로 이어지지 않게 되었습니다.

 

3. 인증 및 요청 관리 최적화

인증과 요청 관리를 위해:

  • 짧은 수명의 토큰(10~30분) 발급하여 보안 강화
  • 요청 취소 사전 감지 능으로 불필요한 연산 방지
  • 프록시에서 실시간 요청 수으로 문제 있는 요청 필터링
  • GitHub Load Balancer(GLB) 도입으로 완전한 HTTP/2 지원

이러한 설계로 보안을 유지하면서도 사용자 경험을 해치지 않는 인증 시스템을 구축하고, 자원 낭비를 크게 줄일 수 있었습니다.

 

결과

러한 아키텍처 혁신을 통해 GitHub Copilot은 네트워크를 통해 작동하면서도 로컬 IDE와 비슷한 응답 속도를 제공할 수 있게 되었습니다. 프록시 시스템은 단순한 인증 중계 역할을 넘어 전체 서비스의 핵심 컴포넌트로 발전했으며, 전 세계 분산 배치 전략은 지리적 제약을 극복하는 데 결정적인 역할을 했습니다.GitHub Copilot의 사례는 클라우드 기반 AI 서비스가 어떻게 네트워크 지연, 자원 효율성, 글로벌 일관성이라는 근본적인 도전을 혁신적인 아키텍처 설계를 통해 해결할 수 있는지를 보여주는 훌륭한 예시입니다.

반응형