본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 05. 12. 11:47

AutoBot 자체 호스팅: Docker Compose, 모델 크기 조정 및 프로덕션 운영에 대한 DevOps 심층 분석

요약

본 문서는 AutoBot을 자체 호스팅 환경에 구축하고 운영하는 데 필요한 DevOps 심층 지식을 제공합니다. Docker Compose를 활용한 서비스 구조(FastAPI, Next.js, ChromaDB, Redis, Ollama)와 네트워크 구성 방법을 설명하며, 특히 LLM 모델 크기를 하드웨어 제약 조건(VRAM vs RAM)에 맞춰 최적화하는 실용적인 가이드를 제시합니다. 또한, 지식 기반과 세션 상태 유지를 위한 데이터 백업 및 프로덕션 운영 습관까지 포괄적으로 다룹니다.

핵심 포인트

  • AutoBot은 FastAPI (백엔드), Next.js (프론트엔드), ChromaDB (벡터 DB), Redis (세션/큐), Ollama (로컬 LLM) 등 여러 마이크로서비스로 구성되어 Docker Compose를 통해 운영됩니다.
  • LLM 모델을 자체 호스팅할 때는 추론 처리량, 메모리 대역폭 등 실제 하드웨어 제약 조건을 고려해야 하며, VRAM에 완전히 로드되는 모델이 가장 빠릅니다.
  • 하드웨어 선택 시 주 모델이 VRAM에 맞도록 설계하고, 다중 에이전트 워크로드의 경우 작은 모델을 여러 노드에서 실행하는 것이 효율적입니다.
  • 프로덕션 환경에서는 ChromaDB (지식 기반), Redis (세션 상태), Ollama 볼륨 등 핵심 데이터를 정기적으로 백업하는 습관이 필수적입니다.
  • Docker 네트워크를 명시적으로 정의하고 Nginx/Traefik 같은 리버스 프록시를 추가하여 안정적인 배포 구조를 구축할 수 있습니다.

데모를 보셨습니다. 이제 AutoBot을 자신만의 하드웨어, 자신만의 데이터로, 그리고 자신만의 통제하에 실행하고 싶으실 겁니다. 아주 좋은 직관입니다. 여기에는 전체적인 운영 그림이 담겨 있습니다 — Docker Compose 내부 구조, LLM 모델을 GPU 또는 CPU와 일치시키는 방법, 그리고 장기적으로 안정성을 유지하는 프로덕션 습관들까지 다룹니다.

왜 자체 호스팅(Self-Host)인가?
AutoBot의 슬로건은

redis_data : ollama_models : What Each Service Does backend — FastAPI application. Handles chat sessions, RAG retrieval, fleet management. The OLLAMA_HOST env var points it at your local model server; swap this for an OpenAI-compatible URL to use a cloud LLM instead.
frontend — Next.js UI. Talks only to the backend on port 8000. Stateless — you can restart it without losing anything.
chromadb — Vector database for knowledge bases. Your embedded documents live here. The chroma_data volume is critical — back it up.
redis — Session state and task queues. With --appendonly yes , Redis persists to disk. Losing this volume means losing active session context (but not your knowledge bases).
ollama — Local LLM inference server. Holds downloaded model weights in ollama_models . Models are large (4–70 GB each); this volume is expensive to rebuild.
Networking
All services communicate on a default Docker bridge network. The service names ( chromadb , redis , ollama ) resolve as hostnames inside the network — that's why the backend config uses http://ollama:11434 rather than localhost . For a production deployment, consider an explicit network definition:
networks :
autobot_net :
driver : bridge
services :
backend :
networks :
- autobot_net

... same for all services

This lets you add an Nginx reverse proxy or Traefik on the same network without exposing internal ports.
Model Sizing to Hardware
This is where most self-hosting guides go wrong — they talk about VPS pricing instea

실제 제약 조건의 d: 추론 처리량 대 메모리 대역폭. 경험칙(Rule of Thumb): VRAM에서 완전히 실행되는 모델은 빠릅니다. RAM(또는 더 나쁜 경우 디스크)으로 스필오버하는 모델은 느립니다. OS 및 기타 프로세스를 위한 여유 공간을 두고 주 모델이 VRAM에 맞도록 설계를 계획하십시오. 하드웨어 VRAM 실용적 모델 한계 RTX 3060 12 GB Llama 3 8B (Q4), Mistral 7B RTX 3090 / 4090 24 GB Llama 3 70B (엣지에서의 Q4), Llama 3 8B (전체 정밀도) 2× A100 80 GB 160 GB Llama 3 70B (전체), 대부분의 오픈 가중치 최첨단 모델 CPU 전용 (32 GB RAM) — Llama 3 8B (Q4, 느림) — 낮은 트래픽 RAG에 작동 가능 로컬 Ollama 대 클라우드 LLM 트레이드오프 AutoBot은 둘 다 지원합니다. 선택에 대해 다음과 같이 생각하십시오: 로컬 Ollama (기본값) 토큰당 비용 없음 기본적으로 개인 정보 보호

