InfoGrab Docs

AI 지원 기능 아키텍처

요약

GitLab의 AI 지원 기능은 외부 서비스인 GitLab Duo Workflow Service에 의해 구동됩니다. GitLab Self-Managed 인스턴스의 경우 네트워크 제한 또는 보안 정책으로 인해 GitLab Duo Workflow Service가 GitLab 인스턴스에 직접 HTTP 요청을 할 수 없습니다.

GitLab의 AI 지원 기능은 외부 서비스인 GitLab Duo Workflow Service에 의해 구동됩니다. 이 서비스는 대규모 언어 모델(LLM)에 요청을 실행 및 수행하고 AI 워크플로를 조율합니다. Workhorse는 GitLab Rails 애플리케이션과 GitLab Duo Workflow Service 사이의 브릿지 역할을 하여 다양한 배포 시나리오(GitLab.com 및 GitLab Self-Managed)를 지원하면서 안전하고 효율적인 통신을 가능하게 합니다.

주요 구성 요소#

  • GitLab Rails: 인증, 권한 부여 및 API 요청을 처리하는 주요 GitLab 애플리케이션.
  • Workhorse: WebSocket 연결을 관리하고 클라이언트와 GitLab Duo Workflow Service 간의 요청을 프록시하는 스마트 역방향 프록시.
  • GitLab Duo Workflow Service: LLM에 요청을 수행하고 AI 워크플로를 조율하는 외부 서비스.
  • MCP 서버: AI 에이전트에 도구와 정보를 제공하는 Model Context Protocol 서버(예: GitLab MCP 서버 및 외부 MCP 서버).

아키텍처 다이어그램#

고수준 아키텍처#

Mermaid 다이어그램 (17줄)
소스 코드 보기
graph TB
    Client["Client<br/>(Web Browser)"]
    Workhorse["Workhorse<br/>(Reverse Proxy)"]
    Rails["GitLab Rails<br/>(Application)"]
    DWS["GitLab Duo Workflow Service<br/>(AI Flows Orchestration)"]
    MCP["MCP Servers<br/>(Tools & Context)"]
Client --&gt;|WebSocket| Workhorse
Workhorse --&gt;|HTTP| Rails
Workhorse --&gt;|gRPC| DWS
DWS --&gt;|gRPC| Workhorse
Workhorse --&gt;|HTTP| MCP
Rails --&gt;|Configuration| Workhorse

style Workhorse fill:#f9f,stroke:#333,stroke-width:2px
style DWS fill:#bbf,stroke:#333,stroke-width:2px
style MCP fill:#bfb,stroke:#333,stroke-width:2px</code></pre></details></div>

AI 상호작용을 위한 요청 흐름#

GitLab Self-Managed 인스턴스의 경우 네트워크 제한 또는 보안 정책으로 인해 GitLab Duo Workflow Service가 GitLab 인스턴스에 직접 HTTP 요청을 할 수 없습니다. 대신, Workhorse가 RunHTTPRequest 액션을 가로채고 GitLab Duo Workflow Service를 대신하여 실행합니다. 일관성을 위해 GitLab.com에도 동일한 접근 방식이 사용되며, GitLab Duo Workflow Service의 직접 요청을 허용하지 않는 IP 제한이 있는 고객을 지원합니다.

Mermaid 다이어그램 (27줄)
소스 코드 보기
sequenceDiagram
    participant User as User<br/>(Browser)
    participant WH as Workhorse
    participant Rails as GitLab Rails
    participant DWS as Duo Workflow<br/>Service
    participant MCP as MCP Server
User-&gt;&gt;WH: 1. WebSocket 연결 설정
WH-&gt;&gt;Rails: 2. 요청 사전 인증(/ws 엔드포인트)
Rails-&gt;&gt;WH: 3. DWS 구성 및 MCP 서버 반환
WH-&gt;&gt;DWS: 4. gRPC 스트림 설정(ExecuteWorkflow)

User-&gt;&gt;WH: 5. 사용자 입력 전송
WH-&gt;&gt;DWS: 6. ClientEvent 전달

DWS-&gt;&gt;WH: 7. 액션 전송(예: RunHTTPRequest)
WH-&gt;&gt;Rails: 8. 액션 실행(API 호출)
Rails-&gt;&gt;WH: 9. 응답 반환
WH-&gt;&gt;DWS: 10. ActionResponse 전송

