InfoGrab DocsInfoGrab Docs

AI 아키텍처

요약

이 문서는 GitLab Duo AI 기능이 공유하는 아키텍처를 설명합니다. 다음 다이어그램은 GitLab의 여러 구성 요소가 상호작용하는 방식을 단순화해 보여 줍니다. package Clients { [IDEs, Code Editors, Language Server] as IDE [GitLab Web Frontend] as GLWEB }

이 문서는 GitLab Duo AI 기능이 공유하는 아키텍처를 설명합니다. 이 아키텍처의 배경과 목표는 AI Gateway 아키텍처 설계 문서를 참고합니다.

개요#

다음 다이어그램은 GitLab의 여러 구성 요소가 상호작용하는 방식을 단순화해 보여 줍니다.

PlantUML 다이어그램 (30줄)
소스 코드 보기
@startuml
!theme cloudscape-design
skinparam componentStyle rectangle

package Clients { [IDEs, Code Editors, Language Server] as IDE [GitLab Web Frontend] as GLWEB }

[GitLab.com] as GLCOM [Self-Managed/Dedicated] as SMI [CustomersDot API] as CD [AI Gateway] as AIGW

package Models { [3rd party models (Anthropic,VertexAI)] as THIRD [GitLab Native Models] as GLNM }

Clients -down-> GLCOM : REST/Websockets Clients -down-> SMI : REST/Websockets Clients -down-> AIGW : code completion direct connection SMI -right-> CD : License + JWT Sync GLCOM -down-> AIGW : Prompts + Telemetry + JWT (REST)

SMI -down-> AIGW : Prompts + Telemetry + JWT (REST) AIGW -up-> GLCOM : JWKS public key sync AIGW -up-> CD : JWKS public key sync AIGW -down-> Models : prompts @enduml

  • AI 추상화 계층 - 모든 GitLab 인스턴스(Self-Managed, GitLab.com 등)에는 모놀리스에서 새 AI 기능을 구현하기 위한 프레임워크를 제공하는 AI 추상화 계층이 있습니다. 이 계층은 요청에 컨텍스트 정보를 추가하고 요청 전후 처리를 수행합니다.

시스템#

  • GitLab 인스턴스 - 모든 유형의 GitLab 인스턴스를 구동하는 GitLab 모놀리스입니다
  • CustomersDot - 고객이 시트를 추가해 구독을 구매하고 업그레이드하며 결제 정보를 추가하거나 수정할 수 있게 합니다. Self-Managed 라이선스도 관리합니다.
  • AI Gateway - 모델 호출을 위한 통합 인터페이스를 제공하는 시스템입니다. Runway를 사용해 Google Cloud Run에 배포합니다.
  • 확장 프로그램

GitLab.com과 Self-Managed/Dedicated의 AI Gateway 접근 방식 차이#

  • GitLab.com
    • GitLab.com 인스턴스는 개인 키로 서명한 JWT 인증 토큰을 스스로 발급합니다.
  • 그 밖의 인스턴스 유형
    • Self-Managed와 Dedicated는 라이선스와 AI 액세스 토큰을 CustomersDot과 주기적으로 동기화합니다.
    • Self-Managed와 Dedicated 인스턴스는 트래픽을 적절한 AI Gateway로 라우팅합니다.

SaaS 기반 AI 추상화 계층#

GitLab은 클라우드 호스팅 AI 아키텍처를 운영합니다. 라이선스를 보유한 GitLab Self-Managed 인스턴스는 AI Gateway를 통해 이 아키텍처에 접근할 수 있습니다. 자세한 내용은 설계 문서를 참고합니다.

이렇게 하는 주된 이유는 두 가지입니다. 최고 수준의 AI 모델은 대개 전용 하드웨어에 의존하기 때문에 클라우드 기반이며, 대규모 AI를 적절한 성능으로 처리할 수 있는 자체 관리 인프라를 운영하는 일은 부담이 큽니다. GitLab은 AI에 관심 있는 Self-Managed 고객을 추적하고 있습니다.

AI Gateway#

