본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 17. 06:17

Ubuntu 24.04에 오픈 소스 신경망 검색 및 AI 서빙 프레임워크인 Jina Serve 배포하기

요약

Ubuntu 24.04 환경에서 오픈 소스 AI 서빙 프레임워크인 Jina Serve를 Docker Compose를 통해 배포하는 방법을 안내합니다. Traefik을 활용한 자동 HTTPS 설정과 커스텀 텍스트 실행기 구성을 포함한 클라우드 네이티브 배포 과정을 다룹니다.

핵심 포인트

  • Jina Serve를 활용한 신경망 검색 및 멀티모달 AI 애플리케이션 구축
  • Docker Compose와 Traefik을 이용한 안전한 API 게이트웨이 설정
  • 커스텀 텍스트 실행기(Executor) 및 Jina Flow 구성 방법
  • 동적 배칭 및 비동기 스트리밍을 지원하는 클라우드 네이티브 런타임 활용

Jina Serve는 동적 배칭 (dynamic batching), 비동기 스트리밍 (async streaming), 그리고 마이크로서비스 오케스트레이션 (microservice orchestration)을 처리하는 클라우드 네이티브 런타임을 갖춘, 신경망 검색 (neural search) 및 멀티모달 AI 애플리케이션 구축을 위한 오픈 소스 프레임워크입니다. 이 가이드는 Docker Compose를 사용하여 커스텀 텍스트 실행기 (text executor)를 포함한 Jina Flow를 배포하며, Traefik이 게이트웨이 앞단에서 자동 HTTPS를 처리하도록 설정합니다. 이 과정을 마치면 여러분은 자신의 도메인에서 /index/search API를 안전하게 제공하는 Jina Flow를 갖게 될 것입니다.

디렉토리 구조 설정

1. 프로젝트 디렉토리 구조 생성:

$ mkdir -p ~/jina-serve/executor
$ cd ~/jina-serve

2. 실행기 (executor) 모듈 생성:

$ nano executor/executor.py
from jina import Executor, requests
from docarray import BaseDoc, DocList

...

3. 실행기의 Python 의존성 고정:

$ nano executor/requirements.txt
jina==3.34.0
docarray>=0.40.0

4. Jina 로더에 실행기 연결:

$ nano executor/config.yml
jtype: TextProcessor
py_modules:
  - executor.py

5. Flow 정의:

$ nano flow.yml
jtype: Flow
with:
  protocol: http
...

6. Flow가 포함된 컨테이너 이미지 빌드:

$ nano Dockerfile
FROM jinaai/jina:3.34.0-py39-standard

WORKDIR /app
...

7. 환경 파일 생성:

$ nano .env
DOMAIN=jina.example.com
LETSENCRYPT_EMAIL=admin@example.com
JINA_LOG_LEVEL=INFO

Docker Compose로 배포

1. Compose 매니페스트 생성:

$ nano docker-compose.yml
services:
  traefik:
    image: traefik:v3.6
...

2. 스택 빌드 및 시작:

$ docker compose up -d --build

3. 서비스 확인 및 로그 추적:

$ docker compose ps
$ docker compose logs

게이트웨이 확인

1. 상태 (status) 엔드포인트 확인:

$ curl https://jina.example.com/status
{"jina":{"jina":"3.34.0","docarray":"0.40.1"...

2. /index로 문서 POST 요청 보내기:

  1. /index로 문서 POST 요청 보내기:
$ curl -X POST https://jina.example.com/index \
    -H "Content-Type: application/json" \
    -d '{"data": [{"text": "hello world"}]]}'
{"data": [{"id": null, "text": "HELLO WORLD"}], ...}

3. /search로 POST 요청 보내기 (패스스루 엔드포인트 확인):

$ curl -X POST https://jina.example.com/search \
    -H "Content-Type: application/json" \
    -d '{"data": [{"text": "test message"}]]}'

4. 문서 배치(batch) 제출하기:

$ curl -X POST https://jina.example.com/index \
    -H "Content-Type: application/json" \
    -d '{"data": [{"text": "first"}, {"text": "second"}, {"text": "third"}]]}'

다음 단계 (Next Steps)

Jina Serve가 실행되어 HTTPS를 통해 요청을 처리하고 있습니다. 여기에서 다음과 같은 작업을 수행할 수 있습니다:

  • 전처리(pre-processing), 임베딩(embedding), 랭킹(ranking)을 위해 Flow에 더 많은 실행기(executor) 추가하기
  • 가속화된 추론(inference)을 위해 런타임을 GPU 이미지로 전환하기
  • Qdrant, Weaviate 또는 기타 벡터 스토어에 임베딩 영구 저장하기

추가적인 팁이 포함된 전체 가이드는 **Vultr Docs**의 원본 기사를 방문해 주세요.

AI 자동 생성 콘텐츠

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

원문 바로가기
0

댓글

0