Простой оркестратор на golang

Цена договорная
28 ноября 2023, 23:50 • 2 отклика • 47 просмотров
Требуется разработчик с опытом разработки веб-приложений на golang для создания простого оркестратора для наших микросервисов без поддержки контейнеризации.

На целевой ОС на которой необходимо запустить наше микросервисное приложение отсутствуют стандартные оркестраторы и ставить тоже ничего нельзя - таково условие Заказчика

Чтобы оставить архитектуру приложения неизменной хотим попробовать сделать самописный оркестратор без использования контейнеров.

Предварительные требования:
1. ОС AstraLinux SE 1.6 (можно разрабатывать в любом Линкусе, все равно только системные функции потребуется использовать, но окончательную проверку будем делать на целевой системе)
2. Функционирование в пределах одного компьютера/экземпляра ОС
3. Не требуется создание виртуальной сети (все взаимодействие микросервисов будет выполняться через localhost и разные порты)
4. Поддержка последовательности запуска микросервисов
5. Контроль работоспособности микросервисов через API вызов health
6. Перезапуск зависшего/упавшего сервиса
7. Встроенный веб-сервер для обратного проксирования вызовов к сервисам (высокая нагрузка не планируется, так что можно использовать практически любой)
8. Поддержка REST API для управления оркестратором, мониторинга и управления микросервисами
9. Централизованный сбор логов из stdout микросервисов

Как это представляется:
1. Создаем конфиг, который описывает наше приложение. В конфиге описывается каждый микросервис (строка запуска, очередь запуска, путь к сервису и пр.)
2. Запускается оркестратор и поднимает встроенный веб-сервер
3. Оркестратор запускает одно за другим приложения и перехватывает их вывод в stdout
4. Оркестратор проксирует вызовы к сервисам
5. Оркестратор периодически вызывает метод health сервисов для оценки их состояния и при необходимости перезапускает сервис
6. Оркестратор сохраняет вывод сервисов в stdout в единый общий файл лога
7. При закрытии оркестратора он сначала выгружает все сервисы в обратной последовательности и потом выгружается сам
8. Оркестратор поддерживает собственное API для получения информации о сервисах и управления ими

В принципе ничего особенно сложного, по сути требуется достаточно простой менеджер исполнимых файлов, который будет их запускать и следить за ними.