Комплексный вопрос, поэтому такой мутный заголовок.
Я работаю в компании, которая занимается SaaS-решениями. Со стороны бекенда это выглядит как код на питоне (django, flask, прочая лабуда), запускаемый через uwsgi и тупо слушающий запросы от клиентов. Каждое клиентское приложение (просто процесс, ассоциированный с определенным клиентом) запускается с отдельными переменными окружения, может иметь чуток разные настройки. Основными задачами являются:
- Деплой нового кода
- Поднятие приложений для новых клиентов
- Мониторинг (логи, ошибки, статистика)
Сейчас для всего этого я использую самописный сервис, который готовит базу, окружение, тянет сорцы и следит за запуском. По структуре он похож на макароны и заточен ровно под эту задачу.
Периодически поддержка этого сервиса становится сложной и я задумываюсь о переезде на что-нибудь новомодное. Сейчас читаю про решения Canonical (Juju, LXD, Snappy) и те, с которыми они связаны (Docker, OpenStack), но из-за слишком большого количества маркетингового булшита не могу понять, нужны они мне или нет.
По частям:
- Docker
Насколько я понимаю, его основными плюсами считаются контейнеризация и контроль зависимостей в одном пакете. Имея более 500 приложений, насколько будет велик оверхед запуска каждого из них в контейнере?
- OpenStack
Не до конца понимаю суть. Абстрагировать администрирование от железа? В каких случаях его использование будет наиболее удобно?
- Juju
Выглядит как оркестрировалка сервисов для ленивых. Тот же вопрос: юзкейсы, зачем, почему, что делает лучше?
- LXD
LXC + REST API?
Хотелось бы услышать какие-нибудь практические мнения касательно этих технологий, и, при возможности, советы по использованию или рекомендации.