Arquitetura da CloudLabs e automação de implantações de infraestrutura: um mergulho técnico profundo
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.
A CloudLabs é uma plataforma de laboratórios práticos utilizada para planejar, provisionar e gerenciar o ciclo de vida de ambientes de laboratório para diversos cenários, incluindo treinamento técnico, workshops, conferências do setor, POCs, demonstrações, etc. A CloudLabs é utilizada por empresas de tecnologia e instrutores em todo o mundo, em uma escala na qual provisionamos milhares de ambientes de laboratório todos os meses.
Neste artigo, vamos nos aprofundar nas tecnologias subjacentes que utilizamos para gerenciar os laboratórios nessa escala usando o poder do Azure.
Este artigo é publicado como parte da iniciativa Applied Cloud Stories da Microsoft. Aqui está o link com mais detalhes sobre esta iniciativa.
Arquitetura da CloudLabs e tecnologias subjacentes
O diagrama a seguir mostra a arquitetura e o fluxo de informações na CloudLabs em um nível geral.
Arquitetura de alto nível - Plataforma CloudLabs
A CloudLabs é implantada usando serviços PaaS do Azure em toda a solução. Isso nos permite escalar para milhares de implantações sem nos preocuparmos com o gerenciamento da infraestrutura subjacente.
Autenticação
Utilizamos o Azure AD B2C para autenticação. O uso do Azure AD B2C nos permite oferecer diversos mecanismos de autenticação, incluindo Azure AD, LinkedIn, Microsoft Account (Live ID) e outras identidades.
Como nosso foco é B2B, o uso do Azure AD B2C permite que empresas que utilizam o AzureAD como provedor de identidade usem o logon único (SSO) para acessar o portal de administração da CloudLabs. No momento, temos a autenticação do Azure AD e do LinkedIn habilitada.
Portal de Login B2C da CloudLabs
Hospedagem de aplicações
Aproveitamos diversas tecnologias PaaS do Azure para hospedar os vários componentes da arquitetura da CloudLabs. O diagrama de arquitetura incluiu os componentes da solução utilizados em um nível geral; agora vamos dar uma olhada em todos os serviços do Azure que estamos utilizando. Isso inclui:
- App Service para Web Apps
- Azure API Management para hospedagem do serviço de API
- Azure SQL Database Elastic Pool para o banco de dados de backend
- Azure Functions para aplicações sob demanda e extensões personalizadas
- Azure Storage Account para todo o conteúdo estático
- Azure Key Vault para armazenar todos os segredos e certificados
- Application Insights para análise de telemetria e desempenho geral da aplicação, além de depuração
- Azure Cognitive Search para todas as capacidades de busca
- Traffic Manager para balanceamento de carga global do site
- Application Gateway WAF para segurança de aplicações web.
- Azure DNS para hospedar o DNS público
- Azure Service Bus para comunicação entre aplicações e mensageria.
- Azure Monitor para monitoramento e alertas
- Azure SignalR para comunicação em tempo real
- Azure Synapse Analytics para análise de dados e data warehousing.
- Azure Data Factory para o pipeline de ingestão de dados voltado à análise.
- Azure Container Instances para executar sob demanda algumas de nossas extensões personalizadas.
Processo de desenvolvimento e implantação da CloudLabs.
Utilizamos o Azure DevOps como nossa plataforma de DevOps, com pipelines de testes e entrega totalmente automatizados. O código-fonte é armazenado em múltiplos Azure Repos.
As implantações são realizadas primeiro nos ambientes de desenvolvimento e QA; após validações e testes minuciosos, elas são levadas para produção. Um único pipeline foi criado para gerenciar a compilação e o lançamento em todos os ambientes de forma escalonada.
A atualização do esquema do banco de dados é realizada por meio de scripts e implantada pelos mesmos Azure Pipelines. Atualmente seguimos metodologias de implantação blue-green. Todas as implantações em produção são aprovadas manualmente, enquanto as implantações de teste/QA são automatizadas na conclusão de um pull request na branch master.
Segurança
Contamos com as seguintes capacidades de segurança do Azure para manter a segurança de acesso e dados da plataforma CloudLabs.
- Segurança de acesso: Não armazenamos nenhuma credencial de usuário na plataforma; a autenticação é gerenciada por meio do Azure AD B2C, o que nos permite proteger nossas contas de administrador por meio de recursos de segurança do Azure AD Premium, como Conditional Access, autenticação multifator, etc.
- Controle de acesso baseado em funções: O acesso à plataforma é projetado com RBAC desde a base, permitindo que forneçamos acesso apenas com base na necessidade de conhecimento.
- Segurança de aplicações: Todos os webapps e aplicações de API são hospedados no Azure App Service com HTTPS obrigatório e TLS versão 1.2 aplicado. Nós
- Segurança do banco de dados: Aproveitamos a criptografia transparente de dados do Azure SQL Database, o mascaramento dinâmico de dados e diversas outras capacidades de segurança para proteger nossos bancos de dados. O acesso de administrador ao banco de dados é habilitado seguindo o princípio de acesso JIT via AAD, o que protege o acesso com proteção MFA. Para diversos relatórios e visualizações de dados, utilizamos SQL Row-level security para proteger o acesso aos dados.
- Azure Application Gateway WAF V2: Aproveitamos o Azure Application Gateway WAF v2 no modo de detecção para prevenir qualquer ataque vindo da internet.
- Azure Security CentereAzure Monitor: Aproveitamos o Azure Security Center para monitorar a saúde geral do nosso ambiente do ponto de vista da segurança, com alertas configurados por meio do Azure Monitor.
- As contas de armazenamento que hospedam dados estáticos são protegidas com criptografia do lado do servidor e rotação regular das chaves de acesso.
- O Azure Key Vault é utilizado como um repositório seguro de credenciais, sem que nenhuma informação de acesso seja armazenada em arquivos de configuração.
Continuidade de negócios e recuperação de desastres.
Os sistemas da CloudLabs são projetados com alta disponibilidade como requisito fundamental de design para cada componente. Utilizamos múltiplos app services, instâncias de API Management, SQL Elastic Pools e tecnologias semelhantes em cada nível, o que garante que a CloudLabs seja tolerante a falhas, com capacidade de escalar verticalmente ou horizontalmente em caso de picos de carga.
Todos os componentes da CloudLabs possuem implantações redundantes em 2 regiões adicionais do Azure, com os bancos de dados SQL sendo replicados em 3 regiões do Azure. Os endpoints voltados para o usuário final são publicados por meio do Traffic Manager para garantir que, em caso de uma interrupção, não haja impacto para os usuários finais que acessam as aplicações.
Automação das implantações de laboratórios de infraestrutura.
A CloudLabs se integra à Microsoft Cloud por meio de diversos SDKs e APIs, especificamente as APIs do Azure ARM e a API do Microsoft Graph. Todas as implantações no Azure são iniciadas via API e acompanhadas ao longo de seu ciclo de vida.
Tudo na CloudLabs é armazenado em modelos de definição de laboratório, que consistem em diversos métodos de implantação, opções de configuração e opções de automação. Alguns deles incluem:
- ARM Templates
- Scripts de PowerShell e CLI
- Python
- Selenium
- Extensões de plataforma
- Azure API
- Extensões do Databricks
- Extensões do Azure Machine Learning
- Extensões do Synapse Analytics
A definição de laboratório inclui diversas formas de reforçar a segurança do ambiente de laboratório, incluindo capacidades como Custom Azure Role e Azure Policy, com algumas das configurações de segurança avançadas habilitadas pela plataforma.
Automatizando implantações de laboratórios baseados em VM com Shared Image Gallery e ARM Templates
A CloudLabs oferece experiências de laboratório excepcionais para proporcionar experiências de aprendizado impactantes ao nosso público. Um dos requisitos-chave para isso é garantir que os ambientes de laboratório estejam prontos para uso no momento do cadastro, sem necessidade de configuração adicional. A CloudLabs empacota todos os pré-requisitos e configurações de experiência desejadas nas imagens das VMs, que são então utilizadas para implantar milhares de ambientes de laboratório para muitos de nossos clientes.
Utilizamos o Azure Shared Image Gallery para armazenar essas imagens. Embora seja bastante fácil configurar uma Shared Image Gallery e utilizá-la para implantar VMs, as coisas podem realmente sair do controle quando falamos em manter centenas de imagens com milhares de implantações todos os meses.
Utilizamos uma combinação de Azure DevOps, PowerShell, Shared Image Gallery, ARM templates e as capacidades nativas da CloudLabs para automatizar toda a infraestrutura.
Automação da Shared Image Gallery e das imagens de VM
O Azure Pipelines (parte do Azure DevOps) é utilizado para automatizar o processo de atualização e replicação de imagens.
O fluxo inclui:
- O administrador carrega uma nova imagem VHD para a conta de armazenamento definida ou cria uma imagem diretamente no Azure.
- O Azure DevOps detecta as alterações e identifica se já existe uma versão da imagem na Shared Image Gallery.
- Com base no item 2, o Azure Pipelines cria uma nova versão da imagem na Shared Image Gallery ou cria uma nova definição de imagem com base nas configurações fornecidas com a imagem.
- O pipeline replica a imagem para múltiplas regiões do Azure de acordo com as configurações especificadas.
- O administrador utiliza modelos ARM que fazem referência à Shared Image Gallery e atualiza a definição de laboratório no portal de administração da CloudLabs. Os modelos são construídos de forma a poderem ser utilizados entre assinaturas e regiões do Azure. Um exemplo do modelo é compartilhado ao final deste artigo.
- Por meio da CloudLabs, os clientes podem implantar milhares dessas instâncias com apenas alguns cliques.
Atualmente estamos trabalhando na integração do Azure VM Image Builder aos cenários de implantação de laboratórios, para tornar o processo de criação e atualização de imagens mais fluido e personalizável. Estamos animados para aprimorar a experiência de implantação com tudo o que o VM Image Builder traz.
Usando virtualização aninhada no Azure para migrações de infraestrutura de laboratório on-premises
Tradicionalmente, a infraestrutura de laboratório tem sido implantada em infraestrutura de virtualização on-premises, executando Hyper-V ou tecnologia de hipervisor semelhante. A implantação de laboratório costumava incluir um conjunto de VHDs para as diversas VMs no laboratório, junto com um script de implantação construído em PowerShell para inicializar essas VMs. Esses scripts geralmente rodavam por horas e precisavam ser constantemente monitorados para garantir que quaisquer falhas fossem detectadas e corrigidas a tempo. Não era incomum haver problemas de capacidade em ambientes de laboratório, o que normalmente levava vários participantes a compartilhar as mesmas VMs de laboratório. Estamos resolvendo esses desafios e eliminando a possibilidade de uma má experiência para participantes e instrutores ao usar as capacidades de virtualização aninhada no Azure.
Com a CloudLabs, ajudamos os instrutores a migrar essas infraestruturas de laboratório on-premises para o Azure sem precisar reconstruir toda a topologia e os scripts do laboratório.
As VMs do Azure que executam as séries DSv2 e ESv3 nos permitem rodar o Hyper-V dentro da VM e usar a virtualização completa para hospedar VMs dentro da VM do Azure. Existem diversas topologias de rede disponíveis, como o uso de NAT no host Hyper-V para permitir acesso à internet às VMs, ou o uso de RRAS no Hyper-V para conectar as VMs convidadas a outros recursos em execução na rede virtual do Azure. Dependendo da topologia do laboratório, capturamos a configuração de rede necessária e a automatizamos usando Custom Script Extensions.
Esses hosts são então convertidos em imagens e implantados com a CloudLabs milhares de vezes de forma automatizada.
Como os clientes utilizam a CloudLabs
Os clientes utilizam a CloudLabs para implantar milhares de instâncias de laboratório todos os meses, com um ciclo de vida de algumas horas a alguns meses. Vamos ver algumas das estatísticas que temos até o momento.
- 400000+ instâncias de laboratório implantadas
- 28920+ participantes treinados
- 5000+ eventos
Embora a CloudLabs possa ser utilizada para automatizar qualquer tipo de implantação de infraestrutura em nuvem, observamos que nossos clientes aprimoram a experiência de todos nos seguintes casos de uso.
- Treinamento interno/externo
- Capacitação de parceiros
- Capacitação de vendas
- Orquestração de implantações em nuvem
- Laboratórios virtuais
- Aprendizado no próprio ritmo
- Preparação para certificações
- Hackathons
- POCs
- Demonstrações de vendas
Recursos
- Modelo ARM de exemplo utilizando Shared Image Gallery - Acesse agora
- Conta do GitHub da Spektra Systems, contendo diversos repositórios com nossas amostras de código, exemplos de laboratórios, guias, etc. - Acesse agora
Obrigado. Continuaremos atualizando este artigo à medida que fizermos alterações na plataforma e seguirmos inovando com o 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.




