Телефон: 8-800-350-22-65
Напишите нам:
WhatsApp:
Telegram:
MAX:
Прием заявок круглосуточно
График работы офиса: с 9:00 до 21:00 Нск (с 5:00 до 19:00 Мск)

Статья опубликована в рамках: CCXLI Международной научно-практической конференции «Научное сообщество студентов: МЕЖДИСЦИПЛИНАРНЫЕ ИССЛЕДОВАНИЯ» (Россия, г. Новосибирск, 30 июля 2026 г.)

Наука: Информационные технологии

Скачать книгу(-и): Сборник статей конференции

Библиографическое описание:
Емелин С.В. АРХИТЕКТУРА СЕРВИСА АВТОМАТИЗИРОВАННОГО ПЛАНИРОВАНИЯ ФОНОВЫХ ЗАДАЧ // Научное сообщество студентов: МЕЖДИСЦИПЛИНАРНЫЕ ИССЛЕДОВАНИЯ: сб. ст. по мат. CCXLI междунар. студ. науч.-практ. конф. № 14(240). URL: https://sibac.info/archive/meghdis/14(240).pdf (дата обращения: 01.08.2026)
Проголосовать за статью
Готовится к изданию
Эта статья набрала 0 голосов
Дипломы участников
У данной статьи нет
дипломов

АРХИТЕКТУРА СЕРВИСА АВТОМАТИЗИРОВАННОГО ПЛАНИРОВАНИЯ ФОНОВЫХ ЗАДАЧ

Емелин Сергей Васильевич

студент, Московский государственный технологический университет «СТАНКИН»,

РФ, г. Москва

ARCHITECTURE OF AN AUTOMATED BACKGROUND TASK SCHEDULING SERVICE

 

Emelin Sergei Vasilievich

Student, Moscow State University of Technology "STANKIN",

Russia, Moscow

 

АННОТАЦИЯ

Цель: разработка архитектуры сервиса автоматизированного планирования фоновых задач с разграничением доступа к управлению расписанием. Метод: проектирование REST API на основе слоистой архитектуры, анализ алгоритма вычисления дат периодического повторения. Результат: реализован сервис с аутентификацией по токену, гибкими правилами повторения задач и хранением расписания в встраиваемой базе данных. Выводы: предложенная архитектура обеспечивает автономность развёртывания и переносимость сервиса без внешних зависимостей.

ABSTRACT

Background: developing the architecture of an automated background task scheduling service with access control over schedule management. Methods: designing a REST API based on a layered architecture, analysis of the algorithm for calculating recurrence dates. Result: a service has been implemented featuring token-based authentication, flexible task recurrence rules and schedule storage in an embedded database. Conclusion: the proposed architecture ensures deployment autonomy and portability of the service without external dependencies.

 

Ключевые слова: планирование задач; аутентификация; токен; рекуррентные правила; встраиваемая база данных.

Keywords: task scheduling; authentication; token; recurrence rules; embedded database.

 

Автоматизация фоновых процессов является типовой задачей серверных информационных систем: рассылка уведомлений, регламентные проверки, формирование отчётов выполняются не по прямому запросу пользователя, а по расписанию. Отдельный сервис планирования задач избавляет прикладные системы от необходимости самостоятельно реализовывать логику вычисления дат повторения и хранения расписания, предоставляя эту функциональность через программный интерфейс [1, с. 54].

Материалом исследования послужил сервис планирования задач, реализованный на языке программирования Go с использованием маршрутизатора chi и встраиваемой базы данных SQLite. Методом исследования выступило проектирование слоистой архитектуры, при которой уровень обработки HTTP-запросов, уровень бизнес-логики и уровень хранения данных разделены и взаимодействуют через определённые интерфейсы, что соответствует общим принципам построения программного обеспечения информационных систем [4, с. 210].

Программный интерфейс сервиса включает семь маршрутов. Один маршрут вычисления даты следующего повторения и маршрут аутентификации доступны без токена; остальные пять требуют предъявления действительного токена доступа. Полный перечень маршрутов приведён в таблице 1.

Таблица 1.