AI Gateway(이전 명칭 model gateway)는 Self-Managed, Dedicated, GitLab.com 중 어떤 인스턴스를 사용하든 모든 GitLab 사용자에게 AI 기능을 제공하는 독립 서비스입니다. SaaS 기반 AI 추상화 계층은 클라우드 기반 공급자에 직접 접근하는 대신 이 게이트웨이에 연결하는 방식으로 전환됩니다.

GitLab Rails에서 AI Gateway를 호출할 때는 추상화 계층을 사용할 수 있습니다. 기본적으로 이러한 작업은 Puma에서 장시간 실행되는 요청을 막기 위해 Sidekiq job을 통해 비동기로 수행됩니다. Sidekiq으로 지연 시간이 늘어나므로 지연에 민감하지 않은 작업에 사용해야 합니다.

이 문서를 작성하는 시점에 추상화 계층은 여전히 AI 공급자를 직접 호출합니다. 에픽 11484는 이를 변경할 것을 제안합니다.

특정 작업이 지연에 민감하다면 AI Gateway를 직접 호출하도록 결정할 수 있습니다. 이렇게 하면 Sidekiq으로 인한 지연을 피합니다. code_suggestions에는 이미 이 방식을 적용했으며 /api/v4/code_suggestions 아래에 중첩된 API 엔드포인트가 이를 처리합니다. 새로 추가하는 엔드포인트는 /api/v4/ai_assisted 네임스페이스 아래에 중첩해야 합니다. 그렇게 하면 GitLab.com의 요청이 자동으로 GitLab.com의 ai-assisted 플릿으로 라우팅되어 일반 API와 워크로드가 분리되고 필요할 때 확장하기도 쉬워집니다.

지원 기술#

AI 워킹 그룹에서는 여러 기술을 조사하고 검증해 왔습니다. 아래는 검토를 마치고 GitLab 애플리케이션에서 사용하도록 이미 승인된 도구 목록입니다.

다른 모델이나 기술도 사용할 수 있지만, 사용 전에 검토 절차를 거쳐야 합니다. 아이디어를 제안할 때 AI Project Proposal 템플릿을 사용하고 이를 지원하는 데 필요한 새 도구를 함께 기재합니다.

모델#

다음 모델이 사용 승인을 받았습니다.

Code Suggestions#

Code Suggestions는 GitLab Rails 리포지터리의 일부로 통합되고 있으며, 이를 통해 Code Suggestions와 추상화 계층을 사용하는 AI 기능의 아키텍처가 통일되고 다른 AI 기능에도 Self-Managed 지원이 제공됩니다.

다음 표는 Code Suggestions가 현재 제공하는 기능과 통합 과정에서 그 변화가 어떤 모습이 될지를 정리한 것입니다.

주제 세부 내용 현재 처리 위치 향후 처리 위치
요청 처리
IDE(VS Code, GitLab Web IDE, Windows 용 MS Visual Studio 2022, IntelliJ, JetBrains, VIM, Emacs, Sublime)에서 커서 앞뒤의 코드를 포함한 요청을 받습니다 GitLab Rails GitLab Rails
현재 사용자를 인증하고 이 프로젝트에서 Code Suggestions를 사용할 권한이 있는지 확인합니다 GitLab Rails + AI Gateway GitLab Rails + AI Gateway
TreeSitter로 import를 포함하는 등 컨텍스트를 추가하도록 요청을 전처리합니다 AI Gateway 미정
요청을 AI 공급자로 라우팅합니다 AI Gateway AI Gateway
IDE에 응답을 반환합니다 GitLab Rails GitLab Rails
타임스탬프, 응답 시간, 모델 등 요청 내용을 로깅합니다 양쪽 양쪽
텔레메트리
IDE 에서의 사용자 수락 또는 거부 AI Gateway 양쪽
일일 순 사용자 수 GitLab Rails, AI Gateway 미정
오류율, 모델 사용량, 응답 시간, IDE 사용량 AI Gateway 양쪽
언어별 제안 AI Gateway 양쪽
모니터링 양쪽 양쪽
모델 라우팅
현재 사용하지는 않지만, Code Suggestions는 트래픽 비율에 따라 여러 모델로 라우팅하는 기능을 지원합니다 AI Gateway 양쪽
내부 모델
현재 유지 보수되지 않는 기능으로, 자체 인스턴스에서 Triton 안에 모델을 실행하고 요청을 자체 모델로 라우팅하는 기능입니다 AI Gateway AI Gateway

