Я ищу лучшую настройку инфраструктуры для управления и развертывания приложений, разработанных внутри компании, которые выполняются периодически.
Текущая установка превратилась в неконтролируемую разнородную коллекцию приложений, которые могут выполняться только непосредственно на виртуальной машине планировщика.
Текущая ситуация:
- Среда Windows
- Множество заданий, написанных в PowerShell и в виде приложений C#, некоторые из которых содержат довольно сложную логику, некоторые выполняют ETL-операции.
- Задания, настроенные как сервисные или консольные приложения, запускаемые планировщиком Windows по умолчанию и работающие на выделенной виртуальной машине.
- Вход в лог-файлы для конкретных приложений (некоторые приложения)
- Конфигурация через файл app.config для каждого консольного приложения C#
- Планировщик Windows не предоставляет удобный веб-интерфейс для просмотра и мониторинга выполнения заданий.
Идеальная ситуация:
- Централизованный мониторинг: обзор всех заданий (при запуске, сбоях)
- Запуск вручную через веб-интерфейс
- Инициировать выполнение задания через API с возможностью проверки успешности выполнения.
- Конфигурация централизованного задания (строки подключения, параметры конфигурации)
Ограничения:
- Нет облака: из-за внутренних ограничений программное обеспечение должно находиться внутри нашей собственной сети. Наша компания имеет достаточно габаритную серверную стойку для размещения необходимых серверов внутри компании.
Рассматриваемые варианты
Веб-задания Azure
Из того, что я читал, это было бы именно тем решением, которое я ищу. Из-за нашей политики «отсутствия облака» нам потребуется разместить собственный Azure Pack внутри, что может потребовать некоторых усилий для настройки и, возможно, является техническим излишеством для этих требований.
Самостоятельно написанный проект Web-API
Другим вариантом было бы написать специальный проект веб-API, который содержит все функции работы, имеет одну центральную конфигурацию и предоставляет функции работы как методы веб-API и использует Quartz.net для планирования.
Однако, если возможно, я бы предпочел использовать стандартное программное обеспечение, поэтому я не буду нести ответственность за поддержку еще одного центрального элемента нашей инфраструктуры.
Какой вариант вы бы выбрали? Или есть лучшие альтернативы?