Современные сайты, для поддержания бесперебойной работы, могут располагаться на нескольких серверах. Это позволяет предотвратить отказ в обслуживании при пиковых нагрузках. В то же время высоконагруженные сервисы могут задействовать сотни или тысячи вычислительных машин, располагающиеся в огромных дата-центрах.
Широкое распространение приобрело использование облачных технологий для высоконагруженных и распределённых систем, которые образуют совокупность компьютеров, предоставляющих доступ к своим вычислительным ресурсам подобно одиночной системе.
ЭВМ требуют, как аппаратной, так и программной поддержки. Непрерывную бесперебойную работу обеспечивают системные
администраторы. В их обязанности входит слежение и обеспечение безотказной работы системного программного обеспечения, проведение резервного копирования данных, а также их восстановление при необходимости. Ручной подход решения этих задач требует либо огромного количества времени, либо содержание большого штата администраторов. Что увеличивает расходы на поддержание работоспособности системы.
Решением данной проблемы является использования программных продуктов для автоматизации выполнения различных действий, с учетом происходящих в системе событий. Такие программы называются планировщиками задач. Их применение позволяет добиться следующих преимуществ.
Снижение затрат. Поскольку бюджеты ИТ постоянно находятся под давлением, ключевым фактором является сокращение операционных расходов. Планировщики задач сокращают эксплуатационные расходы за счет сокращения количества персонала, необходимого для выполнения определенных задач. В то же время, планирование работы позволяет предприятиям более эффективно использовать инфраструктуру. Например, большинство современных серверов имеют низкие эксплуатационные расходы, и общая стоимость владения снижается. Тем не менее, стоимость операций персонала может составлять до 71% от общего объема расходов [6]. С планировщиком задач сохраняется больше от этих активов, что значительно улучшает рентабельность инвестиций.
Производительность. Программное обеспечение планирования задач увеличивает пропускную способность за счет автоматизации расписания производства. Время и деньги сохраняются путем устранения времени задержки между заданиями и минимизации вмешательства оператора.
Надежность. Автоматическое планирование гарантирует, что задания не будут забыты. Оно следит за успешным завершением задач, что входные данные верны и выполняется вся указанная обработка.
Целью данной работы является разработка клиент-серверного приложения для планирования выполнения задач на удаленных и локальных вычислительных машинах. Клиентская часть отвечает за создание и редактирование задач, а также для отображения уже существующих. Сервер должен обеспечивать возможность работы одновременно с несколькими клиентами. Запросы от клиентов обрабатываются последовательно и независимо друг от друга. При наступлении заданных событий должны быть запущены действия, указанные в задаче.
Результатом данной работы является клиент-серверное приложение “Планировщик задач”. Приложение позволяет создавать задачи со сложными, гибкими условиями их выполнения, используя различные типы триггеров. Задачи могут выполнять несколько действий, исполняемых как в фоновом, так и в интерактивном режимах. Пользователь может получать задачи с удаленных серверов или сервера, установленного на локальной машине. С помощью разработанного приложения можно создавать автономно работающие системы и удаленно управлять их работой. Оно полностью соответствует всем заявленным требованиям.
В процессе тестирования приложения были выявлены различные проблемы. Клиент мог создавать множество задач с одинаковыми именами. Данная проблема была устранена путем использования хеш-таблицы на стороне сервера, ключами в которой выступали имена задач. Сервер портил данные. Ошибка была устранена с помощью захвата блокировки для доступа к разделяемым ресурсам.
В дальнейшем приложение может быть улучшено путем добавления новых типов триггеров и действий. Например, триггером может являться поступивший запрос на сервер, или определенные значения показателей аппаратуры компьютера. Реализация связей между задачами также увеличит гибкость приложения. С помощью них станет возможно создавать рекурсивные взаимосвязи. На стороне клиента можно добавить разделения задач по разделам, что позволит более структурированно управлять ими. Также возможно добавить функцию принудительного исполнения задачи, вне зависимости от состояния её триггеров.
В ходе выполнения работы, были получены навыки разработки клиент- серверного приложения. Усовершенствованы умение выполнять декомпозицию предметной области и выделять в ней основные сущности. Значительно были
развиты навыки применения основных принципов объектно-ориентированного программирования, такие как наследование и полиморфизм. Был получен опыт в создании протокола взаимодействия клиента и сервера, а также в использовании шаблона MVC.
1. MSDN - URL: https://msdn.microsoft.com/
2. Руссинович М. и Соломон Д. «Внутреннее устройство Microsoft Windows». 2013 г, стр. 800.
3. Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес «Приемы объектно-ориентированного проектирования. Паттерны проектирования». 2016 г., 366 стр.
4. Джеффри Рихтер «CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C#». 2017 г., 896 стр.
5. Билл Вагнер «Наиболее эффективное программирование на C#. 50 способов улучшения кода». 2017 г., 224 стр.
6. https://www.helpsystems.com/resources/guides/enterprise-job-scheduling- how-your-organization-can-benefit-automation