¿Cuáles son los pros y los contras de la tenencia múltiple en una aplicación Rails?

Hay más de una forma de diseñar una aplicación web para satisfacer diferentes necesidades. A veces, se instala una instancia separada de la aplicación para cada cliente, en una configuración conocida como un único inquilino. Mientras se encuentra en aplicaciones de múltiples inquilinos, una única instancia del software y la infraestructura de soporte sirve a múltiples usuarios en una arquitectura de múltiples inquilinos. Aquí cada cliente o inquilino comparte la aplicación de software y una única base de datos. En una arquitectura multiinquilino, la aplicación está diseñada para segregar la configuración y los datos para garantizar que cada inquilino trabaje con una instancia de aplicación virtual personalizada. El software es lo suficientemente inteligente como para saber a quién pertenecen los datos una vez que los datos en la base de datos se etiquetan como pertenecientes a un usuario u otro.

Las aplicaciones de múltiples inquilinos se agrupan principalmente en tres tipos de usuarios. Administradores que tienen acceso de nivel superior y son los clientes propietarios del sitio. Luego vienen los gerentes, los recursos de la compañía, quienes administran los proyectos y usuarios a nivel de la compañía y finalmente los usuarios finales de esta aplicación. Cada página será accesible para los usuarios en función de sus autorizaciones. Los usuarios pueden tener la capacidad de personalizar ciertas partes de la aplicación, como el color de la interfaz de usuario (UI) o las reglas comerciales, pero no pueden personalizar el código de la aplicación.

Ventajas de la tenencia múltiple:

  • La tenencia múltiple reduce los costos al compartir los mismos recursos de energía y software entre sus clientes. El software requiere licencias y soporte, y el costo de esto aumentará si necesita comprarlos para cada cliente, como en el caso de la tenencia individual. La infraestructura compartida conducirá automáticamente a menores costos.
  • En una aplicación de múltiples inquilinos, solo tendrá que monitorear y proporcionar administración para una sola plataforma, a diferencia de las aplicaciones de un solo inquilino donde debe administrar diferentes conjuntos para cada cliente. De esta manera, un proveedor de SaaS de múltiples inquilinos puede brindar un soporte más eficiente y efectivo, incluida la resolución de problemas y la resolución de problemas.
  • Una arquitectura de múltiples inquilinos le facilitará aumentar su capacidad cuando se requiere más fuerza y ​​potencia. La capacidad total de todo el sistema aumenta y se vuelve más escalable cuando trae nuevo hardware a la plataforma, no solo para un solo cliente sino para todos los clientes asociados. Agregar funciones para un solo cliente lo pone a disposición de otros clientes.
  • Actualizar la versión del software o los recursos del sistema para aplicaciones de múltiples inquilinos es fácil, ya que existe un lugar único y centralizado para la gradación, la instalación y más.

Desventajas de la tenencia múltiple:

  • Una aplicación de múltiples inquilinos tiene menos flexibilidad que una aplicación de un solo inquilino para establecer configuraciones de bajo nivel. Esto podría no ser un problema para usted, pero si su aplicación requiere mucha personalización para cada nuevo inquilino, entonces una aplicación multiinquilino podría no ser la mejor solución.
  • Una aplicación multiinquilino es más compleja que una aplicación equivalente de un solo inquilino, cuya configuración puede permanecer esencialmente estática. En una aplicación de inquilino único, no necesita ningún código para detectar a qué inquilino se destina una solicitud web ni para proteger a sus clientes de la fuga de datos entre inquilinos. Los formatos de registro son más simples ya que los registros se segregan con una instancia separada de la aplicación para cada cliente.
  • Dado que una aplicación multiinquilino está respaldada por una sola base de datos, que se ejecuta en un solo servidor, tiene áreas menores propensas a fallas, pero esos puntos de falla pueden resultar mucho más desastrosos. Todos los inquilinos experimentan pérdida de servicio cuando la base de datos para una aplicación multiempresa no está disponible, a diferencia de cuando se rompe una instancia de aplicación de un solo inquilino. Derriba a un solo inquilino. Otras instancias continúan sin verse afectadas.

¿Cómo crear una aplicación Rails multiinquilino?

Apartment es una biblioteca superior de Ruby conocida por separar los datos de los inquilinos. En pocas palabras, puede crear inquilinos utilizando Apartamento y, a cada inquilino, la biblioteca asignará automáticamente un nuevo esquema aislado. La creación de instancias de bases de datos aisladas también es posible con Apartment. Apartment le proporcionará herramientas para ayudarlo a manejar múltiples inquilinos en su aplicación Rails. Si bien aún permite que existan algunos datos en un inquilino común, si necesita que ciertos datos sean secuestrados en función de la empresa o la cuenta, Apartment puede ayudarlo. Apartment le permitirá crear aplicaciones SaaS basadas en Rails con etiquetas blancas parciales o completas desde el principio. Para aprovechar al máximo Apartment, considere usar una base de datos PostgreSQL.

Ahora, ¿cómo funciona el apartamento? El departamento obtiene datos del esquema correspondiente al elevador: dominio, subdominio o nombre de host completo. Con estos ascensores, la biblioteca analiza cada solicitud a la base de datos. El apartamento segrega a los inquilinos por subdominios, de manera predeterminada, pero puede configurarlo para usar dominios rápidamente. Tenga en cuenta que, cuando se trata de un esquema compartido, Apartment no funciona. Su equipo de desarrollo solo necesita asignar ID a los inquilinos y enviar solicitudes de bases de datos con esos ID para implementar un enfoque de esquema compartido, y si va a proporcionar subdominios o dominios personalizados para sus clientes, necesitará Detectify. Para las aplicaciones SaaS modernas basadas en Rails, querrás más flexibilidad. Aquí es donde entra en juego Detectify. Detectify puede crear solicitudes de bases de datos utilizando subdominios y dominios. Detectify, al enviar una solicitud basada en URL a la base de datos también permite que la aplicación ignore las rutas. En general, Detectify demuestra ser una gema multi-arrendamiento más avanzada que Houser.

Conclusión:

La tenencia múltiple suele ser un término mal entendido y mal utilizado. El arrendamiento múltiple es un enfoque arquitectónico que permite que una sola instancia de una aplicación se comparta entre múltiples organizaciones o usuarios, también conocidos como inquilinos y se aplica solo a SaaS. El principio central aquí es que es la instancia única de la aplicación la que se comparte. Por lo tanto, las arquitecturas de instancias múltiples no son lo mismo que las arquitecturas de inquilinos múltiples.

Cualquier cosa que esté mal diseñada nunca funcionará idealmente, pero aquí, más que la mayoría de los casos, un arrendamiento múltiple mal diseñado no le hará ningún bien. Esto se debe a que un arrendamiento múltiple mal diseñado puede dificultar la función central de la misma, que es la reducción de los costos de operación, al impactar la automatización, entre otras cosas. El desarrollo de una aplicación de software como servicio multiusuario con Rails va más allá del diseño de la capa de base de datos. Si elige las arquitecturas de bases de datos perfectas al principio, será mucho más fácil desarrollar, escalar y admitir su aplicación web a largo plazo. [1]

Notas al pie

[1] https://www.cognitiveclouds.com/…