Nesta semana na Lambda3 fiz um brown bag sobre Azure DevTest Labs, recurso do Microsoft Azure que foi lançado oficialmente na semana passada.

Do que se trata? Bem, se hoje você precisa implorar “pelamordedeus” na sua empresa para conseguir uma máquina, VM, servidor ou algo que o valha, certamente vai querer saber o que o DevTest Labs tem a oferecer.

Como dá para imaginar pelo nome da ferramenta e pelo teaser do parágrafo anterior, o Azure DevTest Labs (Azure DTL) é uma ferramenta para gestão e provisionamento de ambientes “não-produtivos” – tais como máquinas de desenvolvedores e testadores, bem como servidores para os ambientes de desenvolvimento, teste integrado e homologação. Na descrição da Microsoft:

Os desenvolvedores e testadores estão tentando resolver os atrasos na criação e gerenciamento de seus ambientes indo para a nuvem. O Azure resolve o problema de atrasos de ambiente e permite autoatendimento dentro de uma nova estrutura com boa relação custo-benefício. No entanto, os desenvolvedores e testadores ainda precisam gastar um tempo considerável configurando seus ambientes de autoatendimento. Além disso, os tomadores de decisão não estão certos sobre como utilizar a nuvem para maximizar suas economias sem acrescentar muita sobrecarga de processo.

Os Laboratórios de Desenvolvimento/Teste do Azure são um serviço que ajuda os desenvolvedores e testadores a rapidamente criar ambientes no Azure, minimizando o desperdício e o controle de custos. Você pode testar a versão mais recente do seu aplicativo, provisionamento ambientes Windows e Linux rapidamente usando modelos reutilizáveis e artefatos. Integre facilmente seu pipeline de implantação dos Laboratórios de Teste/Desenvolvimento para provisionar ambientes sob demanda. Dimensione seu teste de carga provisionando vários agentes de teste e crie ambientes previamente provisionados para treinamento e demonstrações.

O Azure DTL foi concebido em torno de quatro grandes pilares, que representam problemas que acometem boa parte dos times de desenvolvimento quando o assunto é provisionamento de ambientes:

  • Infraestrutura self-service mas sem preocupação;
  • Provisionamento rápido;
  • Crie uma vez e use em todo lugar, por todo mundo;
  • Integre com as ferramentas que você já usa.

Infraestrutura self-service mas sem preocupação

Devs e testers adorariam ter autonomia para provisionar seus próprios ambientes. Já o time de infraestrutura não considera nem sequer conversar a respeito, já que isso normalmente implicaria em:

  1. Máquinas virtuais sendo criadas fora do padrão;
  2. Descontrole nos gastos com nuvem por conta de VMs sendo criadas a torto e a direito, sem controle nenhum;
  3. VMs mantidas ligadas sem necessidade;
  4. Dificuldade de manutenção e acompanhamento do ambiente.

O Azure DTL oferece a possibilidade de se criar políticas para a definição de cotas e limites de uso, de modo que os desenvolvedores possam criar suas VMs sem que isso cause um rombo no orçamento da área no fim do mês.

O time de infra pode definir, por exemplo, a quantidade máxima (e o tamanho) das máquinas virtuais criadas por cada usuário, bem como limitar os sistemas operacionais (as “imagens-base”) que podem ser usadas.

Tela de configuração de tamanhos de VMs
Tela de configuração de tamanhos de VMs (clique para ampliar)

Uma outra coisa muito bacana é poder definir ligamento/desligamento automático para as VMs. Ou seja: Você pode, por exemplo, programar as VMs do seu ambiente de testes integrados para ligar automaticamente às oito da manhã e desligar às sete da noite. Sweet! Alegre

Tela de configuração de desligamento automático

Tela de configuração de desligamento automático (clique para ampliar)

Ah, por último mas não menos importante: Relatórios com projeção de custos ajudam a acompanhar os gastos, ajudando o time a se educar e definir como usar melhor os recursos à sua disposição.

Relatório de projeção de gastos
Relatório de projeção de gastos (clique para ampliar)

Provisionamento rápido

Criar VMs pode ser um processo bem tedioso. Isso porque não basta criar a VM. Você deve instalar tudo o que vai precisar usar dentro dela! E se tiver que fazer isso mais de uma vez, então? Pior ainda!

O DevTest Labs acelera o processo de criação de VMs ao simplificar a criação de modelos de máquinas virtuais. Esses modelos poder ser criados usados duas estratégias distintas: Fórmulas e Imagens Personalizadas.

