Files

6.1 KiB
Raw Permalink Blame History

Памятка преподавателю — лабораторная 6

Что подготовлено

Язык реализации не задан. README содержит накопительные уровни 3/4/5, сценарий защиты и вопросы. В каждой лабе собственная полная версия OpenAPI, поэтому fork не зависит от соседних каталогов. Публичный HTTP smoke не содержит реализации сервера; Dockerfile.example и compose.example.yaml (если есть) — задания/ориентиры, не готовый deployment.

Перед публикацией

  1. Выберите GitHub/GitLab и организацию, опубликуйте каждый каталог как отдельный template/skeleton repository, сообщите студентам URL и правила именования PR/MR. Эти материалы не публикуют репозитории автоматически.
  2. Задайте default branch, защиту исходных материалов и правила приёма. .github/ уже содержит шаблон PR и CI контракта; в GitLab перенесите эквивалентные настройки, локальные Makefile-команды одинаковы.
  3. Сообщите, индивидуальная работа или командная, сроки, правила использования стороннего кода/ИИ и ресурсы демонстрационного стенда. Эти организационные решения намеренно не выдуманы в задании.
  4. Уточните ограничения площадки (например доступна ли виртуализация/несколько узлов). Для 5 предусмотрено по два трека: один можно выполнить без настоящего multi-node cloud. Универсальный проходной RPS не установлен.

Что проверять

Проверка Что подтверждает Чего не подтверждает
make check Структура файлов, JSON, локальные refs, синтаксис Python Реализация/запуск API
make validate Полная OpenAPI 3.1, JSON Schema и примеры Поведение сервера
make test Один сквозной контрактный сценарий текущей лабы Все ошибки, persistence, HA, security
test-persistence (lab2+) Данные/прежний токен после вызова restart hook Реальный перезапуск, если hook — no-op
test-failover (lab3+) Смена обслуживающей реплики, сохранность, retry без дубля Несколько физических узлов, HA DB/LB
test-security (lab7) Доверенный HTTPS и отказ недоверенного CA Внутреннее mTLS/identity/ACL/OpenBao
Защита и тесты студента Реальность инфраструктуры и критерии выбранного уровня Неограниченная промышленная безопасность

Проверяйте реальные контейнеры/логи процессов и данные до/после отказа: одного X-Instance-Id недостаточно. Для 4 требуются все пункты 3+4, для 5 — все пункты 3+4 и один завершённый трек 5. Сравнивайте подтверждённые результаты со сформулированными критериями, а не количество установленных сервисов.

Приём PR

Проверка запускается на изолированном учебном окружении с синтетическими secrets, не на общей production БД. Студенческие Dockerfile/hooks/CI — выполняемый код: обычный fork workflow без секретов и без доступа к общему Docker socket. Не запускайте PR через pull_request_target с привилегиями преподавателя.

Исходные README/контракт/публичные tests сохраняются, реализация переносится студентом между лабами через собственные исходники и миграции. Исправление общей спецификации публикуйте отдельным изменением, объясняя влияние на все затронутые лабораторные.

Проверка этой версии skeleton

На 2026-09-10 выполнены структурные проверки и полная валидация всех семи OpenAPI/JSON Schema, проверка локальных Markdown-ссылок/YAML и декодирование PNG fixture. HTTP-клиенты проверены на временном изолированном тестовом стенде: позитивный smoke 1–7, отрицательные варианты неправильного sender, pagination, ACL, logout, bytes и пустого API; также пути persistence/failover/load и внешнего TLS.

Временный стенд не включён в студенческие каталоги и не является эталонным решением. Реальное приложение, Compose, PostgreSQL/S3/broker и mTLS/OpenBao в skeleton отсутствуют: их работоспособность не заявляется. Docker CLI в среде подготовки не был доступен. Это проверка материалов и тестовых драйверов, не приёмка будущих решений студентов.