services microservicios implementar ejemplos crear con como app python django saas

microservicios - Cómo crear una aplicación SaaS con Python y Django



microservicios python flask (4)

  1. Un proyecto, esto facilitará el mantenimiento. Manejo la resolución del host con middleware en django-ikari.
  2. tu no ver # 1
  3. Yo uso lo siguiente:

  4. Aunque no es necesario, lo siguiente ayudará a largo plazo:

    • django-hunger : suscripciones beta privadas
    • django-waffle: característica voltear
    • django-classy-tags: creación de plantillas agradable, fácil y ordenada
    • django-merchant: marco de pasarela de pago abstraído
    • django-maquetas: pruebas rápidas con modelos
    • django-merlin: mejores formas de varios pasos (asistentes)
  5. Finalmente, bueno tener

¿Me puede aconsejar con algunos artículos / aplicaciones que le permitan crear una aplicación SaaS (software como servicio) con Python y Django?

Por el momento los temas generales que no entiendo son:

  1. ¿Tiene una aplicación que funcione para todos los clientes o una aplicación por cliente?
  2. ¿Cómo administra el acceso a la base de datos, los permisos o la base de datos diferente para cada cliente?
  3. ¿Hay alguna herramienta que le permita convertir una aplicación a SaaS?

Software como servicio es solo una palabra de marketing, técnicamente no es diferente de un servidor al que se puede acceder a través de Internet. Así que la pregunta 3 no tiene sentido. Eso nos deja con la pregunta 1 y 2:

  1. ¿Qué quiere decir con ''aplicación'' en este contexto? Su aplicación web (construida con Python y Django) puede tener múltiples aplicaciones Django (componentes que conforman la aplicación web), pero creo que eso no es lo que quiere decir. Puede crear su sitio web en Python / Django y tener varias opciones de personalización según el usuario (cliente) que haya iniciado sesión. Por ejemplo, un cliente premium puede tener varias opciones avanzadas habilitadas, pero aún es parte de la misma base de código. Es solo que algunas opciones (botones / controles, etc.) no se muestran para ciertos clientes

  2. Django tiene muchas herramientas para la administración de usuarios, permisos y grupos. Puede otorgar diferentes permisos a cada usuario (cada cliente) y estos permisos determinan lo que pueden hacer. El acceso a la base de datos debe ser administrado por su aplicación web. Por ejemplo, el código determina qué información debe mostrarse en la página web (según el cliente que haya iniciado sesión) y ese código recupera la información de la base de datos. Dependiendo de la escala a la que se dirige, también puede especificar la base de datos que debe usarse para recuperar la información.


Tengo una publicación en el blog que describe mi propuesta de cómo hacer una aplicación web SAAS de varios inquilinos utilizando Django. Multi-tenancy aquí significa que cuando el usuario se registra, tiene su subdominio. Recordar:

  • Todos los inquilinos comparten una base de datos, pero cada uno tiene sus propios esquemas. Imagine que tiene el sitio web abc.com y alguien ha registrado un inquilino xyz para que acceda a su página a través de xyz.abc.com ; luego, para un inquilino xyz , tiene un esquema separado que contiene todas las tablas, por lo tanto, encapsula datos relacionados solo con el inquilino xyz . Hay otras formas, como tener una base de datos y un esquema para todos, o incluso tener bases de datos separadas. Pero el enfoque de esquemas es la mejor compensación. La documentación de la biblioteca django-tenants contiene información más detallada si está interesado
  • Use la biblioteca django-tenants para abstraer el trabajo con inquilinos. Cuando alguien accede a xyz.abc.com , debe saber que xyz es el inquilino y que debe usar el esquema xyz . django-tenants biblioteca django-tenants hace esto por usted, por lo que en cada solicitud puede obtener el objeto del arrendatario simplemente haciendo current_tenant = request.tenant
  • Debe diferenciar entre tablas compartidas y tablas específicas del arrendatario. Por ejemplo, tener una tabla con la lista de órdenes es específico del arrendatario. Cada inquilino puede tener su propia base de datos que contiene todos sus pedidos. Esta tabla debe estar dentro del esquema xyz . Al mismo tiempo, tendrá algunas tablas centrales de Django, como usuario . Los datos se pueden compartir, por ejemplo, para no permitir que dos usuarios se registren con el mismo correo electrónico.
  • Debe configurar su DNS para detectar una expresión de comodín * .abc.com , para lo cual puede agregar un registro A dentro de su CPanel con *.abc.com enlazando a la IP de su servidor

Un ejemplo muy básico y elemental de cómo lo harías.

Supongamos que tiene una aplicación simple diseñada para resolver un caso de negocio en particular. Por ejemplo, creó una aplicación para gestionar las reservas de habitaciones en su oficina.

Para "convertir" esta aplicación en un servicio , debe configurarlo de manera tal que la mayoría de las partes específicas de cada usuario sean paramétricas (se pueden "templar", por falta de una palabra mejor).

Así es como se convertiría la parte frontal. Puede crear variables para mantener el logotipo, título, teaser, combinación de colores para la aplicación; permitiendo a cada usuario personalizar su instancia.

Hasta ahora, su aplicación es capaz de personalizarse en la parte frontal. Todavía está utilizando la misma base de datos que fue diseñada en la fase uno.

Ahora viene la cuestión de mostrar solo aquellos campos que son relevantes para un usuario en particular. Esto sería parametrizar la base de datos. Por lo tanto, puede agregar una columna que identifique cada fila como perteneciente a un usuario en particular; luego cree vistas o procedimientos almacenados que filtran los registros según el usuario que haya iniciado sesión.

Ahora la aplicación puede ser "alquilada"; Ya que eres capaz de personalizar la instancia basada en el usuario.

A partir de aquí, se vuelve más grande, dependiendo de la escala, el tipo y la personalización deseada de su aplicación. Puede decidir que su aplicación tenga un mejor rendimiento cuando cada usuario tenga su propia base de datos dedicada en lugar del combo de vista y procedimiento almacenado.

Puede decidir que para algunos tipos de usuarios (o "paquetes"), necesita una instancia dedicada de la ejecución de su aplicación. Por lo tanto, para los usuarios "premium" o "ultra" desea tener su propio sistema dedicado en ejecución.

Si su aplicación requiere mucho almacenamiento, puede optar por cobrar por separado para el almacenamiento.

La conclusión es que no tiene nada que ver con el lenguaje utilizado. Es más un problema de arquitectura y diseño.