Пара 26: Итог: воспроизводимый и наблюдаемый сервис
90 минут · 3 курс, ML.
Содержание и результат
Показать полный путь от чистого checkout до проверенного выпуска и восстановления.
План занятия
0–10: контекст и исходная задача. 10–40: устройство и механизмы. 40–55: демонстрация команд. 55–80: лабораторная работа. 80–90: разбор результата и фиксация исправлений.
Практика выполняется в своей учебной папке и на localhost. Подготовка окружения описана в lab/README.md.
Передача проекта
README должен вести нового человека по реальному пути.
Итоговый комплект: код, артефакт, версия окружения, тесты, Dockerfile, Compose, метрики, dashboard, runbook, release-report и restore-report. README объясняет условия, команды запуска, ожидаемый результат и типичные ошибки. Не требуем Kubernetes и Terraform: надёжный маленький сервис полезнее набора неосмысленных конфигураций. Демонстрация начинается из копии проекта без .venv, контейнера и локальных скрытых настроек. Допускается заранее скачанный базовый образ, если сеть аудитории нестабильна; это явно записывается как условие, а не скрывается.
Аналогия: хорошо оснащённая мастерская может работать с новой сменой.
Доказательства по слоям
Состояния «написано», «проверено» и «запущено» не взаимозаменяемы.
Код в репозитории показывает намерение. Тесты показывают пройденные проверки. Образ показывает упаковку. Работающий контейнер показывает процесс. Smoke показывает выбранный пользовательский путь, dashboard — наблюдение во времени, restore-check — восстановление конкретной копии. Каждый шаг имеет предел доказательства. Студент должен назвать, что именно проверено и что остаётся вне курса: высокая доступность, качество реальной модели, большие данные, внешняя production-нагрузка. Это зрелая инженерная привычка, а не повод обесценивать учебный результат.
Аналогия: проект здания, акт испытаний и заселённый дом подтверждают разные стадии.
Дальнейший маршрут
Следующий инструмент выбираем по проблеме проекта.
После курса студент умеет работать с Linux, Git, контейнерами, CI и базовой наблюдаемостью. Kubernetes нужен при задачах оркестрации, а не как обязательный фон любого Python-скрипта. Infrastructure as Code полезен, когда окружения нужно воспроизводить и изменять управляемо. MLOps добавит управление данными, экспериментами, модельными артефактами и качеством, но основы доставки уже понятны. roadmap.sh используем как карту возможных направлений: нельзя пройти всю карту за три месяца без потери понимания. Каждый студент выбирает следующую конкретную проблему своего проекта и объясняет выбор.
Аналогия: карта страны помогает выбрать маршрут, но не требует посетить все города за одну поездку.
Команды и наблюдения
Окружение: Ubuntu / Bash, новая учебная копия.
python3 -m unittest discover -s tests -v
docker compose config --quiet
docker compose up -d --build
bash scripts/smoke.sh
docker compose -f compose.yaml -f compose.monitoring.yaml up -d
python3 scripts/load.py --requests 30 --concurrency 2
bash scripts/backup.sh
Итоговая демонстрация выполняется в новой папке/Compose project с отдельными портами либо после безопасной остановки старого проекта без удаления данных.
Ожидаемый результат: Новая копия запускается по README; тесты и smoke проходят; metrics доступны, backup проверяемый.
Вариант для macOS
Итог можно защищать на macOS с Docker Desktop. Linux-specific знания проверяются объяснением и предыдущим упражнением Ubuntu. В README обязательно укажите ОС, CPU-архитектуру и отличия команды.
python3 -m unittest discover -s tests -v
docker compose config --quiet
docker compose up -d --build
bash scripts/smoke.sh
Практика: Защита проекта
- За 5 минут покажите запуск и SHA, объясните структуру проекта.
- За 3 минуты покажите нормальный и неправильный запрос, тест и метрику.
- За 5 минут восстановите выбранный безопасный отказ по runbook.
- За 2 минуты объясните backup/rollback и ограничения результата; рецензент запускает одну команду из README.
Результат: Итоговый репозиторий и 15-минутная демонстрация команды.
Проверка: Команды воспроизводимы; ошибки обработаны; секретов нет; мониторинг и восстановление подтверждены.
Неисправность для разбора: Проект работает только с неизвестным локальным .env или исправленным вручную контейнером.
Решение и диагностика
Оценка из 100: Linux/диагностика 20, Git/воспроизводимость 15, Docker/Compose 20, CI/контракт 15, наблюдаемость 15, восстановление и объяснение 15. Для каждого пункта есть наблюдаемое доказательство в docs/assessment.md. Повторная попытка после обратной связи разрешена; личные секреты в репозитории требуют немедленной безопасной коррекции до зачёта. Отсутствие дорогого ноутбука не снижает оценку: команда может демонстрировать на одном готовом рабочем месте.
Основные выводы
- Он обнаружит скрытые предположения, которые автор считает очевидными.
- По реальной проблеме проекта и необходимому результату.
Самостоятельная работа
После курса выбрать один следующий шаг и написать план проверки его пользы для своего проекта.