Коллективный разум LOR-а, подскажи, каким инструментом решать следующую задачу:
Имеются наборы данных, над которыми требуется выполнять наборы хорошо распараллеливаемых операций. Чтобы было более понятно, примерами (умозрительными) таких операций могут быть «скомпилировать бинарный пакет для каждого исходного пакета в репозитории», «перекодировать с указанными параметрами каждое видео в указанном списке», «выполнить набор тестов для каждого варианта конфигурации приложения» и т.п.
Также имеется сетка на N узлов, на которых мы можем производить вычислениях.
Задача - обеспечить распределённое выполнение запрошенных операций на узлах сети. Т.е. необходимо раскидывать выполнение операций по узлам, обеспечивать банлансировку нагрузки, перезапускать операции на других узлах при выходе из строя некоторого узла.
В качестве инструмента для запуска операций предполагается использовать docker, и обработчики операций будут представлены образами docker-а. Даные для обработки будут доступны как тома. То есть, для выполнения операции «скомпилируй мне бинарный пакет для дебиана из вот этого исходного пакета» мы запускаем контейнер из образа «сборщик пакетов для дебиана» и подсовываем ему тома данных, откуда он возьмёт исходный и куда положит бинарный.
Контейнеры не предполагаются долговременно запущенными, т.е. они не сервисы. Контейнер сделал дело - умер и удалился. Для следующей операции будут поднят новый контейнер.
Как это сделать на локальной машине - в общих чертах понятно. А вот как это организовать в виде кластера - не понятно, с чего начинать.
Перемещено leave из development