Сквозной проект объединяет знания из нескольких разделов базы в одной законченной системе.

Цель проекта — пройти полный инженерный цикл: определить задачу, спроектировать решение, реализовать приложение, организовать хранение данных, подготовить инфраструктуру, автоматизировать доставку и обеспечить эксплуатационную готовность.

Общая идея

Необходимо создать небольшую прикладную систему, которая:

  • решает понятную пользовательскую или бизнес-задачу;
  • предоставляет пользовательский интерфейс или API;
  • содержит серверную бизнес-логику;
  • сохраняет данные в постоянном хранилище;
  • взаимодействует хотя бы с одной внешней системой;
  • запускается в воспроизводимом окружении;
  • доставляется через автоматизированный pipeline;
  • предоставляет логи, метрики и проверки состояния;
  • учитывает основные требования безопасности и надёжности.

Возможные темы

  • система учёта складских операций;
  • сервис обработки заказов;
  • система регистрации и обработки обращений;
  • сервис управления задачами;
  • мониторинг состояния внешних сервисов;
  • система резервирования ресурсов;
  • каталог оборудования или программных компонентов;
  • сервис приёма, обработки и поиска событий;
  • платформа запуска фоновых задач;
  • система управления уведомлениями.

Основные компоненты

  • Клиентский интерфейс — веб-интерфейс, консольное приложение или внешний API.
  • Backend-приложение — обработка запросов, бизнес-правил и пользовательских сценариев.
  • Хранилище данных — реляционная или другая база данных с миграциями и резервным копированием.
  • Асинхронная обработка — очередь сообщений, брокер событий или механизм фоновых задач.
  • Кеширование — необязательный слой для ускорения чтения или снижения нагрузки.
  • Инфраструктура — контейнеры, сеть, конфигурация, секреты и постоянные тома.
  • Платформа выполнения — Docker Compose, Kubernetes или виртуальные машины.
  • Процесс доставки — сборка, тестирование, публикация артефактов и развёртывание.
  • Наблюдаемость — структурированные логи, метрики, трассировки и dashboards.
  • Безопасность — аутентификация, авторизация, защита секретов и ограничение полномочий.

Этапы проекта

Постановка задачи

  • описать пользователя и решаемую проблему;
  • определить основной пользовательский сценарий;
  • сформулировать функциональные требования;
  • определить нефункциональные требования;
  • зафиксировать критерии готовности.

Проектирование

  • определить границы системы;
  • выделить основные компоненты;
  • спроектировать модель данных;
  • описать API и интеграции;
  • определить возможные отказы;
  • зафиксировать значимые архитектурные решения.

Реализация

  • создать минимальный сквозной сценарий;
  • реализовать бизнес-логику;
  • добавить работу с хранилищем;
  • реализовать обработку ошибок;
  • добавить автоматизированные тесты;
  • подготовить документацию запуска.

Инфраструктура

  • подготовить контейнерные образы;
  • описать локальное окружение;
  • вынести конфигурацию из кода;
  • организовать управление секретами;
  • ограничить ресурсы и полномочия компонентов;
  • описать инфраструктуру воспроизводимым способом.

Доставка

  • настроить проверки исходного кода;
  • автоматизировать тестирование;
  • собирать неизменяемый артефакт;
  • публиковать версионированные образы;
  • автоматизировать развёртывание;
  • предусмотреть проверку и откат релиза.

Эксплуатация

  • добавить health, readiness и liveness checks;
  • настроить структурированные логи;
  • определить ключевые метрики;
  • подготовить dashboard;
  • создать несколько полезных оповещений;
  • написать runbook диагностики;
  • проверить резервное восстановление.

Проверка надёжности

  • остановить один экземпляр приложения;
  • сделать недоступной базу данных;
  • добавить сетевую задержку;
  • заполнить очередь сообщений;
  • ограничить память или процессор;
  • повторно отправить одну операцию;
  • проверить восстановление после сбоя.

Обязательные сквозные сценарии

Проект должен позволять последовательно разобрать:

  • путь пользовательского действия;
  • путь HTTP-запроса;
  • путь данных от ввода до хранилища;
  • путь асинхронного сообщения;
  • путь программного изменения до production;
  • путь диагностического сигнала;
  • путь отказа и восстановления;
  • путь аутентификации и проверки доступа.

Результаты проекта

По завершении должны быть подготовлены:

  • описание задачи и требований;
  • схема архитектуры;
  • описание модели данных;
  • спецификация API;
  • исходный код;
  • автоматизированные тесты;
  • контейнерные образы;
  • инфраструктурные описания;
  • CI/CD pipeline;
  • инструкции локального запуска;
  • инструкция развёртывания;
  • dashboard и правила оповещений;
  • runbook диагностики;
  • план резервного восстановления;
  • описание проведённых экспериментов;
  • список известных ограничений;
  • перечень возможных улучшений.

Критерии завершения

Проект считается завершённым, если:

  • основной пользовательский сценарий работает;
  • система запускается по документации;
  • окружение создаётся воспроизводимым способом;
  • данные сохраняются после перезапуска;
  • ошибки не приводят к неконтролируемому повреждению состояния;
  • повторные запросы не создают нежелательных дубликатов;
  • автоматизированные проверки выполняются успешно;
  • новая версия может быть развёрнута и отменена;
  • состояние системы возможно определить по телеметрии;
  • типовые неисправности можно диагностировать по runbook;
  • резервная копия проверена практическим восстановлением;
  • основные технические решения и ограничения задокументированы.

в этой папке 0 элементов