DevOps для ML-студентов: программа семестра

13 учебных дней · 26 пар по 90 минут · 39 астрономических часов / 52 академических часа по 45 минут. Назначены 12 пятниц: 9 октября — 25 декабря 2026, Москва. Тринадцатый день оставлен резервным без даты; 1 января занятие не назначено.

Замысел

Вместо обзора всех DevOps-инструментов студенты развивают один небольшой сервис StudyPulse: HTTP API, которое по вымышленному числу часов выдаёт синтетическую оценку. Это не реальная модель и не оценка человека. Преподавателю не требуется преподавать ML: связь со специальностью объясняется через версии артефакта, зависимости, доступность API и воспроизводимость запуска.

Главный вопрос курса: как передать другому человеку работающий результат и убедиться, что он продолжает работать?

Входной уровень: базовые переменные/условия и знакомство с Python желательны; Linux, Docker и Git не предполагаются. На первой неделе проводится диагностика исходного уровня без оценки. На курсе не нужны GPU, платное облако и обучение моделей.

Результаты обучения

К концу семестра студент:

Календарь

Пятница Первая пара Вторая пара
09.10 1. История ОС: Unix, GNU, MINIX, Linux и дистрибутивы 2. Загрузка ОС: firmware, ядро, драйверы и Live-среды
16.10 3. Shell, структура каталогов и текстовые утилиты 4. VFS, библиотеки, память и конвейеры
23.10 5. Пользователи, права доступа и файловые объекты 6. Процессы, сигналы, IPC и наблюдение ресурсов
30.10 7. Сеть: sockets, маршруты, Netfilter и Wi-Fi 8. Пакеты, зависимости, Python и конфигурация
06.11 9. systemd, граф запуска и журналы 10. Диагностика и ремонт Linux
13.11 11. Git: история, объекты и управление версиями 12. Git в команде: ветки, review и конфликты
20.11 13. Docker: образ, контейнер и границы изоляции 14. Dockerfile: сборка StudyPulse
27.11 15. Compose: сеть, тома и декларативный запуск 16. Готовность, ограничения и конфигурация контейнеров
04.12 17. CI: автоматические проверки изменения 18. CD: версии, выпуск и откат
11.12 19. Наблюдаемость: метрики, логи и трассировка 20. Prometheus: сбор метрик и PromQL
18.12 21. Grafana, SLI, SLO и осмысленные алерты 22. Структурированные логи и расследование запроса
25.12 23. Нагрузка, задержки и ограниченные повторы 24. Backup, восстановление и стабилизация
Резерв: дату назначить 25. Game day: выпуск с аварией 26. Итог: воспроизводимый и наблюдаемый сервис

Даты хранятся в content/course.mjs; меняются одной сеткой с пересборкой. Пара длится 90 минут; перерыв между парами определяется расписанием вуза и не включён в тайминг занятий.

Организация пары

Основной формат: связный разбор механизмов с техническими схемами, демонстрация команд и адресная практика. Для пары выделяют 40–50 минут на объяснение, 15–20 на демонстрацию, 20–30 на самостоятельную работу; конкретный тайминг указан в конспекте. Материалы содержат углубление для чтения после занятия.

Схемы показывают передачу управления, зависимости и движение данных. Объяснение связывает каждый элемент рисунка с наблюдаемым поведением. Практика проверяет конкретный результат: файл, процесс, HTTP-ответ, pipeline, восстановление. Общие вопросы и шаблонные рефлексивные задания не используются.

Работа по двое: один оператор, другой формулирует проверку и ведёт заметки. Роли меняются в середине. Быстрой группе дают дополнительный edge-case или проверку чужого README; остальным — ступенчатые подсказки. Домашняя работа рассчитана примерно на 30–60 минут в неделю; завершается небольшим артефактом, а не десятками однотипных задач.

Сквозной проект

StudyPulse имеет /healthz, /predict, /metrics, синтетический JSON-артефакт и append-only файл событий. В октябре запускается напрямую, в ноябре — контейнеризируется и проверяется, в декабре — наблюдается и восстанавливается. Допускается заменить формулу собственной простой программой при сохранении интерфейса и критериев курса.

Папка lab включает готовый минимальный код, чтобы преподаватель мог объяснять инфраструктуру без изучения ML. Код — основа лабораторных, а не готовая работа для автоматического зачёта: студенты объясняют поведение, создают историю, воспроизводят ошибки и подтверждают результат.

Чекпоинты и оценка

Конец октября: паспорт среды, README, скрипт и диагноз отказа. Конец ноября: Git, контейнер, Compose, CI, выпуск и откат. Декабрь: метрики, dashboard, request_id, backup и итоговая тренировка. Подробная рубрика приведена в разделе «Критерии зачёта».

Защита команды — 15 минут; каждому задаётся вопрос о его части и один общий диагностический вопрос. При большой группе защиты распределяют на 25 декабря и заранее записанные демонстрации: в одной 90-минутной паре после 10 минут общего старта помещается пять 15-минутных команд. Для большего числа команд преподаватель принимает часть демонстраций асинхронно по той же рубрике. Это не требует менять содержание курса.

Что вынесено за обязательный минимум

Kubernetes, Terraform, Ansible, облачная HA-архитектура, GPU, training pipelines, feature stores и мониторинг качества реальной модели остаются направлениями продолжения. Добавлять их вместо освоения базового запуска и диагностики нецелесообразно. Связь с roadmap.sh — тематический маршрут, а не обещание освоить всю карту за семестр. Диаграммы и формулировки курса созданы заново; карта roadmap.sh не скопирована в материалы.

Если нет экрана или интернета

Без экрана: преподаватель создаёт комнату, сообщает код и листает с телефона; студенты открывают курс в своих браузерах. Нужен интернет у всех устройств. При слабой сети — самостоятельное открытие слайдов и проговаривание номера. Без интернета — заранее скачанный ZIP курса запускается локально на преподавательском ноутбуке; для общего режима нужна доступная аудитории локальная сеть и корректный PUBLIC_ORIGIN. Без общей сети студенты открывают локальные копии и следуют по названному номеру.

KDE/Zorin Connect — дополнительный способ отправлять клавиши на ноутбук с ведущей презентацией; это не само по себе синхронизация браузеров студентов. Открытая ведущая презентация передаёт изменения в серверную комнату. Телефонный пульт курса работает напрямую через интернет и не зависит от Connect.