Маршруты программного интерфейса сервиса планирования задач

Метод и путь

Назначение

Доступ

GET /api/nextdate

Вычисление даты следующего повторения задачи

Публичный

POST /api/signin

Аутентификация, выдача токена доступа

Публичный

POST /api/task

Создание задачи

Защищённый

GET /api/task

Получение задачи по идентификатору

Защищённый

PUT /api/task

Изменение задачи

Защищённый

GET /api/tasks

Получение списка задач с поиском

Защищённый

POST /api/task/done

Отметка о выполнении задачи

Защищённый

 

Аутентификация реализована на основе токена формата JWT [2]. При входе сервис сравнивает предъявленный пароль с эталонным значением и, при совпадении, формирует токен, в состав которого включается хэш-значение пароля, вычисленное алгоритмом SHA-256, и метка времени истечения срока действия. Токен подписывается алгоритмом HS256 с использованием пароля в качестве секретного ключа и передаётся клиенту в cookie-файле. Промежуточный обработчик проверяет каждый защищённый запрос: подтверждает используемый алгоритм подписи, восстанавливает хэш-значение из токена и сопоставляет его с эталонным, отклоняя запрос при любом расхождении.

Центральным алгоритмом сервиса является вычисление даты следующего выполнения повторяющейся задачи. Правило повторения задаётся текстовой строкой, поддерживающей четыре формы: ежегодное повторение, повторение через заданное число дней в пределах четырёхсот, повторение по перечню дней недели и повторение по числам месяца, включая обозначения последнего и предпоследнего дня месяца, с возможным ограничением перечнем месяцев. Для каждой формы предусмотрена проверка допустимости параметров: интервал в днях должен быть положительным и не превышать установленный предел, номера дней недели — находиться в диапазоне от одного до семи. При создании или изменении задачи, дата которой оказывается в прошлом, сервис автоматически переносит её на текущий день либо, при наличии правила повторения, на дату очередного срабатывания [1, с. 118].

Хранение расписания реализовано в SQLite посредством драйвера, написанного полностью на языке Go и не требующего компиляции сопутствующего кода на языке C. Такое решение упрощает сборку сервиса под разные операционные системы и устраняет зависимость от системных библиотек на целевом сервере. При первом запуске схема базы данных создаётся автоматически: единственная таблица содержит идентификатор, дату, заголовок, комментарий и правило повторения задачи, а по полю даты создан индекс, ускоряющий выборку задач за конкретный день. Все запросы к базе данных используют именованные параметры, что исключает возможность внедрения посторонних инструкций через пользовательский ввод.

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

Сервис собирается в виде минимального Docker-образа по многоэтапной схеме сборки без использования технологии CGO, что даёт статический исполняемый файл без внешних зависимостей времени выполнения. В сочетании с встраиваемой базой данных это позволяет разворачивать сервис в изолированной среде без установки и настройки отдельной системы управления базами данных. Направлениями дальнейшего развития являются переход от единого общего пароля к учётным записям отдельных пользователей и введение механизма ограничения частоты запросов к программному интерфейсу.

 

Список литературы:

  1. Донован А., Керниган Б. Язык программирования Go. — СПб.: Питер, 2018. — 432 с.
  2. Jones M., Bradley J., Sakimura N. JSON Web Token (JWT): RFC 7519 [Электронный ресурс]. — URL: https://www.rfc-editor.org/rfc/rfc7519 (дата обращения: 29.07.2026).
  3. SQLite Documentation [Электронный ресурс]. — URL: https://www.sqlite.org/docs.html (дата обращения: 29.07.2026).
  4. Ньюмен С. Создание микросервисов. — СПб.: Питер, 2016. — 304 с.
  5. Дейт К.Дж. Введение в системы баз данных. — М.: Вильямс, 2005. — 1328 с.
  6. go-chi/chi: lightweight, idiomatic and composable router for building Go HTTP services [Электронный ресурс]. — URL: https://github.com/go-chi/chi (дата обращения: 29.07.2026).
Проголосовать за статью
Готовится к изданию
Эта статья набрала 0 голосов
Дипломы участников
У данной статьи нет
дипломов