Laravel - Duda: estructuración y despliegue de una plataforma desarrollada en Laravel

 
Vista:
sin imagen de perfil
Val: 4
Ha disminuido su posición en 7 puestos en Laravel (en relación al último mes)
Gráfica de Laravel

Duda: estructuración y despliegue de una plataforma desarrollada en Laravel

Publicado por Javi (2 intervenciones) el 15/02/2019 13:39:50
Hola, llevo poco tiempo haciendo desarrollos con Laravel y me gustaría saber si alguien pudiera aclararme u orientarme sobre el despliegue de un proyecto.

En principio la idea es crear un único proyecto Laravel alojado en un dominio y con una base de datos, con la intención de tener una plataforma web común para todos los clientes que vayan a hacer uso de ella.

Esto permitiría tener un solo repositorio de desarrollo, así como un único almacenamiento con la información de todos los clientes, algo que a simple vista podría facilitar el mantenimiento de la plataforma, pero por el que me han surgido varias dudas al respecto.

La finalidad es construir un sistema de gestión informativa que permita a cada cliente almacenar documentación y registros de su actividad diaria para poder obtener datos estadísticos.

Teniendo en cuenta que en un principio se desconoce el número de clientes al que puede estar dirigida la plataforma, es decir, podría tener entre 1..n clientes, cada uno con su información y documentación sensible, creo que esta planificación daría lugar a posibles problemas de protección de datos y seguridad.

Ante esta preocupación, surgió la idea de hacer uso de múltiples bases de datos independientes, algo que Laravel permite gestionar mediante la configuración de diferentes conexiones incluso entre diferentes drivers.

Con este nuevo planteamiento se podría seguir disponiendo de un único dominio, que podría tener una base de datos principal común junto con n bases de datos independientes, una por cliente, donde se almacenase la información correspondiente de cada uno, de esta manera habría una separación física de los datos.

Una vez llegado a este punto, me surge una nueva duda, y es que ocurriría en el caso de que uno de los clientes demandase un nuevo módulo específico para él, habría que crear un nuevo repositorio con un dominio independiente ya que sería otra plataforma diferente.

Por lo que me planteé un nuevo escenario, teniendo un único repositorio igual para todos sin cambios específicos, podría ser mejor planteamiento crear dominios independientes por cada cliente, con su base de datos independiente, de tal forma que cada uno de los usuarios del cliente acceda directamente a su propio espacio sin necesidad de compartirlo entre muchos otros que no tienen nada que ver.

Esto podría complicar algo el mantenimiento, ya que pasaría a tener múltiples sitios en vez de uno solo, algo que podría solventarse con herramientas de despliegue como pudiera ser Capistrano, pero que permitiría tener una distribución mucho más limpia por cliente.

Ahora, volviendo al punto en el que un cliente pudiera solicitar una modificación específica, seguiría apareciendo la misma problemática, nuevo repositorio basado en el existente, por lo que la gestión de múltiples base de datos vuelve a tomar fuerza.

Me explico, la idea ahora sería, tener una plataforma independiente de gestión de clientes donde almacenar los datos de clientes que están haciendo uso de la plataforma, con la configuración de las bases de datos de cada uno de ellos, de tal forma que esto permita a un administrador acceder a la información concreta de cada uno de ellos desde un único sitio, de esta forma incluso teniendo un repositorio diferente por cambios específicos, únicamente habría que dar de alta al cliente en la plataforma de gestión y podría acceder a su información.

Evidentemente cada planteamiento tiene sus pros y contras, me gustaría conocer la opinión de alguien experto y contrastar los puntos de vista que pueda aportar.

Incluyo unos bocetos de los planteamientos que he descrito para intentar ser algo más claro en la idea que me ha surgido.

- Primer caso: un dominio y una base de datos.

caso1

- Segundo caso: un dominio, una base de datos principal y n bases de datos por cliente.

caso2

- Tercer caso: un dominio de gestión con una base de datos principal y acceso a n bases de datos por cliente, junto con n dominios independientes por cliente.

caso3

Muchas gracias, un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Javier (orzo) Rodríguez
Val: 49
Ha mantenido su posición en Laravel (en relación al último mes)
Gráfica de Laravel

Duda: estructuración y despliegue de una plataforma desarrollada en Laravel

Publicado por Javier (orzo) Rodríguez (17 intervenciones) el 16/02/2019 13:22:24
Hola, Javi.
Yo me muevo específicamente en este entorno:

Por lo que me planteé un nuevo escenario, teniendo un único repositorio igual para todos sin cambios específicos, podría ser mejor planteamiento crear dominios independientes por cada cliente, con su base de datos independiente, de tal forma que cada uno de los usuarios del cliente acceda directamente a su propio espacio sin necesidad de compartirlo entre muchos otros que no tienen nada que ver.

Me dedico a desarrollar intranets a medida para mis clientes. Partiendo de una base unificada para todos ellos (lo que yo llamo framework4), que es lo que instalo en sus hostings cuando cerramos el trato, lo extiendo en la dirección que ellos me piden específicamente.
La ventaja de esta forma de hacerlo es que puedes compartir rápidamente entre clientes cualquier prestación que desees añadir a la intranet -cliente de correo electrónico, gestión documental o lo que sea-, manteniendo siempre sus datos compartimentados y ajustádolo contínuamente a sus necesidades según lo que me piden.
Lo importante, en cualquier caso, es que sea capaz de montar el entorno de manera que prestes el servicio concreto que te piden tus propios clientes.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 4
Ha disminuido su posición en 7 puestos en Laravel (en relación al último mes)
Gráfica de Laravel

Duda: estructuración y despliegue de una plataforma desarrollada en Laravel

Publicado por Javi (2 intervenciones) el 18/02/2019 09:01:00
Buenos días Javier, gracias por tu respuesta.

Como bien dices, la idea es adaptarse a las peticiones que se planteen para poder dar servicio, siempre buscando la mejor opción para que pueda escalarse y mantenerse con facilidad y claridad, en ese caso tener un único despliegue para todos es algo que puede volverse complicado.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar