wiki:Analytics_v2/Technical

Инфраструктура

Технологии сейчас дозрели, и можно сделать очень качественную инфраструктуру для разработки:

  • автоматического деплоймента и отката версионированных имиджей
  • тестирования обновлений ОС
  • точной воспроизводимости девелоперского окружения на продакшене

Всё это без необходимости большой ручной работы или трудоемкого написания скриптов, еботни с ветками и т.п. - того, что, как мы увидели, не работает на практике.

Помимо этого, получаем довольно полную изоляцию компонент - условно, обновление 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 - может есть сервис, позволяющий пледжить баунти за фичи.

Last modified 9 years ago Last modified on Feb 10, 2016, 11:37:24 PM
Note: See TracWiki for help on using the wiki.