Diseña arquitecturas multiusuario

En este documento, encontrarás ayuda para planificar, diseñar y, también, implementar una arquitectura multiusuario en Google Cloud, mediante la posibilidad de elegir entre los siguientes enfoques:

  1. Mismo entorno de ejecución para varios usuarios.
  2. Un entorno de ejecución para cada dominio de usuario.
  3. Un contenedor de recursos para cada dominio de usuario.

Estos enfoques se enumeran en orden creciente de aislamiento entre los usuarios, pero no son necesariamente exclusivos. Puedes implementar un enfoque híbrido, en el que eliges diferentes opciones para diferentes clases de cargas de trabajo. Por ejemplo, puedes proporcionar un entorno de ejecución compartido para varios dominios de usuarios a un conjunto de usuarios y proporcionar un entorno de ejecución para cada dominio de usuarios a otro conjunto de usuarios.

Este documento es útil si necesitas aprovisionar y configurar una arquitectura multiusuario en Google Cloud y deseas que una sola entidad administrativa esté a cargo de la arquitectura multiusuario. Por ejemplo, debes aislar diferentes unidades de negocios, equipos o usuarios de la infraestructura. O bien, debes implementar aplicaciones existentes sin volver a escribirlas por completo. En este documento, la arquitectura multiusuario hace referencia a la arquitectura multiusuario a nivel de infraestructura y no a nivel de la aplicación. Por ejemplo, tienes una aplicación de la que deseas implementar varias instancias, en las que hay una instancia por instancia.

Este documento también es útil si estás evaluando la posibilidad de diseñar una arquitectura multiusuario que administre una sola entidad administrativa, y deseas explorar cómo se vería. Elegir una opción por sobre otras depende de varios factores, y ninguna opción es intrínsecamente mejor que las otras. Cada opción tiene sus propias fortalezas y debilidades. Para elegir una opción, haz lo siguiente:

  1. Establece un conjunto de criterios para evaluar las diferentes opciones que tienes para planificar, diseñar y, también, implementar una arquitectura multiusuario.
  2. Evalúa cada opción en función de los criterios de evaluación.
  3. Elige la opción que mejor se adapte a tus necesidades.

Terminología

Los siguientes términos son importantes para comprender cómo diseñar, implementar y planificar una arquitectura multiusuario en Google Cloud:

  • Entorno de ejecución es un entorno en el que implementas tus cargas de trabajo.
  • Contenedores de recursos son recursos de carpetas o recursos del proyecto.
  • Usuario es una entidad que es responsable de los conjuntos de cargas de trabajo relacionadas en uno o varios entornos de ejecución.
  • Dominio de usuario es un entorno en el que los recursos y las cargas de trabajo que pertenecen a un usuario se distinguen claramente de los recursos pertenecientes a otros usuarios.
  • Aislamiento administrativo garantiza que los recursos que pertenecen a un dominio de usuario se separan de forma lógica de los recursos que pertenecen a otros dominios de usuario.
  • El aislamiento de consumo de recursos garantiza una asignación imparcial de recursos en cada dominio de usuario y evita un consumo excesivo de recursos por parte de los usuarios. El aislamiento del consumo de recursos implica el aislamiento administrativo.
  • El aislamiento del entorno de ejecución garantiza el aislamiento de los entornos de ejecución en cada dominio de usuario de los entornos de ejecución en otros dominios de usuario. Cualquier modificación en un entorno de ejecución en un dominio de usuario no puede afectar los entornos de ejecución en otros dominios de usuario. El aislamiento del entorno de ejecución implica el aislamiento del consumo de recursos.

Establece los criterios para evaluar arquitecturas multiusuario

A fin de establecer los criterios para evaluar las opciones de una arquitectura multiusuario, considera las características más importantes que necesitas en estas arquitecturas. Para recopilar información sobre las características que más necesitas, evalúa tus cargas de trabajo. Para obtener más información sobre cómo evaluar tus cargas de trabajo, consulta Migración a Google Cloud: Evalúa y descubre tus cargas de trabajo. Si necesitas evaluar un entorno de alojamiento de contenedores, lee Migra contenedores a Google Cloud: Comienza ahora.

