Para construir una plataforma de múltiples tiendas en Ruby On Rails, puede haber cuatro enfoques principales. El enfoque que se adapte a sus necesidades depende de los detalles de su caso. Discutiré los cuatro enfoques uno por uno.
1. Aplicación multicliente con base de datos única
Con esta arquitectura, los datos de todas las tiendas se almacenarán en la misma base de datos. Esto requerirá una columna tenant_id única en la mayoría de las tablas. Este enfoque es el más adecuado si todas las tiendas van a tener exactamente la misma estructura de datos. Será difícil escalar las tiendas por separado o satisfacer los requisitos personalizados de tiendas particulares. Se puede escalar con bastante facilidad para manejar una gran cantidad de tiendas.
- ¿Cómo se crea una interfaz de usuario para aplicaciones Android / iOS y SaaS?
- ¿Cuál es el mejor portal de seguimiento de afiliados para una empresa SaaS?
- ¿El software como servicio es un nombre elegante para un servicio web?
- ¿Es Hubspot el mejor CRM gratuito?
- ¿Cuál es la mejor manera de pagar-lanzar una aplicación web SaaS?
2. Aplicación multicliente con base de datos múltiple
En este enfoque para todos los inquilinos / tiendas habrá bases de datos separadas pero una sola aplicación ejecutándose sobre ellas. En este enfoque a nivel de aplicación, resolveremos a qué base de datos debemos conectarnos en función del inquilino actual. Este enfoque es más fácil de adaptar con una base de código existente que está diseñada para una sola tienda. Con el aumento en el número de tiendas e instancias de bases de datos, puede ser un poco difícil de administrar.
3. Varios servidores que ejecutan la misma aplicación
Este es el enfoque más simple en el que simplemente ejecutamos varias instancias de la misma aplicación. Cada instancia tendrá su propio servidor de aplicaciones y base de datos. Cualquier cambio nuevo en el código se implementará simultáneamente en todas las instancias utilizando herramientas de implementación como Capistrano.
4. Extracción de funcionalidades en gemas.
En este enfoque, podemos extraer piezas de código principales y comunes en gemas y reutilizar esas gemas en todas las tiendas. Toda tienda puede tener algunas funcionalidades comunes y otras distintas.
Todos estos enfoques tienen sus pros y sus contras. Los tres primeros son adecuados cuando todas las tiendas tienen exactamente el mismo modelo de datos. Una cosa a tener en cuenta es que el código debe estar escrito de manera genérica y no debe contener ninguna información o lógica específica de la tienda. Todas las cadenas y configuraciones deben ser configurables. El último enfoque es adecuado cuando cada una de las tiendas puede tener sus requisitos personalizados.
Obtener una nueva tienda en vivo será más fácil en el primer enfoque y se volverá más difícil a medida que avanzamos hacia el último enfoque. Elija según sus requisitos.