Ayuda con infraestructura para un proyecto

Buenas a todos!

Estoy trabajando sobre un proyecto en Yii 1.1.16. Este es un sistema de gestión de proyectos.

Explicación de lo que tengo que hacer:

El usuario "Juan" de la empresa "Yii" ingresa a www.misistema.com y se le solicitará sus credenciales. Juan coloca su usuario y contraseña y el sistema les muestra sus Proyectos. Internamente el sistema valida que el usuario "Juan" exista en la base de datos de clientes y setea la base de datos correspondiente durante toda la vida de su sesión. Los usuarios de la empresa "Yii" podrán acceder sólo a sus proyectos y no, por ejemplo, a los de la "Empresa 2".

Hasta aquí viene siendo una infraestructura multi tenant normal. Sería necesario tener una tabla "instancias" donde existe un usuario "Juan" con su contraseña.

Por otro lado, los usuarios de cualquier empresa también podrán consultar y escribir en lo que he denominado "tablas compartidas".

Ejemplo de uso:

  • Juan tiene acceso al Proyecto "Foro de Yii".

  • Los usuarios de la empresa Yii (empresa de Juan) pueden ver el proyecto "Foro de Yii".

  • Los usuarios de la "Empresa 2" no pueden ver el proyecto "Foro de Yii" ya que pertenecen a otra empresa.

  • Juan puede consultar/escribir en la "Tabla compartida 1".

  • Pedro (usuario de la "Empresa 2") puede consultar/escribir en la "Tabla compartida 1".

Notas:

  • Este proyecto tiene implementado el módulo de RBAC "Auth" de Christoffer Niska.

  • Mi idea es usar Amazon AWS para instalar las instancias pero estoy abierto a sugerencias.

  • El código debe ser único para hacer más eficiente el deploy de nuevas funcionalidades. Entiendo que esto puede hacerse de manera ágil con Docker o tecnologías similares pero no tengo experiencia en ellas.

Entiendo que es un poco confuso pero tal vez el gráfico que adjunto traiga un poco de claridad.

Espero enormemente que me puedan ayudar ya que no tengo idea de cómo implementar esta infraestructura.

Gracias!

No me ha quedado claro cuantas bases de datos quieres emplear. ¿Una por empresa y otra para las tablas compartidas?

Qué representan las tablas compartidas de las que hablas?

Pues yo ahí lo que pillo es un sistema con una tabla usuarios, una tabla empresas y una tabla proyectos. Para manejarlo solo necesitas una bd y en principio esas tres tablas principales.

Gracias por las respuestas.

Les comento que cada empresa tendrá su propia base de datos con "tablas propias" como la de Proyectos y otras "tablas compartidas" como la "Tabla compartida 1" (ejemplo: Bancos/Entidades Financieras).

Las compartidas son tablas en las cuales las empresas podrán consultar Y escribir datos para que se conforme una base de datos colaborativa donde todas las empresas ven los datos actualizados.

En los enfoques multi tenancy lo que se hace es verificar al usuario y luego setear la DB para toda la vida de su sesión pero aquí lo que necesito es esto de las "tablas compartidas".

Se entiende?