Los siguientes criterios de evaluación y el orden en el que se enumeran son un ejemplo. Te recomendamos evaluar las cargas de trabajo a fin de compilar una lista de criterios que sean importantes para ti y para ellas, y ordenarlos según su importancia. Por ejemplo, después de evaluar las cargas de trabajo, puedes considerar los siguientes criterios de evaluación:

  1. Tipo de aislamiento que requieren tus cargas de trabajo. ¿Qué garantías de aislamiento necesitas para admitir? ¿Qué tipos de aislamiento necesitan tus cargas de trabajo? Elige entre el aislamiento administrativo, el de consumo de recursos o el de entorno de ejecución.
  2. Grado de control que cada usuario tiene en su dominio de usuario. ¿Cuántas opciones de personalización necesitan tus usuarios? ¿Cuánta libertad necesitan tus usuarios para administrar sus dominios de usuario? ¿Necesitas mantener un control estricto en cada dominio de usuario?
  3. Cantidad prevista de usuarios. ¿Necesitas administrar una gran cantidad de dominios de usuario? Si no tienes los recursos o la experiencia para automatizar la mayor cantidad de operaciones de mantenimiento posible, la complejidad de tu arquitectura puede aumentar con el número de dominios de usuario.
  4. Atribución de costos. ¿Necesitas facturar el consumo de los recursos a tus usuarios o que se atribuyen a la entidad que es responsable de la arquitectura multiusuario? Si necesitas considerar con precisión el consumo de recursos de cada usuario, puede que no sea posible compartir partes del entorno entre los usuarios, como los planos de control.
  5. Identidad federada. ¿Tus usuarios tienen sus propios proveedores de identidad con los que necesitan federarse o proporcionas un proveedor de identidad centralizado?
  6. Uso compartido de contenido o recursos entre tus usuarios. ¿Se requiere el uso compartido de contenido o recursos entre usuarios? ¿Qué tipo de contenido y recursos necesitan compartir los usuarios? ¿Qué tipo de asistencia necesitan tus usuarios del entorno y la infraestructura para compartir contenido y recursos?
  7. Límites de la infraestructura de respaldo. ¿La infraestructura que admite tu arquitectura multiusuario aplica límites a los recursos que puedes consumir? Por ejemplo, Google Cloud aplica cuotas al uso de los recursos. Si bien puedes solicitar el aumento de algunas de estas cuotas, otras son fijas y no se pueden aumentar.

Evalúa las opciones de arquitectura multiusuario

En Google Cloud, tienes diferentes opciones para implementar una arquitectura multiusuario. Para elegir la mejor opción para tus cargas de trabajo, primero debes evaluarlas según los criterios de evaluación que estableciste. Debes asignar una puntuación a cada entorno por cada opción de evaluación con una escala ordenada arbitraria. Por ejemplo, puedes asignar a cada opción una puntuación de una escala de 1 a 10 por cada criterio de evaluación.

Mismo entorno de ejecución para varios usuarios

Cuando usas el mismo entorno de ejecución para varios dominios de usuario, debes aislar los dominios de usuario con las características proporcionadas por el entorno de ejecución que los aloja. Por ejemplo, puedes aprovisionar un clúster de Google Kubernetes Engine (GKE) y un espacio de nombres para cada dominio de usuario de ese clúster. Como alternativa, puedes aprovisionar una instancia de Compute Engine y usar el sistema operativo para aislar los dominios de usuario.

