Files
voidea/template/docs/decisions/05-deployment.md
T

1.7 KiB

Стратегия деплоя


Decision Tree

graph TD
    A[Как деплоить?] --> B{Один сервер?}
    B -->|Да| C[Docker-compose]
    B -->|Нет| D{Нужна оркестрация?}
    D -->|Да| E[Kubernetes]
    D -->|Нет| F[Docker-compose + несколько серверов]
    C --> G{VPS или облако?}
    G -->|VPS| H[Ubuntu + systemd]
    G -->|Облако| I[Docker + cloud provider]

Варианты

Docker-compose (рекомендован для старта)

services:
  app:
    build: .
    ports: ["8020:8020"]
    env_file: .env
  db:
    image: postgres:14
    volumes: ["pgdata:/var/lib/postgresql/data"]
  redis:
    image: redis:7
  worker:
    build: .
    command: celery -A app.tasks worker -l info

Systemd (без Docker, VPS)

[Unit]
Description=VoIdea API

[Service]
ExecStart=/home/voidea/venv/bin/uvicorn app.main:app --host 0.0.0.0 --port 8020
WorkingDirectory=/home/voidea
Restart=always

[Install]
WantedBy=multi-user.target

CI/CD

Рекомендуется: GitHub Actions

name: CI
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with: { python-version: "3.12" }
      - run: pip install -r requirements.txt
      - run: ruff check
      - run: pytest

[ASK]

  • Docker или без Docker? (Docker для воспроизводимости)
  • VPS или облако? (VPS дешевле, облако масштабируемее)
  • CI/CD какой? (GitHub Actions — бесплатно для публичных репозиториев)
  • Нужен ли staging? (да, перед production)