Resumen
Se trata de una arquitectura de software en la que varios grupos de usuarios diferentes pueden utilizar una sola instancia de software; por ejemplo, las ofertas de Software como servicio (SaaS).
En el ámbito del cloud computing, también puede referirse al hosting compartido, donde los recursos del servidor se dividen entre distintos clientes.
La arquitectura multiempresa es lo contrario a aquellas con un solo propietario, en las que una instancia de software o un sistema informático tiene solamente un usuario o un grupo de usuarios finales.
Las aplicaciones con este tipo de arquitectura suelen ofrecer cierto nivel de personalización, como la posibilidad de modificar su aspecto o de elegir las restricciones y los permisos de control de acceso específicos para los usuarios.
Evolución del tiempo compartido al software como servicio (SaaS)
El concepto de la arquitectura multiempresa ya tiene varias décadas. En los años sesenta, las universidades que tenían computadoras centrales potentes y costosas desarrollaron sistemas de software de tiempo compartido, los cuales permitían que varios usuarios accedieran al sistema al mismo tiempo.
La idea jamás desapareció, y hoy en día es lo que posibilita el cloud computing. La nube pública toma un conjunto de recursos compartidos (la capacidad de procesamiento y la memoria) y lo divide entre varios usuarios. Las cargas de trabajo y los datos de cada uno de ellos permanecen aislados, incluso si se ejecutan en el mismo equipo físico o grupo de equipos.
Si ampliamos un poco esta idea y la aplicamos a la arquitectura de software, obtenemos el concepto moderno de SaaS. Un proveedor de SaaS ejecuta una sola instancia de una aplicación y brinda acceso a los clientes individuales. Los datos de cada usuario permanecen aislados a pesar de que todos acceden al mismo software.
En el caso de una plataforma de organización en contenedores, como Kubernetes, la arquitectura multiempresa suele implicar un clúster individual que se utiliza en varios proyectos y que está configurado para que cada uno se ejecute independientemente de los demás.
Diferencias entre la arquitectura multiempresa y el cloud computing
Como se demostró anteriormente, la arquitectura multiempresa es una característica importante del cloud computing, ya que se trata de una sola instancia de una aplicación de software que se ofrece a varios usuarios. Las nubes se consideran plataformas como servicio (PaaS), mientras que la arquitectura multiempresa suele asociarse con las aplicaciones de SaaS.
Los proveedores de servicios de nube ponen a disposición de los usuarios la plataforma y la infraestructura de TI subyacente necesaria para el cloud computing a partir de un conjunto de recursos que luego se asignan a varios usuarios.
La arquitectura de nube define la manera en la que se conectan todos los elementos y las funciones necesarias para diseñar este tipo de entornos y obtener una plataforma en línea donde se puedan ejecutar las aplicaciones.
El diseño de una plataforma de nube exige un nivel de desarrollo superior para incorporar la organización en contenedores, la coordinación, las interfaces de programación de aplicaciones (API), el enrutamiento, la seguridad, la gestión y el software de automatización.
Arquitectura de nube pública: entorno de nube creado a partir de recursos ajenos al usuario final que pueden redistribuirse a otros usuarios.
Arquitectura de nube privada: se define en líneas generales como un entorno de nube diseñado solo para el usuario final, que generalmente se encuentra dentro del firewall del usuario y, en algunas ocasiones, alojado de manera local.
Ventajas de la arquitectura multiempresa
La arquitectura multiempresa aporta muchos beneficios, los cuales explican la popularidad del cloud computing.
Permite ahorrar dinero. La informática resulta más económica a escala, y la arquitectura multiempresa permite consolidar y asignar los recursos de manera eficiente, lo cual se traduce en el ahorro de costos operativos.Para un usuario individual, suele ser más rentable pagar el acceso a un servicio de nube o a una aplicación de SaaS que ejecutar su propio hardware y software.
Brinda flexibilidad. Si invirtió en sus propios sistemas de hardware y software, es probable que alcancen su capacidad máxima en los momentos de mucha demanda o que permanezcan inactivos cuando haya poca. Sin embargo, una nube multiempresa puede asignar un grupo de recursos a los usuarios según sus necesidades aumenten o disminuyan. Si es cliente de un proveedor de nube pública, puede obtener más capacidad cuando la necesite, sin tener que pagar por ella cuando no la requiera.
Ofrece mayor eficiencia. Con la arquitectura multiempresa, los usuarios no tienen que ocuparse de gestionar la infraestructura ni realizar las tareas de actualización y mantenimiento. Los clientes individuales pueden delegar los trabajos rutinarios a un proveedor central de nube, en lugar de que sus propios equipos deban hacerse cargo.
Las nubes tienen mucho más que ofrecer.
¿Cuándo conviene la arquitectura de usuario único?
Si bien la arquitectura multiempresa tiene muchas ventajas, los sistemas informáticos destinados a un solo usuario son más adecuados para ciertos casos prácticos (p. ej., cuando se utiliza la nube privada o su propio centro de datos).
El caso más destacado es el de la seguridad de los datos para las aplicaciones que involucran información sumamente confidencial. Los entornos de nube pública y los productos de SaaS están diseñados para aislar las cargas de trabajo y los datos, y tienen un historial de buen funcionamiento, pero los investigadores encontraron puntos vulnerables en las pruebas controladas que, en teoría, podrían dar lugar a ataques a las distintas empresas en los entornos de nube.
En la práctica, estos riesgos son relativamente pequeños. Los aspectos vulnerables de las arquitecturas compartidas son poco comunes y necesitan una gran destreza, según un informe sobre los puntos vulnerables de la nube, que realizó la Agencia de Seguridad Nacional (NSA) de Estados Unidos en 2020. Hasta ese momento, no se habían documentado ataques entre los distintos clientes de ningún proveedor importante de nube pública. La NSA considera que estos riesgos son menores que los derivados de un control deficiente del acceso y de los errores en la configuración.
Entornos multiempresa en Linux
Al momento de establecer una arquitectura multiempresa, se debe elegir si se aislarán los entornos con máquinas virtuales (VM) o con contenedores.
En el caso de las VM, un hipervisor pone en marcha las máquinas guest con sus propias aplicaciones, dependencias y sistema operativo, y se asegura de que los usuarios estén aislados de los demás.
Los contenedores ofrecen un modelo más ligero, flexible y fácil de ampliar en comparación con las VM. Simplifican las implementaciones multiempresa al ejecutar varias aplicaciones en un solo host, y utilizan el kernel y el tiempo de ejecución del contenedor para ponerse en marcha. Las aplicaciones que se ejecutan en los contenedores comparten un kernel, incluso entre varios usuarios, a diferencia de las VM, donde cada una incluye el propio.
En Linux®, los espacios de nombres permiten que varios contenedores utilicen el mismo recurso a la vez, sin generar problemas. Asegurar un contenedor es como asegurar cualquier proceso en ejecución.
Cuando se utiliza Kubernetes para la organización en contenedores, se pueden configurar los entornos multiempresa usando un solo clúster de Kubernetes. Es posible separar a los usuarios en sus propios espacios de nombre y crear políticas que garanticen su aislamiento.