문서 검색(document retrieval)의 경우, 단일 소비자용 GPU에 충분히 적합합니다. 다중 에이전트 플릿 워크로드(multi-agent fleet workload)의 경우: 각 에이전트 노드당 더 작은 모델(3B–7B)을 실행하고, 오케스트레이션 결정(orchestration decisions)을 위해 더 큰 모델을 예약하는 것을 고려하십시오. AutoBot의 플릿 매니저(fleet manager)는 개별 에이전트 모델 구성을 처리하도록 구축되었습니다.

운영 팁 (Production Tips)

백업 (Backups)
가장 중요한 세 가지 볼륨은 다음과 같습니다:

  • ChromaDB — 지식 기반(knowledge bases)
docker run --rm \
-v autobot_chroma_data:/source \
-v /backup:/backup \
alpine tar czf /backup/chroma- $( date +%Y%m%d ) .tar.gz -C /source .
  • Redis — 세션 상태(session state)
docker exec autobot-redis-1 redis-cli BGSAVE \
docker cp autobot-redis-1:/data/dump.rdb /backup/redis- $( date +%Y%m%d ) .rdb
  • Ollama 모델 — 용량이 크지만 재다운로드가 번거롭습니다.
docker run --rm \
-v autobot_ollama_models:/source \
-v /backup:/backup \
alpine tar czf /backup/ollama- $( date +%Y%m%d ) .tar.gz -C /source .

Chroma와 Redis 백업은 매일 실행하십시오. Ollama 모델은 새 모델을 풀(pull)할 때만 변경되므로, 스케줄에 따라가 아닌 변경 시점에 맞춰 백업하십시오.

업그레이드 (Upgrades)

  • 최신 이미지 풀 (Pull latest images)
docker compose pull
  • 컨테이너 재구성 (Recreate containers) (로드 밸런서 추가 시 다운타임 없음)
docker compose up -d --no-deps --build backend frontend
  • 전체 재시작 (Full restart) (짧은 다운타임 발생)
docker compose down && docker compose up -d

운영 환경에서는 이미지 태그를 고정(Pin image tags in production)하십시오 (예: chromadb/chroma:0.5.3latest로 사용하지 마십시오). 그래야 업그레이드가 의도적이며 자동적이지 않게 됩니다.

모니터링 (Monitoring)
AutoBot의 백엔드는 /health 엔드포인트를 노출합니다. 이를 모니터링 스택에 연결하십시오:

# Simple cron healthcheck
* /5 * * * * curl -sf http://localhost:8000/h

ealth || notify-oncall 지표(metrics)의 경우, 백엔드는 구조화된 로그를 stdout으로 방출합니다. 이를 Loki, Datadog 또는 이미 사용 중인 곳으로 전달하세요: backend : logging : driver : "json-file" options : max-size : " 50m" max-file : " 5"

다음 신호들을 주시하세요:

  • ChromaDB 쿼리 지연 시간(latency)이 2초를 초과하는 경우 — 인덱스 단편화 또는 리소스가 부족한 컨테이너 문제일 수 있습니다.
  • Redis 메모리가 한계에 접근하는 경우 — maxmemory를 설정하고 합리적인 제거 정책(eviction policy, allkeys-lru)을 지정하세요.
  • Ollama 추론 시간(inference time)이 급증하는 경우 — 모델이 RAM으로 스왑되고 있다는 의미입니다. 컨텍스트 길이(context length)를 줄이거나 더 작은 양자화(quantization)로 전환하는 것을 고려해 보세요.

다음 단계 (What's Next)

셀프 호스팅(Self-hosting)은 시작일 뿐, 끝이 아닙니다. 프로덕션 환경에서 실행하게 되면, 흥미로운 작업은 지식 기반을 구축하고, 데이터 소스를 연결하며, 특정 워크플로우를 위한 에이전트(agents)를 연결하는 것입니다.

AutoBot의 인프라 계층 개선에 도움을 주고 싶다면, DevOps 기여자들을 위한 오픈 이슈가 있습니다:
→ Good first issues — AutoBot-AI의 DevOps 레이블 확인

만약 AutoBot이 귀하의 인프라 비용이나 시간을 절약해 준다면, 개발 지원을 고려해 주세요:
→ Ko-fi: ko-fi.com/mrveiss

배포 과정에서 발생한 질문, 수정 사항 또는 경험담(war stories)은 댓글에 남겨주세요.

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0