Айнур пишет ... 📝 логотип
Подписаться
Опубликовано

API перезапускаемых задач (rerunnable jobs)

Автор
Фотография поста

API перезапускаемых задач (rerunnable jobs)

Это пост с кратким пересказом очередной главы книги "API Design Patterns" Дж. Дж. Гивакса, посвящённой перезапускаемым задачам (rerunnable jobs).

Зачем нужны перезапускаемые задачи? Перезапускаемые задачи (rerunnable jobs) позволяют настроить процесс работы один раз, а затем запускать её по расписанию или по требованию, без необходимости заново передавать параметры. То есть они похожи на длительные операции (long-running operations) с тем различием, что этот паттерн покрывает дополнительные сценарии, когда, например, требуется делегирование ролей (один человек или система может настраивать задачу, а другой - запускать её) или еще нужно автоматическое выполнение уже созданных операций по расписанию.

Для поддержки перезапускаемых задач нужны следующие компоненты: 1. Ресурс Job для хранения параметров задачи и методы для работы с ресурсом (создание, удаление, обновление). Важно, что методы эти должны быть быстрыми и синхронными. 2. Метод Run запускает задачу, используя параметры, сохранённые в ресурсе Job. Этот метод не требует дополнительных входных параметров и возвращает ресурс Operation. Далее сценарий работы аналогичен паттерну LRO. 3. И ресурс Execution для результатов задачи после её выполнения (например, для долгосрочного хранения отчётов или бэкапов) со своей собственной политикой хранения. Так как Execution являются ресурсом, необходимо реализовать несколько стандартных методов (GET, LIST и необязательно DELETE). Результаты обычно неизменяемы, стандартный метод UPDATE реализовывать не нужно. Метод CREATE тоже не нужен, поскольку ресурс создается не конечным пользователем, а внутренними процессами.

И напоследок, примеры использования паттерна rerunnable jobs: - Задачи резервного копирования могут быть настроены как перезапускаемые. Пользователь задаёт расписание для регулярных бэкапов, далее задача запускается по этому расписанию и после завершения создаётся новый ресурс, который представляет собой бэкап. Процесс может включать создание дополнительных данных, например, архивов на S3. - В системах отчетности, например, для финансовых или аналитических приложений, могут быть настроены задачи для автоматической генерации отчётов. Эти задачи могут запускаться еженедельно или ежемесячно, а результатом выполнения соответственно будут отчеты.

Сталкивались c этим паттерном? Или может у вас возникли вопросы? Пишите в комментариях — обсудим! 👇

#заметки_из_книг

Ⓒ Айнур пишет … 📝

avatar
Айнур пишет ... 📝
263 подписчика
28 постов
Живу в Екатеринбурге, занимаюсь бэкенд разработкой. Тут делюсь опытом, мыслями и заметками из прочитанных книг. Написать мне в личку - @ainr_c Мой блог - https://ainur-khakimov.ru

Из подборки #заметки_из_книг

Свежие посты