Self-Managed 지원#

GitLab Self-Managed 용 Code Suggestions는 Cloud Connector MVC의 일부로 도입되었습니다.

이 프로젝트의 기술적 해법에 관한 자세한 내용은 Cloud Connector 아키텍처 문서를 참고합니다.

이 해법은 Cloud Connector 제품군 아래의 다른 AI 기능에도 적용되도록 발전시킬 계획입니다.

Code Suggestions 지연 시간#

Code Suggestions의 수락률은 지연 시간에 매우 민감합니다. AI 어시스턴트로 코드를 작성할 때 사용자는 아주 짧게만 멈춘 뒤 코드 블록을 직접 입력합니다. 사용자가 다음 키를 누르는 순간 기존 제안은 무효가 되고 Code Suggestions 엔드포인트로 새 요청을 보내야 합니다. 그 요청 역시 지연 시간에 매우 민감합니다.

지연이 충분히 큰 최악의 경우, IDE가 연속으로 요청을 보내고 사용자는 응답을 기다리지 않고 작업을 이어가면서 그 요청들이 모두 무시될 수 있습니다. 이는 사용자에게 아무런 가치를 주지 못하면서 서비스에 부하만 더합니다.

이 기능의 지연 시간을 어떻게 개선해 나갈지에 관한 논의는 이슈 418955를 참고합니다.

아키텍처의 향후 변경 사항#

  • 지연 시간을 개선하기 위해 AI Gateway를 여러 리전에 배포할 계획입니다(에픽 Multi-region support for AI Gateway 참고).
  • 텔레메트리를 중앙화하려고 하지만, AI(또는 Cloud Connector) 텔레메트리의 중앙화는 현재로서는 어렵고 해결되지 않은 과제입니다.

AI 아키텍처

GitLab v19.4
원문 보기

요약

이 문서는 GitLab Duo AI 기능이 공유하는 아키텍처를 설명합니다. 다음 다이어그램은 GitLab의 여러 구성 요소가 상호작용하는 방식을 단순화해 보여 줍니다. package Clients { [IDEs, Code Editors, Language Server] as IDE [GitLab Web Frontend] as GLWEB }

이 문서는 GitLab Duo AI 기능이 공유하는 아키텍처를 설명합니다. 이 아키텍처의 배경과 목표는 AI Gateway 아키텍처 설계 문서를 참고합니다.

개요#

다음 다이어그램은 GitLab의 여러 구성 요소가 상호작용하는 방식을 단순화해 보여 줍니다.

PlantUML 다이어그램 (30줄)
소스 코드 보기
@startuml
!theme cloudscape-design
skinparam componentStyle rectangle

package Clients { [IDEs, Code Editors, Language Server] as IDE [GitLab Web Frontend] as GLWEB }

[GitLab.com] as GLCOM [Self-Managed/Dedicated] as SMI [CustomersDot API] as CD [AI Gateway] as AIGW

package Models { [3rd party models (Anthropic,VertexAI)] as THIRD [GitLab Native Models] as GLNM }

Clients -down-> GLCOM : REST/Websockets Clients -down-> SMI : REST/Websockets Clients -down-> AIGW : code completion direct connection SMI -right-> CD : License + JWT Sync GLCOM -down-> AIGW : Prompts + Telemetry + JWT (REST)

SMI -down-> AIGW : Prompts + Telemetry + JWT (REST) AIGW -up-> GLCOM : JWKS public key sync AIGW -up-> CD : JWKS public key sync AIGW -down-> Models : prompts @enduml

  • AI 추상화 계층 - 모든 GitLab 인스턴스(Self-Managed, GitLab.com 등)에는 모놀리스에서 새 AI 기능을 구현하기 위한 프레임워크를 제공하는 AI 추상화 계층이 있습니다. 이 계층은 요청에 컨텍스트 정보를 추가하고 요청 전후 처리를 수행합니다.

