Подтвердить что ты не робот

Как создать приложение SaaS с помощью Python и Django

Можете ли вы посоветовать мне некоторые статьи/приложения, которые позволяют вам создавать приложение SaaS (Software as a Service) с помощью Python и Django.

На данный момент общие темы, которые я не понимаю, следующие:

  • У вас есть одно рабочее приложение для всех клиентов или одно приложение на клиента
  • Как вы управляете доступом к базе данных, разрешениями или разными БД для каждого клиента.
  • Существуют ли какие-либо инструменты, которые позволяют конвертировать одно приложение в SaaS
4b9b3361

Ответ 1

  • один проект, это упростит обслуживание. Я обрабатываю разрешение хоста с помощью промежуточного программного обеспечения в django-ikari.
  • ты этого не делаешь. см. # 1
  • Я использую следующее:

    • django-ikari: привязанные (подчиненные) домены
    • django-guardian: для разрешений объектов
    • django-tastypie: easy RESTful api
    • django-userprofiles: лучше, чем регистрация django
    • django-billing: управление подпиской на основе плана.
    • django-price: определение подписки на основе плана
  • Если это не обязательно, в долгосрочной перспективе это поможет:

    • django-hunger: частные бета-регистрации
    • django-waffle: функция flip
    • django-classy-tags: приятное, простое и аккуратное создание шаблонов.
    • django-merchant: абстрактный шаблон шлюза платежей.
    • django-mockups: быстрое тестирование с помощью моделей
    • django-merlin: лучшие многоступенчатые формы (волшебники)
  • Наконец, приятно иметь

Ответ 2

Самый простой, элементарный пример того, как вы это сделаете.

Предположим, у вас есть простое приложение, предназначенное для решения конкретного бизнес-кейса. Например, вы создали приложение для обработки резервирования номеров в вашем офисе.

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

Так будет преобразован передний конец. Вы можете создавать переменные для хранения логотипа, заголовка, тизера, цветовой схемы для приложения; позволяя каждому пользователю настраивать свой экземпляр.

Пока ваше приложение может настроить себя на передней панели. Он по-прежнему использует ту же базу данных, которая была разработана на первом этапе.

Теперь возникает вопрос о отображении только тех полей, которые относятся к определенному пользователю. Это будет параметризация базы данных. Таким образом, вы можете добавить столбец, который идентифицирует каждую строку как принадлежащую определенному пользователю; затем создавать представления или хранимые процедуры, которые фильтруют записи на основе зарегистрированного пользователя.

Теперь приложение может быть "сдано в аренду"; поскольку вы можете настроить экземпляр на основе пользователя.

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

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

Если вашему приложению требуется много места для хранения - вы можете взять плату отдельно для хранения.

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

Ответ 3

Программное обеспечение как услуга - это просто маркетинговое слово, оно технически не отличается от сервера, доступного через Интернет. Поэтому вопрос 3 не имеет смысла. Это оставляет нам вопрос 1 и 2:

  • Что вы подразумеваете под "приложением" в этом контексте? Ваше веб-приложение (построенное с помощью Python и Django) может иметь несколько приложений Django (компоненты, составляющие веб-приложение), но я думаю, что это не то, что вы имеете в виду. Вы можете создать свой сайт в Python/Django и иметь различные параметры настройки в зависимости от того, какой пользователь (клиент) зарегистрирован. Например, премиум-клиент может иметь несколько дополнительных опций, но он все еще является частью одной и той же базы кода. Просто некоторые опции (кнопки/элементы управления и т.д.) Не отображаются для определенных клиентов.

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

Ответ 4

У меня есть сообщение в блоге, описывающее мое предложение о том, как сделать создание веб-приложения SAAS с несколькими арендаторами, используя Django. Многоуровневость здесь означает, что когда пользователь регистрируется, у них есть свой поддомен. Напомним:

  • Все арендаторы используют одну базу данных, но каждая из них имеет свои собственные схемы. Представьте, что у вас есть веб-сайт abc.com, и кто-то зарегистрировал арендатора xyz, чтобы они могли получить доступ к своей странице через xyz.abc.com, затем для арендатор xyz у вас есть отдельная схема, содержащая все таблицы, таким образом инкапсулируя данные, относящиеся только к арендатору xyz. Существуют и другие способы, такие как наличие одной базы данных и одной схемы для всех или наличие даже отдельных баз данных. Но подход к схемам - лучший компромисс. Документация библиотеки django-tenants содержит более подробную информацию, если вы заинтересованы
  • Используйте django-tenants библиотеку, чтобы абстрагировать работу с арендаторами. Когда кто-то обращается к xyz.abc.com, вам нужно знать, что xyz является арендатором и что вы должны использовать схему xyz. django-tenants библиотека делает это для вас, поэтому при каждом запросе вы можете получить объект арендатора, просто сделав current_tenant = request.tenant
  • Вам нужно различать общие таблицы и таблицы, относящиеся к арендатору. Например, наличие таблицы со списком заказов зависит от арендатора. У каждого арендатора может быть своя собственная база данных, содержащая все их заказы. Эта таблица должна быть внутри схемы xyz. В то же время у вас будут некоторые основные таблицы Django, например пользователь. Данные могут быть разделены, например, чтобы запретить двум пользователям регистрироваться с тем же адресом электронной почты.
  • Вам нужно настроить DNS для поиска подстановочного выражения *. abc.com, для которого вы можете добавить запись A внутри вашей CPanel с помощью ссылки *.abc.com к IP вашего сервера.