= Инфраструктура = Технологии сейчас дозрели, и можно сделать очень качественную инфраструктуру для разработки: - автоматического деплоймента и отката версионированных имиджей - тестирования обновлений ОС - точной воспроизводимости девелоперского окружения на продакшене Всё это без необходимости большой ручной работы или трудоемкого написания скриптов, еботни с ветками и т.п. - того, что, как мы увидели, не работает на практике. Помимо этого, получаем довольно полную изоляцию компонент - условно, обновление 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 - может есть сервис, позволяющий пледжить баунти за фичи.