DWS-&gt;&gt;WH: 11. 액션 전송(예: RunMCPTool)
WH-&gt;&gt;MCP: 12. MCP 도구 호출
MCP-&gt;&gt;WH: 13. 도구 결과 반환
WH-&gt;&gt;DWS: 14. ActionResponse 전송

DWS-&gt;&gt;WH: 15. 최종 응답 전송
WH-&gt;&gt;User: 16. WebSocket을 통해 응답 전달</code></pre></details></div>

제한된 네트워크 환경#

IP 제한이나 폐쇄된 네트워크가 있는 환경에서 Workhorse는 모든 외부 요청에 대한 프록시 역할을 합니다:

  1. 아웃바운드 연결: Workhorse가 GitLab Duo Workflow Service에 대한 gRPC 연결을 설정합니다.
  2. 인바운드 요청: GitLab Duo Workflow Service가 설정된 gRPC 스트림을 통해 요청을 다시 전송합니다.
  3. API 호출: Workhorse가 GitLab Duo Workflow Service를 대신하여 GitLab 인스턴스에 API 호출을 실행합니다.

오류 처리 및 복원력#

우아한 종료#

서버 종료 중에 Workhorse는:

  1. 모든 활성 워크플로 실행기의 우아한 종료를 시작합니다.
  2. GitLab Duo Workflow Service에 StopWorkflow 요청을 전송합니다.
  3. 타임아웃 기간 내에 워크플로가 완료되기를 기다립니다.
  4. 연결이 시간 내에 닫히지 않으면 강제로 종료합니다.

보안 고려사항#

인증 및 권한 부여#

  • 사전 인증: 모든 요청은 WebSocket 연결을 설정하기 전에 GitLab Rails로 사전 인증됩니다.
  • OAuth 토큰: 원래 요청의 OAuth 토큰을 사용하여 API 호출을 인증합니다.
  • 토큰 전파: 토큰은 Workhorse를 통해 GitLab Duo Workflow Service로 안전하게 전달됩니다.

관련 리소스#

참조#

AI 지원 기능 아키텍처

원문 보기
요약

GitLab의 AI 지원 기능은 외부 서비스인 GitLab Duo Workflow Service에 의해 구동됩니다. GitLab Self-Managed 인스턴스의 경우 네트워크 제한 또는 보안 정책으로 인해 GitLab Duo Workflow Service가 GitLab 인스턴스에 직접 HTTP 요청을 할 수 없습니다.

GitLab의 AI 지원 기능은 외부 서비스인 GitLab Duo Workflow Service에 의해 구동됩니다. 이 서비스는 대규모 언어 모델(LLM)에 요청을 실행 및 수행하고 AI 워크플로를 조율합니다. Workhorse는 GitLab Rails 애플리케이션과 GitLab Duo Workflow Service 사이의 브릿지 역할을 하여 다양한 배포 시나리오(GitLab.com 및 GitLab Self-Managed)를 지원하면서 안전하고 효율적인 통신을 가능하게 합니다.

주요 구성 요소#

  • GitLab Rails: 인증, 권한 부여 및 API 요청을 처리하는 주요 GitLab 애플리케이션.
  • Workhorse: WebSocket 연결을 관리하고 클라이언트와 GitLab Duo Workflow Service 간의 요청을 프록시하는 스마트 역방향 프록시.
  • GitLab Duo Workflow Service: LLM에 요청을 수행하고 AI 워크플로를 조율하는 외부 서비스.
  • MCP 서버: AI 에이전트에 도구와 정보를 제공하는 Model Context Protocol 서버(예: GitLab MCP 서버 및 외부 MCP 서버).

아키텍처 다이어그램#

고수준 아키텍처#

Mermaid 다이어그램 (17줄)
소스 코드 보기
graph TB
    Client["Client<br/>(Web Browser)"]
    Workhorse["Workhorse<br/>(Reverse Proxy)"]
    Rails["GitLab Rails<br/>(Application)"]
    DWS["GitLab Duo Workflow Service<br/>(AI Flows Orchestration)"]
    MCP["MCP Servers<br/>(Tools & Context)"]
