본문 바로가기
DevOps/EKS

[AEWS4기] AI Agent in EKS Automode (1)

by 서어켜엉 2026. 5. 17.

Module 2 - Agentic AI 플랫폼 컴포넌트

모듈 아키텍처

 

LiteLLM - 통합 AI 게이트웨이 

1단계 : LiteLLM 스택 발견

# LiteLLM 플랫폼 컴포넌트 확인
kubectl get pods -n litellm

 

출력에서 찾아볼 내용

# 예시 패턴 (실제 이름은 다를 수 있음):
NAME                       READY   STATUS    RESTARTS   AGE
litellm-*                  1/1     Running   0          *h     # ← 주요 API 게이트웨이
litellm-postgresql-0       1/1     Running   0          *h     # ← 구성 데이터베이스
litellm-redis-master-0     1/1     Running   0          *h     # ← 성능 캐시

 

주요 컴포넌트:

  • LiteLLM Pod: 모든 모델 요청을 라우팅하는 주요 API 게이트웨이
  • PostgreSQL: 모델 구성, 사용 데이터 및 사용자 설정 저장
  • Redis: 향상된 응답 시간을 위한 캐싱 제공

2단계 : 사용가능한 모델 확인

# 실행 중인 vLLM 모델 확인
kubectl get pods -n vllm -l app

 

확인해야할 내용

# 실행 중인 모델 (LiteLLM에서 사용 가능):
NAME                                        READY   STATUS    
qwen3-8b-neuron-neuron-*         1/1     Running   # ← Qwen 모델

중요한 이유: 우리 설정은 이러한 실행 중인 모델을 자동으로 발견하고 Helm Chart 구성을 사용하여 LiteLLM을 가리킨다.

 

3단계 : 구성 메커니즘 확인

모델이 LiteLLM의 구성에 어떻게 나타나는지 확인

# 모델 구성 확인
grep -A 16 "model_list:" /workshop/components/ai-gateway/litellm/values.rendered.yaml

 

확인해야할 내용

# LiteLLM에서 모델이 구성되는 방법:
model_list:
  # Bedrock 모델 (AWS 구성에서)
  - model_name: bedrock/claude-4.5-sonnet
    litellm_params:
      model: bedrock/global.anthropic.claude-sonnet-4-5-20250929-v1:0
      aws_region_name: us-west-2
      
  # vLLM 모델 (실행 중인 Pod에서 자동 발견)
  - model_name: vllm/qwen3-8b-neuron
    litellm_params:
      model: openai/qwen3-8b-neuron
      api_key: fake-key
      api_base: http://qwen3-8b-neuron.vllm:8000/v1

 

4단계 : 통합 시스템의 이해

자동 발견이 어떻게 작동하는지 확인

# 통합 발견 로직 확인
grep -A 15 "integration.*llm-model" /workshop/components/ai-gateway/litellm/index.mjs

 

작동 방식

// LiteLLM의 모델 발견 프로세스:
for (const model of value.models) {
  if (model.deploy) {
    // 모델 Pod가 실제로 실행 중인지 확인
    const result = await kubectl get pod -n ${namespace} -l app=${model.name}
    if (result.stdout.includes(model.name)) {
      // 모델을 찾았습니다! 통합에 추가
      integration["llm-model"][namespace][model.name] = true;
    }
  }
}

 

프로세스:

  1. 스캔: 실행 중인 모델 Pod를 위해 Kubernetes 스캔
  2. 검증: 각 모델이 정상이고 사용 가능한지 확인
  3. 빌드: 발견된 모델로 통합 객체 생성
  4. 렌더링: 사용 가능한 모델만으로 Helm 템플릿 렌더링
  5. 배포: 특정 모델 구성으로 LiteLLM 배포

이를 통해 LiteLLM은 실제로 실행 중인 모델만 사용하도록 구성됩니다.

 

LiteLLM이란?

LiteLLM은 다양한 LLM(대규모 언어 모델) API를 하나의 통일된 인터페이스로 호출할 수 있게 해주는 오픈소스 라이브러리이다. OpenAI의 API 형식을 표준으로 삼아, 100개 이상의 LLM 제공자(OpenAI, Anthropic, Google, Azure, AWS Bedrock, Cohere, Hugging Face, Ollama 등)를 동일한 코드 패턴으로 호출할 수 있게 해준다. 아래와 같은 기능들을 제공한다.

  • 통합 API: 모든 모델을 위한 단일 OpenAI 호환 엔드포인트
  • 스마트 라우팅: 적절한 백엔드로 요청을 자동으로 라우팅
  • 영구 스토리지: 구성을 위한 PostgreSQL, 캐싱을 위한 Redis
  • 로드 밸런싱: 여러 모델 레플리카 간에 요청 분산

 

 

Langfuse - LLM 관측성

1단계 : 관측성 탐색

# 완전한 관측성 스택 확인
kubectl get all -n langfuse

 

포괄적인 관측성 플랫폼이 표시되어야 합니다:

  • langfuse-clickhouse-0: 성능 데이터를 위한 분석 데이터베이스
  • langfuse-postgresql-0: 추적 메타데이터를 위한 데이터베이스
  • langfuse-redis-master-0: 캐싱 레이어
  • langfuse-s3-xxx: 대용량 데이터를 위한 객체 스토리지
  • langfuse-web-xxx: 주요 Langfuse 애플리케이션

 

2단계 : 실제 구성 탐색

# 실제 Langfuse Helm values 확인
cat /workshop/components/o11y/langfuse/values.template.yaml

# 완전한 스택 구성 확인
grep -A 5 "postgresql:\|clickhouse:\|redis:" /workshop/components/o11y/langfuse/values.template.yaml

 

 

Langfuse란?

Langfuse는 LLM 애플리케이션을 위한 오픈소스 관측(observability) 및 분석 플랫폼이다. LLM 기반 앱을 개발·운영할 때 발생하는 요청, 응답, 비용, 지연시간, 품질을 추적하고 디버깅·평가할 수 있게 해주는 도구다. Langfuse는 아래와 같은 기능을 제공한다.

  • 포괄적인 추적: 전체 컨텍스트로 캡처된 모든 LLM 상호작용
  • 비용 추적: 모든 모델에 걸친 토큰 사용 및 비용
  • 성능 분석: 지연시간, 처리량 및 품질 지표
  • 디버깅 도구: 상세한 요청/응답 검사
  • 사용량 분석: 패턴, 트렌드 및 최적화 통찰력
  • 다중 데이터베이스 아키텍처: 확장을 위한 PostgreSQL + ClickHouse + Redis

let textNodes = document.querySelectorAll("div.tt_article_useless_p_margin.contents_style > *:not(figure):not(pre)"); textNodes.forEach(function(a) { a.innerHTML = a.innerHTML.replace(/`(.*?)`/g, '$1'); });