автономная оплата в виде go фляги / веб-приложения на azure - PullRequest
0 голосов
/ 21 января 2020

Я владею и управляю научной вычислительной библиотекой Python / C ++ c, и мы создали для нее автономный веб-интерфейс flask. Теперь приложение (flask веб-интерфейс и бэкэнд-библиотека) работает автономно на одном компьютере в контейнере docker. Мы подумываем о том, чтобы передать это приложение поставщику облачных услуг (azure) и монетизировать его. Мы все еще обсуждаем, но мы не знаем, как сделать следующее

  • Каждый пользователь должен иметь свой собственный экземпляр контейнера, работающий для него отдельно от всех других пользователей (без общего хранилища между пользователями)
  • Хранилище должно быть выделено для пользователя (возможно, 5 гигабайт) для каждого запуска контейнера, или контейнер может ссылаться на хранилище больших двоичных объектов пользователя для хранения файлов вычислений
  • Некоторые вычисления, которые предоставляет наше решение, должны выполняться на нескольких ядер, пользователь должен сначала выбрать количество ядер, в которых нуждается его контейнер, прежде чем запускать свой сервис
  • Расчеты могут длиться часами, а иногда и днями, когда пользователь, скорее всего, будет взаимодействовать с пользовательским интерфейсом (библиотекой) для настройки параметров и управления вычислениями
  • Аутентификация является обязательной, поскольку пользователи должны платить за услугу

То, что я описал, является простой проблемой для приложения на домашнем компьютере, где пользователи могут приобрести лицензию. или онлайн аутентификация и оплата за час шалфей на собственной машине. Я не уверен, как это переводится в облако. Можно было бы надеяться, что для этого есть инфраструктура решений PAAS или SAAS.

любая помощь будет принята с благодарностью.

С уважением

1 Ответ

1 голос
/ 21 января 2020

Если вы ищете готовое (SaaS) решение для этого, то в Azure нет официального продукта для этого. Однако это очень выполнимо, и я могу дать вам несколько советов о том, как выполнить sh на Azure. Конечно, это будет зависеть от выбранного вами поставщика облачных услуг.

Как отметил Джон Хэнли, вам нужно будет создать собственную аутентификацию и выставление счетов. Azure AD, в частности AAD B2 C, может помочь с аутентификацией, но вам все равно нужно ее реализовать.

Из того, что я могу сказать, в вашей системе есть 3 других элемента:

  1. Постоянное хранилище, разделенное на пользователя.
  2. Вычисление ресурсов, разделенное на пользователя.
  3. Портал управления. Скорее всего, это будет включать в себя существующий интерфейс плюс ваши параметры конфигурации, биллинг и аутентификацию. Если вы просто измените существующее приложение для обработки этой конкретной задачи c для нескольких пользователей или развернете по одному на пользователя, вам решать.

Существует три основных концепции, которые помогут вам в управлении ресурсами. API управления , API потребления и ARM шаблоны . Предполагая, что вы хотите придерживаться Python, , есть доступный SDK , чтобы помочь вам выполнить sh.

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

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

Большая картина, у вас есть два варианта: раскрутить один ресурс и затем выделить его по пользователю или создать совершенно отдельный набор ресурсов для каждый пользователь использует группы ресурсов или теги для управления ими. Если вы хотите выставлять счета на основе API потребления, отдельные ресурсы будут намного проще выяснить, что должен каждый пользователь.


1. Постоянное хранилище, разделенное на пользователя.

Для решений для хранения Azure Хранилище - это сервис, на который следует обратить внимание. Это позволяет вам выбрать, использовать ли один ресурс или один для пользователя. Цена указана за ГБ, поэтому разница в управлении, а не в стоимости. В зависимости от вашего вычислительного ресурса, вы можете использовать хранилище по умолчанию для него, но это будет зависеть от того, что еще вам нужно. Например, небольшой набор данных может храниться на главном диске для виртуальной машины, но удаление виртуальной машины после завершения вычислений также приводит к удалению этого диска. Использование хранилища отдельно позволяет сохранить это без продолжения оплаты за ВМ.

2. Вычислительные ресурсы, разделенные по пользователям

Лично я думаю, что вам лучше всего выбрать виртуальные машины или Azure AKS / Container Services.

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

Другой вариант - использование служб AKS / Container для управления базовыми виртуальными машинами. Вы упомянули, что приложение работает в контейнере, но я не уверен, может ли оно быть легко адаптировано. Имейте в виду, что службы контейнеров построены на AKS, но вы меньше вовлечены в управление кластером. Это было бы более распространенным сценарием, если вы хотите запустить несколько пользователей в одном кластере (вы все еще можете их изолировать), поскольку раскрутка всего кластера для каждого пользователя, вероятно, приведет к дополнительным затратам, которые вам не нужны.

Исходя из того, что вы описываете, я думаю, что Azure Машинное обучение может быть возможностью для вашего вычислительного ресурса, но я не могу сказать по вашему вопросу.

3. Портал управления.

Вы можете развернуть его на той же виртуальной машине / контейнере, на котором запущены ваши вычисления, или вы можете использовать Службы приложений для этого аспекта. Я не уверен, что для этого вам понадобится выделенная емкость для каждого пользователя, но существует множество вариантов, которые, по сути, представляют собой одну службу приложений на ВМ. Преимущество этого перед развертыванием на виртуальной машине такое же, как и в большинстве разговоров IaaS против PaaS - вам может понадобиться немного настроить веб-приложение для работы в службах приложений, но это означает, что вам не нужно беспокоиться о большом количестве конфигурация низкого уровня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...