Qualquer empresa de desenvolvimento de software precisa de ambientes de teste próximos ao ambiente de produção. Isto é especialmente verdade para o software in a box, que possui um longo ciclo de lançamento.
Muitos problemas de construção de ambientes de teste são resolvidos pela sua colocação na nuvem. Falaremos sobre opções de teste em nossa plataforma
Mail.Ru Cloud Solutions (MCS) baseada em
nuvem . Mas parte do que dizemos é verdade para qualquer nuvem.
Dificuldades na configuração de um ambiente de teste
Antes de falarmos sobre os recursos dos ambientes de teste na nuvem, falaremos sobre as dificuldades que as empresas enfrentam ao testar software.
Diferentes ramos Git - ambientes diferentes
A maioria das empresas envolvidas no desenvolvimento de software usa sistemas de controle de versão. O mais comum é o
Git , que é usado por 87% dos desenvolvedores (pesquisa RhodeCode
no Twitter ).
A melhor prática no Git são os chamados feature-branches, quando um ramo separado é alocado para cada nova funcionalidade no repositório. Essa abordagem permite que os desenvolvedores não "empurram os cotovelos" e torna as alterações mais independentes, mas requer a implantação de muitos ambientes dedicados para testar recursos individuais.
Subutilização de recursos de computação
25% dos servidores físicos são zumbis que consomem eletricidade, mas não fazem nada de útil. E muitos especialistas em TI
não podem dizer o que 15-30% dos servidores instalados em sua empresa estão fazendo.
Então aqui. O hardware local para ambientes de teste aqui não é diferente de nenhum outro e, como regra, mal disposto. E não pode ser de outra maneira. Ao comprar uma frota de equipamentos de servidor, você é reatribuído por recursos em caso de aumento no consumo e no número de ambientes de teste. Como resultado, os ambientes de teste ficam ociosos à noite e nos fins de semana "apenas por precaução", e você apenas paga pela eletricidade e resfriamento consumidos.
A simples aplicação de virtualização em sua nuvem privada não resolve o problema de escalabilidade inflexível e subutilização de equipamentos.
Configuração de dificuldade
Os ambientes de teste e desenvolvimento não são apenas algumas máquinas virtuais. Normalmente, inclui um servidor de aplicativos, um servidor de banco de dados, além de servidores de fila de mensagens e servidores de cache.
É difícil para os desenvolvedores criar e configurar essa infraestrutura por conta própria; se eles não tiverem o conhecimento adequado, isso poderá levar vários dias. Para administradores experientes, isso é fácil, mas geralmente não é interessante. Além disso, a burocracia é imposta e o processo de alocação de recursos para criar um ambiente de teste pode levar muito tempo.
Outro problema é que um administrador de sistema em tempo integral geralmente não possui experiência na implantação de ambientes de teste específicos e a empresa é forçada a atrair consultores caros de fora. Um exemplo é uma sandbox para big data com base no Hadoop, Spark, HDFS ou Airflow. A implantação desse ambiente leva pelo menos uma semana de um especialista qualificado na área BigData e pelo menos um mês de um administrador de sistema comum. Uma história semelhante com os clusters do Kubernetes: a criação de um cluster de teste próximo à configuração de produção leva pelo menos vários dias.
Como resultado, a empresa é forçada a recorrer a terceiros - para atrair consultores. No entanto,
encontrar especialistas em big data é bastante difícil , e os administradores desses sistemas podem ser contados quase nos dedos. Sim, um engenheiro de DevOps pode lidar com todas as tarefas de implantação de ambientes de teste, mas nem toda empresa possui, e encontrar um bom especialista nesse campo não é mais fácil do que um especialista em BigData. De fato, em 2016, o site de busca de empregos Indeed.com
observou que as empresas procuravam um engenheiro de DevOps por mais tempo do que qualquer outro especialista.
Como a nuvem resolve esses problemas
Segundo faturamento apenas para recursos consumidos e dimensionamento instantâneo
A vantagem mais óbvia dos serviços em nuvem é a capacidade de alugar uma infraestrutura em nuvem de qualquer configuração (um servidor ou um cluster inteiro) por qualquer período. Na
plataforma Mail.Ru Cloud Solutions (MCS), o faturamento é por segundo - você só precisa pagar pelos recursos de computação que foram realmente usados.
Diferentemente do bare metal, da nuvem privada e da maioria dos provedores de nuvem da Rússia, o MCS não cobra recursos por máquinas virtuais paradas (RAM, CPU): você só precisa pagar pelo espaço em disco usado. Por exemplo, uma configuração de teste de 20 CPUs, 40 GB de RAM e HD de 1 TB custa 24.800 ₽ / mês e espaço em disco custa 7.000 ₽ / mês. Por exemplo, se você usar ferramentas de automação para parar esse ambiente às 21:00 e implantar às 9:00, pagará 15 900 ₽ - uma vez e meia menos do que com um aluguel 24 horas por dia.
Em nossa experiência, a economia total dos testes na nuvem pode chegar a 60 a 70%, em comparação com os testes na infraestrutura local.
A capacidade de escalar instantaneamente recursos na nuvem para cima e para baixo permite implantar rapidamente ambientes apenas no momento certo e utilizar as capacidades concedidas em quase 100%. O tempo de implantação do ambiente de teste é reduzido em vários dias ou meses, em comparação com o local.
Recursos alocados pelos próprios desenvolvedores
Usando portais de autoatendimento, os desenvolvedores podem configurar ambientes de teste na nuvem e alocar recursos para eles sem entrar em contato com os administradores. Mesmo essa ação simples pode reduzir o tempo de comercialização de um produto em várias semanas.
API para criar e destruir automaticamente ambientes de teste
A nuvem permite criar ambientes de curta duração em um modelo
just-in-time .
Usando a API REST e a CLI, é possível implantar ambientes de teste em massa, parar, atualizar e excluí-los. Dessa forma, você pode configurar o ciclo de vida completo para ambientes de teste e manter centenas de ambientes saudáveis. Graças ao dimensionamento instantâneo da nuvem e ao faturamento segundo a segundo, é alcançada flexibilidade e custos operacionais reduzidos.
Aqui está um exemplo de nossa experiência.A empresa desenvolve software para 150 bancos. Cada banco tem sua própria agência no Git com funções adicionais integradas na solução in a box. A empresa é forçada a criar dois ou três ambientes de teste de trabalho paralelo para cada cliente: testando com a versão atual, testando com a nova versão, verificando atualizações do atual para o novo. No total, para 150 clientes, é necessário implantar e manter até 450 ambientes de teste apenas ao mesmo tempo - isso não leva em consideração os ambientes de desenvolvimento.
No modo de nuvem privada (eles usam a virtualização em seu próprio data center), trabalhar com essa carga é quase impossível, pois o hardware disponível geralmente não é suficiente para a operação paralela de todos os ambientes. Como resultado, os desenvolvedores aguardam a sua vez de testar e não podem verificar rapidamente a operação da nova versão do aplicativo.
A implantação e o gerenciamento automatizados de ambientes de teste na nuvem pública eliminam a limitação na velocidade de teste e, finalmente, reduzem o tempo de colocação no mercado. Além disso, o gerenciamento de custos ao alugar recursos em nuvem é mais previsível e os custos são mais baixos do que quando você usa seu próprio equipamento especializado para bancadas de teste.
Outra vantagem dos ambientes de teste na nuvem é a integração com as ferramentas de CI / CD. Essas soluções (por exemplo, Jenkins) contêm plug-ins que permitem criar dinamicamente ambientes de teste na nuvem MCS durante a construção. Você pode ativar um ambiente de teste antes de executar testes funcionais ou de regressão. Se os testes forem bem-sucedidos, o ambiente entrará em colapso automaticamente, se algo estiver errado - o ambiente será salvo para que os desenvolvedores possam se reconectar e entender o motivo da regressão.
Blocos de construção pré-fabricados para ambientes de teste
Implante rapidamente o ambiente de teste na plataforma Mail.Ru Cloud Solutions
O PaaS ajuda, por exemplo,
contêineres e bancos de dados
Kubernetes na nuvem. A Kubernetes está desenvolvendo um catálogo de serviços com centenas de aplicativos.
No catálogo, é possível implantar clusters ActiveMQ, RabbitMQ, Kafka, sistemas de monitoramento e análise de log, vários CMS e bancos de dados em alguns minutos. Diferente do popular
Docker Hub , que contém apenas modelos de aplicativos personalizados, o
Catálogo de Serviços Kubernetes possui modelos de alto nível que simplificam a integração. A partir dos modelos, é possível implantar componentes de aplicativos pré-configurados (fila de mensagens, descoberta de serviços, bancos de dados, servidores de aplicativos, ferramentas de CI / CD, servidores de cache, ferramentas de blockchain e muito mais), sem a necessidade de configurar as máquinas virtuais nas quais eles estão implantados.
Aplicativos disponíveis no mercado Kubeapps.Caixas de proteção para Big Data
No MCS, você pode implantar ambientes de teste para aplicativos de big data. Usando o
serviço PaaS Big Data, você pode criar clusters do Hadoop, Spark, HBase e Airflow. O processo de implantação é totalmente automatizado, economizando semanas em comparação com a autoconfiguração.
Uma vantagem adicional aqui é o faturamento de segundo a segundo e o dimensionamento instantâneo. A capacidade de criar ambientes de teste extensíveis por curtos períodos reduz os custos da empresa em manter uma infraestrutura de TI analítica. A economia pode chegar a 80% em comparação com o local.
Integração com infraestrutura como código
Diferentemente das soluções proprietárias baseadas no VMWare, a plataforma de nuvem MCS é construída com base no software aberto OpenStack, que possui total integração com várias ferramentas: Terraform, Ansible, Puppet, Chef.
O Terraform é construído no espírito de Infraestrutura como Código (IaC), quando o processo de configuração da infraestrutura é organizado como uma codificação e mais familiar aos desenvolvedores. O Terraform é difícil de usar em uma nuvem privada porque não possui total integração com o VMware. Na nuvem do MCS, as empresas podem usar exemplos prontos para trabalhar com o Terraform (eles estão
neste repositório do GitHub ).
Criando um ambiente de teste usando o Terraform.Lembra de mim
- Os testes na nuvem estão se tornando uma prática natural no setor de TI e já estão sendo aplicados por uma grande variedade de organizações: de universidades estaduais a grandes empresas de TI .
- A criação de ambientes de teste na nuvem ajuda a economizar dinheiro devido à possibilidade de dimensionamento e automação instantâneos via APIs, que fornecem quase 100% de utilização da infraestrutura alugada.
- Serviços adicionais na plataforma de nuvem e modelos em contêineres Kuberntetes são blocos de construção prontos que não precisam ser configurados.
- Serviços difíceis de configurar, como ferramentas de processamento de Big Data, são mais fáceis de alugar na nuvem como modelos pré-configurados. Você economizará semanas não mergulhando nas configurações.
- O MCS é construído no OpenStack e totalmente integrado ao Terraform e outras ferramentas de DevOps.
Todas essas ferramentas podem ser experimentadas gratuitamente na plataforma Mail.Ru Cloud Solutions. Até o final de novembro,
usando esse link com o código promocional ILOVEHABR, você pode adicionar 1000 rublos à sua conta e testar-teste-teste.