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

83 lines
1.7 KiB
Markdown

# Стратегия деплоя
---
## Decision Tree
```mermaid
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 (рекомендован для старта)
```yaml
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)
```ini
[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
```yaml
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)