Fórmulas

As fórmulas são como “receitas de bolo” para a criação de VMs. Só que, diferente das receitas de bolo tradicionais, que são apenas uma lista de passos que precisam ser executados manualmente, as fórmulas são automáticas e permitem criar VMs de maneira rápida e consistente. Numa fórmula é possível definir:

  1. A imagem-base (qualquer uma das imagens de máquina virtual disponíveis no Azure Marketplace);
  2. O tamanho da VM;
  3. As configurações de rede (rede virtual, a subrede e IP público);
  4. Os artefatos (ferramentas e/ou configurações que serão automaticamente aplicados pós-instalação).
Exemplo de criação de uma fórmula baseada em Windows Server 2012 R2, com Chrome e Sublime Text pré-instalados
Exemplo de criação de uma fórmula baseada em Windows Server 2012 R2, com Chrome e Sublime Text pré-instalados (clique para ampliar)

Imagens personalizadas

Crie sua máquina virtual, instale tudo o que você precisa nela e depois salve-a como uma imagem personalizada (“custom image”). Se for uma máquina Windows, ele automatiza até mesmo o processo de SysPrep!

Criando uma imagem personalizada a partir de uma máquina virtual
Criando uma imagem personalizada a partir de uma máquina virtual (clique para ampliar)

Crie uma vez e use em todo lugar, por todo mundo

Tudo aquilo que você cria num laboratório – máquinas virtuais, modelos de VMs, artefatos e outros – pode ser exportado como um modelo do Azure Resource Manager (“ARM Template”), o que permite que você recrie esses mesmos objetos em outros laboratórios. E como os artefatos são mantidos sob controle de versão, é muito fácil distribuir entre os diversos times da empresa que podem precisar criar ambientes com configurações similares.

Tela de configuração de um repositório de artefatos (conjunto de ARM Templates) baseado em um repositório Git remoto
Tela de configuração de um repositório de artefatos (conjunto de ARM Templates) baseado em um repositório Git remoto (clique para ampliar)

Integre com as ferramentas que você já usa

O Azure DTL oferece plug-ins para várias ferramentas de automação de build e release, bem como uma API e uma ferramenta de linha de comando.

A integração com o serviço de automação de Build e Release do TFS/VSTS, por exemplo, permite provisionar VMs como parte de nosso processo de build. Já pensou poder criar um build noturno que não apenas compila sua aplicação, mas já provisiona as VMs, faz o deployment da aplicação e dos testes automatizados de aceitação, roda os testes e ao final apaga as VMs?

Exemplo de uma definição de build noturno com provisionamento automático de ambientes
Exemplo de uma definição de build noturno com provisionamento automático de ambientes (clique para ampliar)

Mas só VM IaaS?

Sim, por enquanto só é possível provisionar VMs IaaS. Se você está usando PaaS (Azure Web Apps, por exemplo), então o DTL ainda não resolve todos os seus problemas. Mas o suporte a recursos PaaS está no roadmap da Microsoft – fique de olho nas novidades por vir!

Conclusão

O Azure DTL tem muito a oferecer – e o melhor, é de graça! O serviço não tem nenhum custo (além, é lógico, o das VMs provisionadas nos laboratórios). Então, não hesite – experimente e nos conte nos comentários o que você achou!

Ah, antes de encerrar, um pequeno parêntese: você tem o hábito de fazer brown bags (pequenas sessões de estudo na hora do almoço, onde cada um leva sua comida e alguém apresenta um tema de seu interesse) em sua empresa?

Não?! Pois devia! Nossa experiência com os brown bags tem sido bem rica. Compartilhe conosco suas experiências: como você e seu time fazem para se manterem atualizados?

Um abraço,
Igor

(Cross-post de http://www.tshooter.com.br/2016/06/02/azure-devtest-labs-legal-pra-caramba/)

Igor Abade

Igor Abade V. Leite ([email protected]) é Microsoft MVP (Most Valuable Professional) de Visual Studio ALM desde 2006. Palestrante em diversos eventos da comunidade de desenvolvimento de software (TechEd Brasil, The Developers’ Conference, DevOps Summit Brasil, Agile Brazil, Visual Studio Summit, QCON e outros), é também autor de artigos em revistas e sites como o MSDN Brasil. Desde março de 2011 é um dos sócios da Lambda3, uma consultoria especializada em ALM, desenvolvimento de software e treinamentos. Siga-o no Twitter @igorabade.