시스템#

  • GitLab 인스턴스 - 모든 유형의 GitLab 인스턴스를 구동하는 GitLab 모놀리스입니다
  • CustomersDot - 고객이 시트를 추가해 구독을 구매하고 업그레이드하며 결제 정보를 추가하거나 수정할 수 있게 합니다. Self-Managed 라이선스도 관리합니다.
  • AI Gateway - 모델 호출을 위한 통합 인터페이스를 제공하는 시스템입니다. Runway를 사용해 Google Cloud Run에 배포합니다.
  • 확장 프로그램

GitLab.com과 Self-Managed/Dedicated의 AI Gateway 접근 방식 차이#

  • GitLab.com
    • GitLab.com 인스턴스는 개인 키로 서명한 JWT 인증 토큰을 스스로 발급합니다.
  • 그 밖의 인스턴스 유형
    • Self-Managed와 Dedicated는 라이선스와 AI 액세스 토큰을 CustomersDot과 주기적으로 동기화합니다.
    • Self-Managed와 Dedicated 인스턴스는 트래픽을 적절한 AI Gateway로 라우팅합니다.

SaaS 기반 AI 추상화 계층#

GitLab은 클라우드 호스팅 AI 아키텍처를 운영합니다. 라이선스를 보유한 GitLab Self-Managed 인스턴스는 AI Gateway를 통해 이 아키텍처에 접근할 수 있습니다. 자세한 내용은 설계 문서를 참고합니다.

이렇게 하는 주된 이유는 두 가지입니다. 최고 수준의 AI 모델은 대개 전용 하드웨어에 의존하기 때문에 클라우드 기반이며, 대규모 AI를 적절한 성능으로 처리할 수 있는 자체 관리 인프라를 운영하는 일은 부담이 큽니다. GitLab은 AI에 관심 있는 Self-Managed 고객을 추적하고 있습니다.

AI Gateway#

AI Gateway(이전 명칭 model gateway)는 Self-Managed, Dedicated, GitLab.com 중 어떤 인스턴스를 사용하든 모든 GitLab 사용자에게 AI 기능을 제공하는 독립 서비스입니다. SaaS 기반 AI 추상화 계층은 클라우드 기반 공급자에 직접 접근하는 대신 이 게이트웨이에 연결하는 방식으로 전환됩니다.

GitLab Rails에서 AI Gateway를 호출할 때는 추상화 계층을 사용할 수 있습니다. 기본적으로 이러한 작업은 Puma에서 장시간 실행되는 요청을 막기 위해 Sidekiq job을 통해 비동기로 수행됩니다. Sidekiq으로 지연 시간이 늘어나므로 지연에 민감하지 않은 작업에 사용해야 합니다.

이 문서를 작성하는 시점에 추상화 계층은 여전히 AI 공급자를 직접 호출합니다. 에픽 11484는 이를 변경할 것을 제안합니다.

특정 작업이 지연에 민감하다면 AI Gateway를 직접 호출하도록 결정할 수 있습니다. 이렇게 하면 Sidekiq으로 인한 지연을 피합니다. code_suggestions에는 이미 이 방식을 적용했으며 /api/v4/code_suggestions 아래에 중첩된 API 엔드포인트가 이를 처리합니다. 새로 추가하는 엔드포인트는 /api/v4/ai_assisted 네임스페이스 아래에 중첩해야 합니다. 그렇게 하면 GitLab.com의 요청이 자동으로 GitLab.com의 ai-assisted 플릿으로 라우팅되어 일반 API와 워크로드가 분리되고 필요할 때 확장하기도 쉬워집니다.

지원 기술#

AI 워킹 그룹에서는 여러 기술을 조사하고 검증해 왔습니다. 아래는 검토를 마치고 GitLab 애플리케이션에서 사용하도록 이미 승인된 도구 목록입니다.

다른 모델이나 기술도 사용할 수 있지만, 사용 전에 검토 절차를 거쳐야 합니다. 아이디어를 제안할 때 AI Project Proposal 템플릿을 사용하고 이를 지원하는 데 필요한 새 도구를 함께 기재합니다.