Usa la siguiente lista para evaluar esta opción en función de los criterios que definiste antes:

  1. Tipo de aislamiento que requieren tus cargas de trabajo. Esta opción es viable si tus cargas de trabajo requieren solo aislamiento administrativo o aislamiento de consumo de recursos. Por ejemplo, Kubernetes admite espacios de nombres para el aislamiento administrativo y las cuotas de recursos para el aislamiento del consumo de recursos. Si necesitas aislamiento del entorno de ejecución, te recomendamos que elijas una de las otras opciones.
  2. Grado de control que cada usuario tiene en su dominio de usuario. Esta opción está asociada con la aplicación del control estricto de los dominios de usuario. Por ejemplo, deseas que los dominios de usuario sigan la configuración y el estado recomendados.
  3. Cantidad prevista de usuarios. Administrar una gran cantidad de dominios de usuario en el mismo entorno de ejecución puede poner en riesgo a varios usuarios para cada cambio en la configuración del entorno de ejecución. Por ejemplo, si tienes problemas con el plano de control del entorno de ejecución, estos pueden afectar a varios dominios de usuario en ese entorno de ejecución. Sin embargo, usar el mismo entorno de ejecución puede reducir la complejidad de automatizar el aprovisionamiento y la configuración de los dominios de usuario. Por ejemplo, si usas un clúster de GKE como un entorno de ejecución para varios dominios de usuario, el aprovisionamiento de un dominio de usuario nuevo solo puede requerir un espacio de nombres nuevo y aplicar cuotas de recursos.
  4. Atribución de costos. Atribuir costos a los usuarios puede ser una tarea difícil cuando varios usuarios comparten el mismo entorno de ejecución. Parte del entorno, como el plano de control, se comparte entre usuarios por lo que resulta difícil dividir los costos de forma correcta entre los usuarios. Además, necesitas un sistema de supervisión integral a fin de recopilar métricas sobre el consumo de recursos para facturar correctamente tus usuarios. Si necesitas atribuciones de costos estrictas y facturación para cada dominio de usuario, recomendamos elegir una de las otras opciones.
  5. Identidad federada. Si tus usuarios tienen sus propios proveedores de identidad para federar, debes evaluar si el entorno de ejecución es adecuado para este tipo de integración. También debes evaluar si deseas permitir que tus usuarios usen y administren su propio sistema de administración de identidades. Si deseas mantener un control estricto de la estructura de dominios de usuario, puedes usar un sistema de administración de identidades centralizado. El aprovisionamiento y la configuración de un sistema de administración de identidades en un entorno de tiempo de ejecución compartido es un desafío nada trivial. Si tus usuarios requieren este tipo de integración, te recomendamos que elijas una de las otras opciones.
  6. Uso compartido de contenido o recursos entre tus usuarios. Si tus usuarios necesitan compartir recursos o contenido entre diferentes dominios de usuario, esta opción puede simplificar la implementación de mecanismos de uso compartido, ya que cada dominio de usuario está en el mismo entorno de ejecución. No tienes que crear un canal de comunicación seguro entre diferentes dominios de usuario, ya que puedes usar las características del entorno de ejecución para permitir la comunicación entre diferentes dominios de usuario. Recomendamos elegir esta opción si necesitas admitir casos de uso compartido de contenido.
  7. Límites de la infraestructura de respaldo. Esta opción es adecuada si tus usuarios tienen requisitos homogéneos para los recursos porque limita lo que está disponible en el entorno de ejecución. Por ejemplo, un usuario solo puede solicitar un recurso que ofrece el entorno de ejecución.

Un entorno de ejecución para cada dominio de usuario

Cuando usas un entorno de ejecución para cada dominio de usuario, aíslas los dominios con las características proporcionadas por la plataforma que aloja los entornos de ejecución. Por ejemplo, puedes aprovisionar un clúster de GKE para cada dominio de usuario, o puedes aprovisionar una instancia de Compute Engine o un grupo de instancias para cada dominio de usuarios.

