Я ищу рекомендации для очень универсального средства автоматизации/выполнения задач. Сфера действия несколько между сценарием, системой сборки, такой как инструменты make и оркестровки, такие как Ansible или Puppet. Лучшее, что я могу сделать, это описать мои довольно расплывчатые «требования» и надеяться на то, как другие решают эти проблемы. Извините за длинное описание, я думаю, я действительно не знаю, что именно я хочу, чтобы его решение было сделано. Я получаю от программирования ответы на SO все время, но я не совсем уверен, что мой открытый вопрос здесь приемлемый.Автоматизация и трубопроводы различных задач
- Мы работаем как аналитики данных/системные валидаторы в корпоративной среде. Мы выполняем целый ряд разнообразных задач и взаимодействуем с множеством постоянно меняющихся систем. Каждый маленький шаг, который мы делаем, возможно, мирский/легкий, но большая картина образуется только в том случае, если повторяется много итераций с немного разными входами или комбинациями. Это похоже на поиск иглы в стеке сена, но конкретная проблема несколько разная. Это затрудняет использование обычного скрипта или инструмента автоматизации, которые требуют большей структуры для работы. Но делать что-то полу-ручное без большой команды не позволяет нам покрыть весь анализ/случаи, которые мы хотим/нуждаемся.
Чтобы подать применимый пример: типичные задачи могут включать настройку большого вычисления в системе поставщика, извлечение их ASCII-вывода с веб-сервера и его разбор. Затем мы будем высасывать исходные исходные данные из набора файлов конфигурации и баз данных. Это связано с некоторыми из наших домашних инструментов/моделей репликации, живущих на C++. Затем и результаты системы, и наша репликация проверяются на интересные выбросы (например, проверены на регрессию), и только это подмножество загружается для аналитиков-исследователей, которые хорошо представлены на листе Excel.
Мы можем сделать все это легко вручную для разового или, возможно, использования специальных инструментов/скриптов. Мы просто не можем делать это повторно навсегда, так немного отличающихся настроек. Кажется, нам нужна библиотека для «общих задач», которые просто специализируются на нескольких входных данных (например, задача скачать временный ряд и сканировать выбросы), параметрами будут доступ к базе данных/логин и, возможно, параметры, определяющие, что такое выброс в этом контекст). И тогда мне нужно объединить эти задачи вместе, чтобы сделать сложные задачи повторяемыми и простыми для наращивания с атомных шагов.
Я ничего не нашел, что-то вроде этого. Кажется, есть специальные скрипты или инструменты для каждой доступной ниши, но не что-то, объединяющее все различные задачи, которые мне нужно выполнить.
Я так долго играл с минималистской базой данных sqlite, которая управляет набором скриптов/оболочек python. Эти сценарии берут входные параметры из базы данных, и они привязаны к цепочке/на основе базы данных. Сценарии записывают свои результаты обратно в базу данных, в основном в виде обычного текста и floats/int. Этот вид интерфейса db очень подвержен ошибкам и сложен для людей; идея состоит в том, чтобы сценарии (сценарии), написанные (конкретные/параметризованные) скрипты, исполнялись в db для выполнения, например, перед запуском. Не уверен, что это умная идея, но db управляет сценариями, без особого взаимодействия между этими сценариями строительного блока; вместо того, чтобы иметь условную связку сценариев, вызывающих друг друга, и демпинг некоторых данных в db как после мысли. До сих пор у нас есть много отдельных оберток (скриптов), чтобы говорить со всеми системами и выполнять работу, чего действительно не хватает, что-то связывает все это вместе, контролируя ее.
Я заинтересован (очевидно) больше в прозрачности данных/потока, повторяемости и объединении мини-программ вместе с большими единицами, а не в скорости или масштабировании для больших наборов данных. Весь тяжелый подъем выполняется либо в системах, с которыми мы взаимодействуем, либо делегируется C++, вызванным из этих сценариев python. Это не производственная система с большей стабильностью и фиксированными целями, а скорее гибкий помощник по анализу/расследованию.
Я действительно надеюсь, что кто-то здесь ранее столкнулся с такой проблемой, которая сильно ограничивает нашу производительность, и мы можем просто избавиться от вашего решения или идей.