Anton Sidorov homepage

Bookmark this to keep an eye on my project updates!

Follow me on GitHub

Background Jobs

Зачем

Функции процесса выполнения фоновых задач:

  • Инициализация: процесс инициализации задачи, который может включать в себя определение ее параметров, установку соединения с базой данных и другое.
  • Выполнение: фактическое выполнение задачи. Это включает в себя обработку данных, отправку электронной почты, генерацию отчетов и другое.
  • Отслеживание статуса: процесс отслеживания статуса задачи, чтобы знать, на каком этапе она находится, была ли она выполнена успешно или произошла ошибка.
  • Управление ошибками: процесс обработки и регистрации возможных ошибок, которые могут возникнуть в процессе выполнения задачи.
  • Мониторинг: процесс мониторинга состояния системы и проверки наличия возможных проблем, таких как падение производительности или высокая загрузка процессора.
  • Резервное копирование: создание резервных копий данных во время выполнения задачи, чтобы иметь возможность восстановления системы после возможной ошибки или сбоя.
  • Отправка уведомлений: отправка уведомлений пользователю или администратору о состоянии задачи и ее выполнении.
  • Планирование: процесс планирования задач на выполнение в будущем.
  • Отчетность: создание отчетов о выполнении задач для анализа производительности и выявления проблем в работе системы.
  • Завершение: завершение работы задачи и очистка ресурсов после ее выполнения

Требования:

  • Создать классы-команды, каждый из которых будет выполнять определенное действие. Класс-команда должен содержать логику работы по обработке задачи.
  • Создать класс CommandBus (шину команд), который будет отвечать за регистрацию и выполнение команд.
  • В классе CommandBus добавить метод register на регистрацию команд.
  • Добавить в класс CommandBus метод handle для выполнения соответствующей команды.
  • Разработать механизм очереди, который будет хранить незавершенные задачи и обеспечивать их последовательную обработку.
  • Использовать паттерн Observer для отслеживания завершения задачи.
  • Реализовать функцию повторного запуска незавершенных задач в случае ошибок или исключительных ситуаций.
  • Добавить возможность контроля за процессом выполнения задач с помощью системы логирования и мониторинга.
  • Предусмотреть возможность расширения системы новыми типами команд.
  • Обеспечить безопасность данных в процессе выполнения задач.

Критерии приемки решения задачи обработки фоновых задач могут включать:

  • Корректность: задача должна выполняться корректно и соответствовать спецификации требований, предъявленных к системе.
  • Надежность: система должна быть стабильной и надежной, чтобы минимизировать возможность ошибок и сбоев.
  • Производительность: задачи должны быть выполнены в установленные сроки и не приводить к замедлению работы системы или других задач.
  • Масштабируемость: система должна быть способна работать с большим объемом данных и обрабатывать множество задач параллельно.
  • Безопасность: система должна обеспечивать безопасность передаваемых данных и защищать от несанкционированного доступа или взлома.
  • Логирование: наличие логирования для отслеживания процесса выполнения задачи и возможности анализа проблем.
  • Отчетность: наличие отчетов о выполнении задачи, где можно проверить состояние и результаты работы.
  • Службы поддержки: наличие службы поддержки и мониторинга для оперативной реакции на проблемы и внесения улучшений в работу системы.

Паттерны

Реализация паттерна Command и Command Bus

Частный случай паттерна - Cron Job.

Технологии