Usa la siguiente lista para evaluar esta opción en función de los criterios que definiste antes:

  1. Tipo de aislamiento que requieren tus cargas de trabajo. Esta opción es adecuada si tus cargas de trabajo requieren aislamiento del entorno de ejecución. Por ejemplo, si usas un clúster de GKE para cada dominio de usuario, debes aislar los entornos de ejecución y los planos de control.
  2. Grado de control que cada usuario tiene en su dominio de usuario. Esta opción permite que cada instancia personalice su entorno de ejecución. Los entornos de ejecución pueden ser autoadministrados, de modo que cada instancia administre sus entornos de ejecución, o puedes tener un equipo dedicado que administre todos los entornos de ejecución. La elección depende del grado de personalización que pretendas ofrecer a tus usuarios. Por ejemplo, si usas GKE, puedes permitir que tus usuarios administren sus clústeres. Esta opción te permite admitir diferentes tipos de entornos de ejecución. Por ejemplo, si usas GKE, puedes aprovisionar diferentes tipos de grupos de nodos: uno que ofrezca recursos de GPU y otro que ofrece recursos de Cloud TPU.
  3. Cantidad prevista de usuarios. Si planeas una gran cantidad de dominios de usuarios, el aprovisionamiento y la configuración de un entorno de ejecución para cada dominio puede ser una tarea no trivial. Además, esta opción puede no ser tan eficiente como tener un solo entorno de ejecución, ya que es posible que tus usuarios no usen por completo los recursos de sus entornos de ejecución. Si deseas mejorar la eficiencia y el uso de recursos, te recomendamos que elijas una de las otras opciones. Por ejemplo, si usas GKE, es posible que las cargas de trabajo implementadas en un clúster no consuman por completo los recursos del clúster.
  4. Atribución de costos. La atribución de costos es más fácil cuando los usuarios tienen su propio entorno de ejecución. Puedes usar las herramientas de supervisión y facturación que proporciona la infraestructura que admite tus entornos de ejecución para medir con precisión el consumo de recursos y los costos de los atributos en cada usuario. Por ejemplo, en Google Cloud, puedes configurar informes de facturación para analizar los costos de cada entorno de ejecución.
  5. Identidad federada. Evalúa si el entorno de ejecución es adecuado para este tipo de integración y si deseas permitir que tus usuarios usen y administren su propio sistema de administración de identidades. Si deseas mantener el control estricto de la estructura de tus dominios de usuario, es posible que desees usar un sistema de administración de identidades centralizado. Si tus usuarios requieren este tipo de integración, tener un entorno de ejecución dedicado para cada dominio ayuda a evitar cualquier impacto en otros dominios de usuario.
  6. Uso compartido de contenido o recursos entre tus usuarios. Para compartir contenido entre diferentes entornos de ejecución, se requiere infraestructura, aprovisionamiento y configuración adicionales. Por ejemplo, puedes configurar tus sistemas de autenticación y autorización para compartir contenido entre dominios de usuario en diferentes entornos de ejecución.
  7. Límites de la infraestructura de respaldo. La infraestructura que admite la arquitectura multiusuario puede limitar la cantidad de entornos de ejecución que puedes aprovisionar. Estos límites afectan en gran medida la cantidad de dominios de usuarios que puedes admitir, debido a la asignación de uno a uno entre los dominios de usuarios y los entornos de ejecución. Por ejemplo, GKE impone límites en la cantidad de clústeres que puedes crear en una zona o región determinadas.

Un contenedor de recursos para cada dominio de usuario

Cuando usas un contenedor de recursos para cada dominio de usuario, debes aislar los dominios de la usuario con las características que proporciona la plataforma que aloja los entornos de ejecución. Por ejemplo, puedes aprovisionar un proyecto o una carpeta de Google Cloud para cada dominio de usuario. Si bien el uso de carpetas puede afectar las propiedades de aislamiento de los dominios de usuario, esta configuración facilita la administración de la infraestructura compatible con la arquitectura multiusuario. Puedes alentar la reutilización, la anulación de duplicaciones y la separación lógica de los componentes de la arquitectura.

