architect/standards/4-policy/policy-infra.md

type: standard
aspect: policy
title: "ПОЛИТИКА УПРАВЛЕНИЯ ИНФРАСТРУКТУРОЙ"
version: 1.0.0
date: 2026-02-19
status: active


ПОЛИТИКА УПРАВЛЕНИЯ ИНФРАСТРУКТУРОЙ

Версия: 1.0.0
Дата: 2025-11-27
Статус: Стандарт
Уровень: У0 (Концепция)


НАЗНАЧЕНИЕ

Этот документ определяет системную политику управления всеми инфраструктурными ресурсами платформы.


1. МОДЕЛЬ РЕСУРСОВ

1.1 Два типа хранилища

┌─────────────────────────────────────────────────────────────────────┐
│                         ХРАНИЛИЩА                                    │
├─────────────────────────────┬───────────────────────────────────────┤
│       СЕРВЕР (SSD)          │            HUB (S3)                   │
├─────────────────────────────┼───────────────────────────────────────┤
│ Тип: Горячее хранилище      │ Тип: Холодное хранилище              │
│ Скорость: Высокая           │ Скорость: Средняя                    │
│ Объём: Ограничен (~30 GB)   │ Объём: Безлимитный                   │
│ Цена: Дорого (~20 руб/GB)   │ Цена: Дёшево (~2 руб/GB)             │
│ Назначение: Runtime         │ Назначение: Persistence              │
└─────────────────────────────┴───────────────────────────────────────┘

1.2 Три сущности на сервере

┌─────────────────────────────────────────────────────────────────────┐
                          СЕРВЕР                                      
                                                                      
  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐               
      INFRA          DOCKER         WORKSPACE                  
     Система        Контейнеры      Платформа                  
  ├──────────────┤  ├──────────────┤  ├──────────────┤               
   /etc/           containers      /opt/claude-                
   /var/           volumes          workspace/                 
   /root/          images                                      
  └──────────────┘  └──────────────┘  └──────────────┘               
                                                                      
  Роль: Операции   Роль: Приложения  Роль: Управление                
└─────────────────────────────────────────────────────────────────────┘

2. ПРИНЦИП РАЗДЕЛЕНИЯ

2.1 Главное правило

╔═══════════════════════════════════════════════════════════════════╗
║  СЕРВЕР = КОД + RUNTIME                                           ║
║  HUB    = ДАННЫЕ + АРХИВЫ + БЭКАПЫ                                ║
╚═══════════════════════════════════════════════════════════════════╝

2.2 Матрица размещения

Тип ресурса Сервер Hub S3 Обоснование
Исполняемый код Нужна скорость
Docker контейнеры Runtime
Docker images ✅ backup Runtime + архив
Активные БД (volumes) Скорость записи
Дампы БД Persistence
Конфиги системы ✅ backup Runtime + архив
Python venv ✅ (один) Runtime
Данные проектов Объём
Изображения Объём
Прайсы, Excel Объём
Архивы версий Persistence
Шаблоны Редко нужны
Логи (свежие) Диагностика
Логи (>7 дней) Архив

2.3 Критерии размещения

На сервере если:
- Нужен быстрый доступ (<1ms)
- Используется в runtime
- Меняется часто (>10 раз/день)
- Размер <100 MB

На S3 если:
- Доступ редкий (<1 раз/день)
- Не нужен в runtime
- Большой размер (>10 MB)
- Нужно долгое хранение


3. СТРУКТУРА ХРАНИЛИЩ

3.1 Сервер

/
├── etc/                           # Системные конфиги
├── var/
   ├── lib/docker/                # Docker runtime
   ├── log/                       # Свежие логи (<7 дней)
   └── backups/dev-pro/           # Локальный буфер бэкапов

├── root/                          # Конфиги приложений
   ├── .ssh/                      # SSH ключи
   ├── pim-drupal/                # Drupal файлы
   └── ...

└── opt/claude-workspace/          # WORKSPACE
    ├── CLAUDE.md                  # Главный конфиг
    ├── platform/                  # Код платформы
    ├── projects/                  # Код проектов (без данных!)
       ├── pirotehnika/
       ├── lider/
       └── seller1/
    ├── infra/                     # Скрипты инфры
    ├── architect/                 # Методология
    ├── system/                    # Агенты
    └── .venv/                     # ОДИН общий venv

3.2 Hub (S3)

hub/                               # Симлинк → $DATASPACE/

├── servers/                       # ПО СЕРВЕРАМ
   └── dev-pro/                   # Этот сервер
       ├── backups/               # Бэкапы
          ├── postgres/          # Дампы БД
             └── YYYY-MM-DD/
          ├── configs/           # Конфиги системы
          └── workspace/         # Архивы workspace
       
       └── logs/                  # Архив логов

├── projects/                      # ПО ПРОЕКТАМ (данные)
   ├── pirotehnika/
      ├── data/                  # Рабочие данные
         ├── prices/            # Прайсы
         ├── images/            # Изображения
         ├── certificates/      # Сертификаты
         └── exports/           # Экспорты
      └── archive/               # Архивы версий кода
   
   ├── lider/
   └── seller1/