모델#

다음 모델이 사용 승인을 받았습니다.

Code Suggestions#

Code Suggestions는 GitLab Rails 리포지터리의 일부로 통합되고 있으며, 이를 통해 Code Suggestions와 추상화 계층을 사용하는 AI 기능의 아키텍처가 통일되고 다른 AI 기능에도 Self-Managed 지원이 제공됩니다.

다음 표는 Code Suggestions가 현재 제공하는 기능과 통합 과정에서 그 변화가 어떤 모습이 될지를 정리한 것입니다.

주제 세부 내용 현재 처리 위치 향후 처리 위치
요청 처리
IDE(VS Code, GitLab Web IDE, Windows 용 MS Visual Studio 2022, IntelliJ, JetBrains, VIM, Emacs, Sublime)에서 커서 앞뒤의 코드를 포함한 요청을 받습니다 GitLab Rails GitLab Rails
현재 사용자를 인증하고 이 프로젝트에서 Code Suggestions를 사용할 권한이 있는지 확인합니다 GitLab Rails + AI Gateway GitLab Rails + AI Gateway
TreeSitter로 import를 포함하는 등 컨텍스트를 추가하도록 요청을 전처리합니다 AI Gateway 미정
요청을 AI 공급자로 라우팅합니다 AI Gateway AI Gateway
IDE에 응답을 반환합니다 GitLab Rails GitLab Rails
타임스탬프, 응답 시간, 모델 등 요청 내용을 로깅합니다 양쪽 양쪽
텔레메트리
IDE 에서의 사용자 수락 또는 거부 AI Gateway 양쪽
일일 순 사용자 수 GitLab Rails, AI Gateway 미정
오류율, 모델 사용량, 응답 시간, IDE 사용량 AI Gateway 양쪽
언어별 제안 AI Gateway 양쪽
모니터링 양쪽 양쪽
모델 라우팅
현재 사용하지는 않지만, Code Suggestions는 트래픽 비율에 따라 여러 모델로 라우팅하는 기능을 지원합니다 AI Gateway 양쪽
내부 모델
현재 유지 보수되지 않는 기능으로, 자체 인스턴스에서 Triton 안에 모델을 실행하고 요청을 자체 모델로 라우팅하는 기능입니다 AI Gateway AI Gateway

Self-Managed 지원#

GitLab Self-Managed 용 Code Suggestions는 Cloud Connector MVC의 일부로 도입되었습니다.

이 프로젝트의 기술적 해법에 관한 자세한 내용은 Cloud Connector 아키텍처 문서를 참고합니다.

이 해법은 Cloud Connector 제품군 아래의 다른 AI 기능에도 적용되도록 발전시킬 계획입니다.

Code Suggestions 지연 시간#

Code Suggestions의 수락률은 지연 시간에 매우 민감합니다. AI 어시스턴트로 코드를 작성할 때 사용자는 아주 짧게만 멈춘 뒤 코드 블록을 직접 입력합니다. 사용자가 다음 키를 누르는 순간 기존 제안은 무효가 되고 Code Suggestions 엔드포인트로 새 요청을 보내야 합니다. 그 요청 역시 지연 시간에 매우 민감합니다.

지연이 충분히 큰 최악의 경우, IDE가 연속으로 요청을 보내고 사용자는 응답을 기다리지 않고 작업을 이어가면서 그 요청들이 모두 무시될 수 있습니다. 이는 사용자에게 아무런 가치를 주지 못하면서 서비스에 부하만 더합니다.

이 기능의 지연 시간을 어떻게 개선해 나갈지에 관한 논의는 이슈 418955를 참고합니다.

아키텍처의 향후 변경 사항#

  • 지연 시간을 개선하기 위해 AI Gateway를 여러 리전에 배포할 계획입니다(에픽 Multi-region support for AI Gateway 참고).
  • 텔레메트리를 중앙화하려고 하지만, AI(또는 Cloud Connector) 텔레메트리의 중앙화는 현재로서는 어렵고 해결되지 않은 과제입니다.