Usa la siguiente lista para evaluar esta opción en función de los criterios que definiste antes:

  • Tipo de aislamiento que requieren tus cargas de trabajo. Esta opción es adecuada si tus cargas de trabajo requieren aislamiento del entorno de ejecución. Por ejemplo, crea un proyecto de Cloud para cada dominio de usuario a fin de aislar por completo los dominios de usuario.
  • Grado de control que cada usuario tiene en su dominio de usuario. Esta opción permite que cada usuario personalice su entorno de ejecución y su jerarquía de recursos. Además, puedes admitir entornos de ejecución heterogéneos, incluso combinar varios entornos de ejecución en un solo dominio de usuario. Esta opción es adecuada si tus usuarios requieren varios entornos de ejecución para cada dominio de usuario. Por ejemplo, si usas GKE, puedes aprovisionar varios clústeres para cada dominio de usuario a fin de cumplir con los requisitos de las cargas de trabajo en ese dominio de usuario.
  • Cantidad prevista de usuarios. Aprovisionar y configurar varios entornos de ejecución para cada dominio de usuario puede ser una tarea no trivial, si planeas una gran cantidad de dominios de usuarios. Puede que esta opción no sea tan eficiente como tener un solo entorno de ejecución compartido entre instancias o incluso un entorno de ejecución para cada instancia. Es posible que tus usuarios no usen por completo los recursos de sus entornos de ejecución. Si deseas mejorar la eficiencia y el uso de recursos, te recomendamos que elijas una de las otras opciones. Por ejemplo, si usas GKE, las cargas de trabajo implementadas en un clúster no pueden consumir por completo los recursos de esos clústeres.
  • Atribución de costos. La atribución de costos es más fácil cuando los usuarios tienen sus propios contenedores de recursos. Puedes usar las herramientas de supervisión y facturación que proporciona la infraestructura que admite tus entornos de ejecución para medir con precisión el consumo de recursos y los costos de los atributos en cada usuario. Por ejemplo, en Google Cloud, puedes configurar informes de facturación para analizar los costos de cada entorno de ejecución.
  • Identidad federada. Puedes adaptar requisitos complejos de federación de identidades, ya que los usuarios tienen la libertad de aprovisionar y configurar su propia solución en su dominio de usuario. Aprovisionar y configurar su propia solución no impide que se integre en una solución centralizada.
  • Uso compartido de contenido o recursos entre tus usuarios. Para compartir contenido entre diferentes contenedores de recursos, se requiere infraestructura, aprovisionamiento y configuración adicionales. Por ejemplo, podrías tener que configurar un espacio al que se pueda acceder desde dominios diferentes de usuario para colocar el contenido que se puede compartir.
  • Límites de la infraestructura de respaldo. La infraestructura que admite tu arquitectura multiusuario puede imponer límites a la cantidad de contenedores de recursos que puedes aprovisionar. Estos límites afectan en gran medida la cantidad de dominios de usuarios que puedes admitir debido a la asignación uno a uno entre los dominios y los contenedores de recursos. Por ejemplo, GKE impone límites en la cantidad de clústeres que puedes crear en una zona o región determinadas.

Elige la opción correcta para tu entorno de destino

En las secciones anteriores, asignaste un valor a cada criterio para cada opción. Para calcular la puntuación total de cada opción, agrega todas las calificaciones de esa opción en función de los criterios. Por ejemplo, si una opción obtuvo una puntuación de 10 según el tipo de criterio de aislamiento y 6 según el grado de control que deseas permitir a cada usuario en su criterio de dominio de usuario, la puntuación total de ese entorno es 16.

También puedes asignar pesos diferentes a la puntuación de cada criterio a fin de representar la importancia que cada uno de ellos tiene en tu evaluación. Por ejemplo, si el tipo de aislamiento es más importante que el grado de control que quieres permitir a cada usuario en su dominio de usuario en tu evaluación, puedes definir multiplicadores para reflejarlo: un multiplicador de 1.0 para tipo de aislamiento y un multiplicador de 0.7 para el grado de control que deseas permitir a cada usuario en su dominio de usuario en tu evaluación. Luego, usa estos multiplicadores para calcular la puntuación total de una opción.

Después de calcular la puntuación total de cada opción que evaluaste, debes organizar las opciones según su puntuación total, en orden descendente. Luego, elige la opción con la puntuación más alta como tu opción.

Existen varias formas de representar estos datos, por ejemplo, puedes visualizar los resultados con un gráfico adecuado para representar los datos de variables múltiples, como un gráfico radial.

¿Qué sigue?