Client --&gt;|WebSocket| Workhorse
Workhorse --&gt;|HTTP| Rails
Workhorse --&gt;|gRPC| DWS
DWS --&gt;|gRPC| Workhorse
Workhorse --&gt;|HTTP| MCP
Rails --&gt;|Configuration| Workhorse

style Workhorse fill:#f9f,stroke:#333,stroke-width:2px
style DWS fill:#bbf,stroke:#333,stroke-width:2px
style MCP fill:#bfb,stroke:#333,stroke-width:2px</code></pre></details></div>

AI 상호작용을 위한 요청 흐름#

GitLab Self-Managed 인스턴스의 경우 네트워크 제한 또는 보안 정책으로 인해 GitLab Duo Workflow Service가 GitLab 인스턴스에 직접 HTTP 요청을 할 수 없습니다. 대신, Workhorse가 RunHTTPRequest 액션을 가로채고 GitLab Duo Workflow Service를 대신하여 실행합니다. 일관성을 위해 GitLab.com에도 동일한 접근 방식이 사용되며, GitLab Duo Workflow Service의 직접 요청을 허용하지 않는 IP 제한이 있는 고객을 지원합니다.

Mermaid 다이어그램 (27줄)
소스 코드 보기
sequenceDiagram
    participant User as User<br/>(Browser)
    participant WH as Workhorse
    participant Rails as GitLab Rails
    participant DWS as Duo Workflow<br/>Service
    participant MCP as MCP Server
User-&gt;&gt;WH: 1. WebSocket 연결 설정
WH-&gt;&gt;Rails: 2. 요청 사전 인증(/ws 엔드포인트)
Rails-&gt;&gt;WH: 3. DWS 구성 및 MCP 서버 반환
WH-&gt;&gt;DWS: 4. gRPC 스트림 설정(ExecuteWorkflow)

User-&gt;&gt;WH: 5. 사용자 입력 전송
WH-&gt;&gt;DWS: 6. ClientEvent 전달

DWS-&gt;&gt;WH: 7. 액션 전송(예: RunHTTPRequest)
WH-&gt;&gt;Rails: 8. 액션 실행(API 호출)
Rails-&gt;&gt;WH: 9. 응답 반환
WH-&gt;&gt;DWS: 10. ActionResponse 전송

DWS-&gt;&gt;WH: 11. 액션 전송(예: RunMCPTool)
WH-&gt;&gt;MCP: 12. MCP 도구 호출
MCP-&gt;&gt;WH: 13. 도구 결과 반환
WH-&gt;&gt;DWS: 14. ActionResponse 전송

DWS-&gt;&gt;WH: 15. 최종 응답 전송
WH-&gt;&gt;User: 16. WebSocket을 통해 응답 전달</code></pre></details></div>

제한된 네트워크 환경#

IP 제한이나 폐쇄된 네트워크가 있는 환경에서 Workhorse는 모든 외부 요청에 대한 프록시 역할을 합니다:

  1. 아웃바운드 연결: Workhorse가 GitLab Duo Workflow Service에 대한 gRPC 연결을 설정합니다.
  2. 인바운드 요청: GitLab Duo Workflow Service가 설정된 gRPC 스트림을 통해 요청을 다시 전송합니다.
  3. API 호출: Workhorse가 GitLab Duo Workflow Service를 대신하여 GitLab 인스턴스에 API 호출을 실행합니다.

오류 처리 및 복원력#

우아한 종료#

서버 종료 중에 Workhorse는:

  1. 모든 활성 워크플로 실행기의 우아한 종료를 시작합니다.
  2. GitLab Duo Workflow Service에 StopWorkflow 요청을 전송합니다.
  3. 타임아웃 기간 내에 워크플로가 완료되기를 기다립니다.
  4. 연결이 시간 내에 닫히지 않으면 강제로 종료합니다.

보안 고려사항#

인증 및 권한 부여#

  • 사전 인증: 모든 요청은 WebSocket 연결을 설정하기 전에 GitLab Rails로 사전 인증됩니다.
  • OAuth 토큰: 원래 요청의 OAuth 토큰을 사용하여 API 호출을 인증합니다.
  • 토큰 전파: 토큰은 Workhorse를 통해 GitLab Duo Workflow Service로 안전하게 전달됩니다.

관련 리소스#

참조#