Arquitectura de CloudLabs y automatización de despliegues de infraestructura: análisis técnico en profundidad
Ready to See CloudLabs in Action?
Turn your ideas into hands-on experiences. Tell us what you're looking for, and team CloudLabs will help you find the right solution.
CloudLabs es una plataforma de laboratorios prácticos utilizada para planificar, aprovisionar y gestionar el ciclo de vida de entornos de laboratorio para diversos escenarios, incluyendo formación técnica, talleres, conferencias del sector, POCs, demostraciones, etc. CloudLabs es utilizado por empresas tecnológicas e instructores de todo el mundo a una escala en la que aprovisionamos miles de entornos de laboratorio cada mes.
En este artículo, profundizaremos en las tecnologías subyacentes que utilizamos para gestionar los laboratorios a esa escala aprovechando el poder de Azure.
Este artículo se publica como parte de la iniciativa Applied Cloud Stories de Microsoft. Aquí tiene el enlace con más detalles sobre esta iniciativa.
Arquitectura de CloudLabs y tecnologías subyacentes
El siguiente diagrama muestra la arquitectura y el flujo de información en CloudLabs a un nivel general.
Arquitectura de alto nivel - Plataforma CloudLabs
CloudLabs se despliega utilizando servicios PaaS de Azure en toda la solución. Esto nos permite escalar para miles de despliegues sin tener que preocuparnos por la gestión de la infraestructura subyacente.
Autenticación
Utilizamos Azure AD B2C para la autenticación. El uso de Azure AD B2C nos permite ofrecer diversos mecanismos de autenticación, incluyendo Azure AD, LinkedIn, Microsoft Account (Live ID) y otras identidades.
Dado que nuestro enfoque es B2B, el uso de Azure AD B2C nos permite que las empresas que utilizan AzureAD como su proveedor de identidad usen el inicio de sesión único para acceder al portal de administración de CloudLabs. Por el momento, tenemos habilitada la autenticación de Azure AD y LinkedIn.
Portal de inicio de sesión B2C de CloudLabs
Alojamiento de aplicaciones
Aprovechamos diversas tecnologías PaaS de Azure para alojar los distintos componentes de la arquitectura de CloudLabs. El diagrama de arquitectura incluía los componentes de la solución utilizados a un nivel general; ahora echemos un vistazo a todos los servicios de Azure que estamos utilizando. Esto incluye:
- App Service para aplicaciones web
- Azure API Management para el alojamiento del servicio de API
- Azure SQL Database Elastic Pool para la base de datos de backend
- Azure Functions para aplicaciones bajo demanda y extensiones personalizadas
- Azure Storage Account para todo el contenido estático
- Azure Key Vault para almacenar todos los secretos y certificados
- Application Insights para el análisis de telemetría y el rendimiento general de la aplicación, así como para la depuración
- Azure Cognitive Search para todas las capacidades de búsqueda
- Traffic Manager para el balanceo de carga global del sitio
- Application Gateway WAF para la seguridad de las aplicaciones web.
- Azure DNS para alojar el DNS público
- Azure Service Bus para la comunicación entre aplicaciones y la mensajería.
- Azure Monitor para la supervisión y las alertas
- Azure SignalR para la comunicación en tiempo real
- Azure Synapse Analytics para el análisis de datos y el almacenamiento de datos.
- Azure Data Factory para la canalización de ingesta de datos para análisis.
- Azure Container Instances para ejecutar bajo demanda algunas de nuestras extensiones personalizadas.
Proceso de desarrollo y despliegue de CloudLabs.
Utilizamos Azure DevOps como nuestra plataforma de DevOps, con canalizaciones de pruebas y publicación totalmente automatizadas. El código fuente se almacena en múltiples Azure Repos.
Los despliegues se realizan primero en los entornos de desarrollo y control de calidad; tras las validaciones y pruebas correspondientes, se llevan a producción. Se ha creado una única canalización para gestionar la compilación y el lanzamiento en todos los entornos de forma escalonada.
La actualización del esquema de la base de datos se realiza mediante scripts y se despliega a través de las mismas Azure Pipelines. Actualmente seguimos metodologías de despliegue blue-green. Todos los despliegues de producción se aprueban manualmente, mientras que los despliegues de pruebas/control de calidad se automatizan al completarse una solicitud de extracción (pull request) en la rama master.
Seguridad
Confiamos en las siguientes capacidades de seguridad de Azure para mantener la seguridad del acceso y los datos de la plataforma CloudLabs.
- Seguridad de acceso: No almacenamos ninguna credencial de usuario en la plataforma; la autenticación se gestiona a través de Azure AD B2C, lo que nos permite proteger nuestras cuentas de administrador mediante funciones de seguridad de Azure AD Premium como Conditional Access, autenticación multifactor, etc.
- Control de acceso basado en roles: El acceso a la plataforma se ha diseñado con RBAC desde el principio, lo que nos permite proporcionar acceso únicamente según la necesidad de conocimiento.
- Seguridad de las aplicaciones: Todas las aplicaciones web y las aplicaciones de API se alojan en Azure App Service, con HTTPS obligatorio y TLS versión 1.2 aplicado. Nosotros
- Seguridad de la base de datos: Aprovechamos el cifrado de datos transparente de Azure SQL Database, el enmascaramiento dinámico de datos y otras diversas capacidades de seguridad para proteger nuestras bases de datos. El acceso de administrador a la base de datos se habilita siguiendo el principio de acceso JIT a través de AAD, lo que protege el acceso con protección MFA. Para diversos informes y vistas de datos, utilizamos la seguridad a nivel de fila de SQL para proteger el acceso a los datos.
- Azure Application Gateway WAF V2: Aprovechamos Azure Application Gateway WAF v2 en modo de detección para prevenir cualquier ataque proveniente de internet.
- Azure Security CenteryAzure Monitor: Aprovechamos Azure Security Center para supervisar la salud general de nuestro entorno desde el punto de vista de la seguridad, con alertas configuradas a través de Azure Monitor.
- Las cuentas de almacenamiento que alojan datos estáticos están protegidas con cifrado del lado del servidor y rotación periódica de las claves de acceso.
- Azure Key Vault se utiliza como un almacén seguro de credenciales, sin que se almacene ninguna información de acceso en los archivos de configuración.
Continuidad del negocio y recuperación ante desastres.
Los sistemas de CloudLabs se diseñan con la alta disponibilidad como requisito de diseño fundamental para cada componente. Utilizamos múltiples app services, instancias de API Management, SQL Elastic Pools y tecnologías similares en cada nivel, lo que garantiza que CloudLabs sea tolerante a fallos y tenga la capacidad de escalar verticalmente u horizontalmente en caso de picos de carga.
Todos los componentes de CloudLabs cuentan con despliegues redundantes en 2 regiones adicionales de Azure, con las bases de datos SQL replicadas en 3 regiones de Azure. Los puntos de conexión orientados al usuario final se publican a través de Traffic Manager para garantizar que, en caso de una interrupción, no haya impacto para los usuarios finales que acceden a las aplicaciones.
Automatización de los despliegues de laboratorios de infraestructura.
CloudLabs se integra con Microsoft Cloud a través de diversos SDK y API, específicamente las API de Azure ARM y la API de Microsoft Graph. Todos los despliegues en Azure se inician mediante API y se realiza un seguimiento a lo largo de todo su ciclo de vida.
Todo en CloudLabs se almacena en plantillas de definición de laboratorio, que constan de diversos métodos de despliegue, opciones de configuración y opciones de automatización. Algunas de ellas incluyen:
- ARM Templates
- PowerShell y scripts de CLI
- Python
- Selenium
- Extensiones de la plataforma
- Azure API
- Extensiones de Databricks
- Extensiones de Azure Machine Learning
- Extensiones de Synapse Analytics
La definición de laboratorio incluye diversas formas de reforzar la seguridad del entorno de laboratorio, incluyendo capacidades como Custom Azure Role, Azure Policy, con algunas de las configuraciones de seguridad avanzadas habilitadas por la plataforma.
Automatización de los despliegues de laboratorios basados en VM con Shared Image Gallery y ARM Templates
CloudLabs ofrece experiencias de laboratorio excepcionales para proporcionar experiencias de aprendizaje impactantes a nuestra audiencia. Uno de los requisitos clave para ello es garantizar que los entornos de laboratorio estén listos para usarse en el momento del registro, sin necesidad de configuración adicional. CloudLabs empaqueta todos los requisitos previos y las configuraciones de experiencia deseadas en las imágenes de las VM, que luego se utilizan para desplegar miles de entornos de laboratorio para muchos de nuestros clientes.
Utilizamos Azure Shared Image Gallery para almacenar dichas imágenes. Si bien es bastante sencillo configurar una Shared Image Gallery y utilizarla para desplegar VM, las cosas pueden complicarse considerablemente cuando hablamos de mantener cientos de imágenes con miles de despliegues cada mes.
Utilizamos una combinación de Azure DevOps, PowerShell, Shared Image Gallery, ARM templates y las capacidades nativas de CloudLabs para automatizar toda la infraestructura.
Automatización de Shared Image Gallery e imágenes de VM
Azure Pipelines (parte de Azure DevOps) se utiliza para automatizar el proceso de actualización y replicación de imágenes.
El flujo incluye lo siguiente:
- El administrador carga una nueva imagen VHD en la cuenta de almacenamiento definida o crea una imagen directamente en Azure.
- Azure DevOps detecta los cambios e identifica si ya existe una versión existente de la imagen en la Shared Image Gallery.
- En función del punto 2, Azure Pipelines crea una nueva versión de la imagen en la Shared Image Gallery o crea una nueva definición de imagen basada en las configuraciones proporcionadas con la imagen.
- La canalización replica la imagen en múltiples regiones de Azure según las configuraciones especificadas.
- El administrador utiliza plantillas ARM que hacen referencia a la Shared Image Gallery y actualiza la definición del laboratorio en el portal de administración de CloudLabs. Las plantillas se crean de tal forma que puedan utilizarse en distintas suscripciones y regiones de Azure. Al final de este artículo se comparte un ejemplo de la plantilla.
- A través de CloudLabs, los clientes pueden desplegar miles de estas instancias con solo un par de clics.
Actualmente estamos trabajando en la integración de Azure VM Image Builder en los escenarios de despliegue de laboratorios, para hacer que el proceso de creación y actualización de imágenes sea más fluido y personalizable. Estamos entusiasmados por mejorar la experiencia de despliegue con todo lo que VM Image Builder aporta.
Uso de la virtualización anidada en Azure para migraciones de infraestructura de laboratorio local
Tradicionalmente, la infraestructura de laboratorio se ha desplegado en infraestructura de virtualización local, ejecutando Hyper-V o una tecnología de hipervisor similar. El despliegue de laboratorio solía incluir un conjunto de VHD para las distintas VM del laboratorio, junto con un script de despliegue creado en PowerShell para poner en marcha esas VM. Estos scripts generalmente se ejecutaban durante horas y requerían una supervisión constante para garantizar que cualquier fallo se detectara y solucionara a tiempo. No era infrecuente que hubiera problemas de capacidad en los entornos de laboratorio, lo que solía llevar a que muchos asistentes compartieran las mismas VM de laboratorio. Estamos resolviendo estos desafíos y eliminando la posibilidad de una mala experiencia para los asistentes e instructores mediante el uso de las capacidades de virtualización anidada en Azure.
Con CloudLabs, ayudamos a los formadores a trasladar esas infraestructuras de laboratorio locales a Azure sin necesidad de reconstruir toda la topología y los scripts del laboratorio.
Las VM de Azure que ejecutan las series de VM DSv2 y ESv3 nos permiten ejecutar Hyper-V dentro de la VM y utilizar la virtualización completa para alojar VM dentro de la VM de Azure. Existen varias topologías de red disponibles, como el uso de NAT en el host Hyper-V para habilitar el acceso a internet de las VM, o el uso de RRAS en Hyper-V para conectar las VM invitadas con otros recursos que se ejecutan en la red virtual de Azure. Dependiendo de la topología del laboratorio, capturamos la configuración de red necesaria y la automatizamos mediante Custom Script Extensions.
Estos hosts se convierten después en imágenes y se despliegan con CloudLabs miles de veces de forma automatizada.
Cómo utilizan los clientes CloudLabs
Los clientes utilizan CloudLabs para desplegar miles de instancias de laboratorio cada mes, con un ciclo de vida de unas pocas horas a unos pocos meses. Veamos algunas de las estadísticas que tenemos hasta ahora.
- 400000+ instancias de laboratorio desplegadas
- 28920+ asistentes formados
- 5000+ eventos
Si bien CloudLabs puede utilizarse para automatizar cualquier tipo de despliegue de infraestructura en la nube, hemos visto que nuestros clientes mejoran la experiencia de todos en los siguientes casos de uso.
- Formación interna/externa
- Habilitación de partners
- Habilitación de ventas
- Orquestación de despliegues en la nube
- Laboratorios virtuales
- Aprendizaje a ritmo propio
- Preparación de certificaciones
- Hackathons
- POCs
- Demostraciones de ventas
Recursos
- Plantilla ARM de ejemplo utilizando Shared Image Gallery - Acceda ahora
- Cuenta de GitHub de Spektra Systems, que contiene numerosos repositorios con nuestras muestras de código, muestras de laboratorios, guías, etc. - Acceda ahora
Gracias. Seguiremos actualizando este artículo a medida que realicemos cambios en la plataforma y sigamos innovando con Azure.
Autor- Amit Malik
Ready to See CloudLabs in Action?
Turn your ideas into hands-on experiences. Tell us what you're looking for, and team CloudLabs will help you find the right solution.




