Инфраструктура
Технологии сейчас дозрели, и можно сделать очень качественную инфраструктуру для разработки:
- автоматического деплоймента и отката версионированных имиджей
- тестирования обновлений ОС
- точной воспроизводимости девелоперского окружения на продакшене
Всё это без необходимости большой ручной работы или трудоемкого написания скриптов, еботни с ветками и т.п. - того, что, как мы увидели, не работает на практике.
Помимо этого, получаем довольно полную изоляцию компонент - условно, обновление Jupyter не сможет повлиять на работоспособность varnish, работающего в соседнем контейнере - у каждого из компонентов полностью независимая файловая система и свои версии зависимостей, включая ОС.
Ещё почти бесплатно получается эластичность - возможность поднимать сервера по требованию (и соответственно, не платить, когда нет нагрузки)
Сервер приложений
- ОС (Arch/CoreOS/...)
- рантайм контейнеров (docker/rkt/...)
- супервизор контейнеров (systemd)
- сервер удалённой администрации (puppet/fleet)
- система имиджей
- система эластичности (поднятие-опускание VPS)
Базовые компоненты
- Веб-фронтэнд - что-то, слушающае на http://v2alpha.bitcoin-analytics.com
- varnishd - хорошо себя зарекомендовал, и совместим с вебсокетами. Проксирует остальные компоненты, работающие в общем случае на разных хостах
- статический контент c описанием проекта, всё равно чем хостить, хоть webfs
- многопользовательская IDE (компонент Jupyter)
- nbviewer - многопользовательский read-only просмотрщик ноутбуков (компонент Jupyter)
- биллинг (можно взять из аналитикса)
- Репликатор - бекапит все накапливаемые данные (биллинг, Jupyter notebook sources, ...). Есть много разных вариантов, помимо меркуриала, например, DRBD (репликация файловой системы на уровне секторов), но меркуриал тоже себя отлично зарекомендовал.
- сервер авторизации (компонент Jupyter)
- подниматель инстансов кернелов (компонент Jupyter, но скорее всего с нашими патчами)
- наш плагин к серверу авторизации (соц. сети, OAuth/OpenID, может уже есть готовый, может проще заюзать everyauth из Аналитикса)
- кернелы - генерят основную нагрузку на память-цпу, общаются по zeromq c IDE и вьюверами. Надеюсь, nbviewer не запускает 100500 идентичных кернелов, а кеширует результат единственного запуска.
Нужен ещё какой-то более вменяемый фидбек, чем Discus - может есть сервис, позволяющий пледжить баунти за фичи.