Уровень: У0 (Концепция)
Версия: 1.0.0
Инфраструктура существует для одной цели: обеспечить непрерывную работу бизнеса.
Всё остальное — производные этой цели.
┌─────────────────────────────────────────────────────────────┐
│ │
│ СКОРОСТЬ ←─────────────────────────→ НАДЁЖНОСТЬ │
│ │
│ Быстрый доступ Сохранность │
│ Горячие данные Резервирование │
│ Дорого Дёшево │
│ │
└─────────────────────────────────────────────────────────────┘
Невозможно иметь одновременно максимальную скорость и максимальную надёжность в одном месте за разумные деньги.
Решение: Разделение на два слоя.
Назначение: Здесь программы работают прямо сейчас.
Характеристики:
- Скорость критична
- Объём ограничен
- Потеря данных = остановка работы
- Стоимость высокая
Принцип: Минимум данных, максимум кода.
Назначение: Здесь данные живут вечно.
Характеристики:
- Скорость вторична
- Объём безлимитный
- Потеря данных = потеря истории
- Стоимость низкая
Принцип: Максимум данных, ноль исполнения.
╔═════════════════════════════════════════════════════════════╗
║ ║
║ На сервере только то, что НУЖНО ПРЯМО СЕЙЧАС ║
║ ║
║ Всё остальное — в хабе ║
║ ║
╚═════════════════════════════════════════════════════════════╝
Тест: Если файл не использовался 7 дней — ему не место на сервере.
Данные имеют температуру:
| Температура | Описание | Где живёт |
|---|---|---|
| Горячие | Используются постоянно | Сервер |
| Тёплые | Используются иногда | Сервер или Hub |
| Холодные | Хранятся "на всякий случай" | Hub |
| Замороженные | Архив, история | Hub |
Пример:
- Горячие: работающий код, активная БД
- Тёплые: вчерашние логи, недавние экспорты
- Холодные: прошлогодние отчёты
- Замороженные: архив версий, старые бэкапы
┌─────────────────────────────────────────────────────────────┐
│ │
│ Сервер можно ПОЛНОСТЬЮ восстановить из Hub │
│ │
│ Hub НЕЛЬЗЯ восстановить из сервера │
│ │
└─────────────────────────────────────────────────────────────┘
Следствия:
1. Сервер — расходный материал
2. Hub — единственный источник правды для данных
3. Git — единственный источник правды для кода
4. Потеря сервера = часы на восстановление
5. Потеря Hub = катастрофа
Потеря: Неприятно, но восстановимо.
Потеря: Откат на последний бэкап.
Потеря: Необратима. Защищать максимально.
Сервер = временная сущность
Следствия:
- Нельзя хранить на сервере то, что жалко потерять
- Сервер должен быть воспроизводим за 1 час
- Никаких уникальных данных только на сервере
Один сервер = одно окружение = один venv
Почему:
- Меньше конфликтов зависимостей
- Проще обновление
- Экономия места
- Единая точка управления
Исключение: Docker-контейнеры имеют изолированные окружения.
СОЗДАНИЕ → ИСПОЛЬЗОВАНИЕ → СТАРЕНИЕ → АРХИВАЦИЯ → УДАЛЕНИЕ
↓ ↓ ↓ ↓ ↓
Сервер Сервер Миграция Hub Hub/Delete
в Hub
Данные движутся в одном направлении: от горячего к холодному.
Не для "на всякий случай". А для гарантированного восстановления.
RPO (Recovery Point Objective) — сколько данных можно потерять?
- 1 час? Бэкап каждый час
- 1 день? Бэкап раз в день
RTO (Recovery Time Objective) — как быстро нужно восстановиться?
- 1 час? Бэкапы под рукой
- 1 день? Можно в облаке
Не "видеть красивые графики". А узнать о проблеме раньше пользователя.
Если делаешь что-то второй раз — автоматизируй
Почему:
- Человек забудет
- Человек ошибётся
- Машина не забудет и не ошибётся
Исключение: Разовые операции.
Каждый компонент имеет только те права, которые ему необходимы.
Несколько слоёв защиты. Пробив один — встретишь следующий.
Предполагай, что тебя уже взломали. Что тогда?
┌─────────────────────────────────────────────────────────────┐
│ │
│ Инфраструктура — это не цель, а средство │
│ │
│ Бизнес-ценность > Техническое совершенство │
│ │
└─────────────────────────────────────────────────────────────┘
Вопрос перед любым решением:
"Как это поможет бизнесу зарабатывать деньги?"
| Уровень | Документ | Назначение |
|---|---|---|
| У0 | Этот документ | Философия и принципы |
| У1 | standards/INFRA_POLICY.md |
Правила и матрицы |
| У2 | infra/policies/BACKUP.md |
Конкретные процедуры |
Статус: Концепция
Следующий review: При изменении философии