├── platform/                      # ПЛАТФОРМА
   ├── archive/                   # Архивы версий
      ├── v1/
      └── v2/
   └── templates/                 # Шаблоны

└── shared/                        # ОБЩИЕ РЕСУРСЫ
    ├── templates/                 # Шаблоны проектов
    └── libraries/                 # Общие библиотеки

4. ПОЛИТИКА БЭКАПОВ

4.1 Что бэкапится

Ресурс Частота Retention Куда
PostgreSQL (все БД) Ежедневно 02:00 30 дней S3/servers/dev-pro/backups/postgres/
Конфиги системы Еженедельно + при изменении 90 дней S3/servers/dev-pro/backups/configs/
Workspace (код) Еженедельно вс 03:00 30 дней S3/servers/dev-pro/backups/workspace/
Docker images При изменении 3 версии S3/servers/dev-pro/backups/docker/
SSH ключи Еженедельно 90 дней S3/servers/dev-pro/backups/configs/ssh/
Логи Ежедневно (>7 дней) 90 дней S3/servers/dev-pro/logs/

4.2 Что НЕ бэкапится

4.3 Поток бэкапа

┌─────────────┐    pg_dump     ┌─────────────┐    rclone     ┌─────────────┐
│  PostgreSQL │ ──────────────▶│   /tmp/     │ ─────────────▶│    S3 Hub   │
│   (Docker)  │                │  dump.sql   │               │  /backups/  │
└─────────────┘                └─────────────┘               └─────────────┘
                                     │
                               gzip + удаление
                               локальной копии

4.4 Восстановление

# PostgreSQL
rclone copy s3:hub/servers/dev-pro/backups/postgres/YYYY-MM-DD.sql.gz /tmp/
gunzip /tmp/YYYY-MM-DD.sql.gz
docker exec -i <container> psql -U postgres < /tmp/YYYY-MM-DD.sql

# Workspace
rclone copy s3:hub/servers/dev-pro/backups/workspace/latest.tar.gz /tmp/
tar -xzf /tmp/latest.tar.gz -C /opt/

# Конфиги
rclone copy s3:hub/servers/dev-pro/backups/configs/latest.tar.gz /tmp/
tar -xzf /tmp/latest.tar.gz -C /

5. ЖИЗНЕННЫЙ ЦИКЛ ДАННЫХ

5.1 Состояния данных

┌──────────┐     ┌──────────┐     ┌──────────┐     ┌──────────┐
│  ACTIVE  │────▶│  BACKUP  │────▶│ ARCHIVE  │────▶│ DELETED  │
│ (сервер) │     │   (S3)   │     │   (S3)   │     │          │
└──────────┘     └──────────┘     └──────────┘     └──────────┘
  Runtime         Восстановление   Долгое хранение   Очистка
  Горячие         Тёплые           Холодные

5.2 Retention политика

Тип Active Backup Archive Delete
БД дампы 30 дней >30 дней
Конфиги всегда 90 дней >90 дней
Код текущий 30 дней версии никогда
Логи 7 дней 90 дней >90 дней
Данные проектов всегда вручную

6. МОНИТОРИНГ И АЛЕРТЫ

6.1 Метрики

Метрика Порог Действие
Диск сервера >85% Очистка кешей, логов
Диск сервера >95% Срочная очистка
Последний бэкап >24h Алерт
S3 доступность недоступен Алерт

6.2 Проверки

# Ежедневно автоматически:
- Проверка свободного места
- Проверка возраста бэкапов
- Проверка доступности S3

# Еженедельно вручную:
- Проверка целостности бэкапов
- Тест восстановления

7. ОПЕРАЦИИ

7.1 Перенос данных на S3

# Данные проекта
rclone move $WORKSPACE/projects/pirotehnika/data/ \
  beget-s3:hub/projects/pirotehnika/data/ --progress

# Симлинк hub/ уже создан в корне workspace
# hub/ → $DATASPACE/

7.2 Очистка сервера

# Кеши
apt-get clean
rm -rf /root/.cache/pip/*

# Старые логи
find /var/log -name "*.gz" -mtime +7 -delete

# Docker мусор
docker system prune -f

7.3 Синхронизация

# Hub → Сервер (данные для работы)
rclone copy beget-s3:hub/projects/pirotehnika/data/prices/ \
  /tmp/prices/ --progress

# Сервер → Hub (результаты)
rclone copy /tmp/exports/ \
  beget-s3:hub/projects/pirotehnika/data/exports/ --progress

8. ОТВЕТСТВЕННОСТЬ

Роль Отвечает за
Архитектор Политика, структура, стандарты
Инфра-агент Реализация скриптов, мониторинг
Платформа Соблюдение политики в коде

9. СВЯЗАННЫЕ ДОКУМЕНТЫ

Документ Описание
infra/@infra-dev-pro/CLAUDE.md Конфигурация сервера
infra/policies/BACKUP.md Детали реализации бэкапов
architect/concept/SYSTEM_HIERARCHY.md Иерархия системы

CHANGELOG

Версия Дата Изменения
1.0.0 2025-11-27 Первая версия

Статус: Стандарт
Следующий review: 2025-12-27