Cloud Computing

24 mar, 2017

Mantendo a qualidade da configuração mesmo em ambientes com crescimento permanente

Publicidade

A antiga tendência que a nuvem de serviços possuía tornou-se realidade. Estamos na nuvem. Se você está lendo qualquer texto em um website ou rede social, tenha a certeza de que aquele conjunto de palavras está hospedado em uma camada abstrata de discos virtuais e será dificilmente legível se o disco físico for acessado diretamente.

O crescimento vertical da Infraestrutura está caindo por terra, o que significa que cada vez mais temos de nos adequar às novas tecnologias e, como se já não bastasse toda a concorrência que um serviço impõe no mercado, há de se prover – em todos os casos – uma base tecnológica forte que permita uma rápida expansão e também uma rápida redução. Provavelmente, as duas operações ocorrerão em sequência, e a qualidade do hardware influencia substancialmente na tarefa.

Agora está tudo certo: um investimento absurdo foi feito e toda a infraestrutura física está moderna ou assumiu-se terceirizar e aproveitar-se de um serviço de nuvem altamente disponível já com boa reputação no mercado. Excelentes decisões. Contudo, não se deve parar de tomar excelentes decisões aí. O investimento continua e, por mais óbvio que pareça, na mesma proporção.

Suponha o seguinte cenário: você tem um serviço de mineração de dados sob demanda, automatizado, que analisa sentimentos colhidos em indicadores populares e devolve aos seus clientes o que fazer nos próximos dias, semanas ou meses. Um dos seus clientes é um grande e-commerce que deseja tomar algumas decisões para uma grande liquidação de fim de estação.  Este cliente solicita a você uma maior variedade no processamento, com mais indicadores e resultados mais rápidos, porque o fim da estação se aproxima e ele ainda precisará dos dados para levar em consideração na tomada de decisão.

No exemplo acima, você possui o know-how para toda a operação, possui um time, possui experiência. Você precisa apenas aumentar os recursos de processamento do seu serviço para que o resultado seja entregue no prazo para o seu cliente. Se uma Infraestrutura estática está implementada, o que fazer? Comprar mais pentes de memória RAM na loja de informática mais próxima?

A solução a que me refiro pode ser bem comum na área, porém a argumentação de um empresário é sempre mais pesada. Ele pode não entender a economia de custos em ter uma Infraestrutura preparada para tal solução. Refiro-me ao conjunto listado abaixo:

  • Aplicação escalável
  • Banco de Dados altamente disponível
  • Sistema central de gerência de alta disponibilidade

Primeiro ponto a ser fortemente destacado aos Gerentes de TI: permita que as equipes que lidera possam garantir, além da excelência técnica no desenvolvimento, a alta disponibilidade. Ou seja, é necessário uma resposta positiva para a pergunta “Se existirem duas aplicações desta rodando no cenário, vai fluir?”. Com esta primeira garantia, o Gerente de Infraestrutura pode automatizar a tomada de decisão de forma transparente para o serviço.

 

Um banco de dados altamente disponível é caro, porém mandatório. Qual seria o impacto de um cliente tentar executar a principal operação de seu sistema e não conseguir? Para qualquer caso, o impacto é devastador. A internet tem tudo, inúmeras possibilidades de inúmeros serviços. Uma vez que o cliente não consegue desempenhar uma atividade crucial para aquele momento que reservou para tal, ele procura uma segunda opção. Imediatamente. Portanto, é fundamental garantir que os dados estarão acessíveis com downtime de minutos no ano.

E para prover aquele resultado àquele cliente que deseja tomar uma decisão em cima de dados para o fim da estação: Snapshots de máquinas virtuais em conjunto com sistema de automatização de Infraestrutura (Puppet ou Chef). Este é o foco deste texto.

No caso do cenário de exemplo aqui exposto, a sobrecarga do serviço é do tipo programada, ou seja, houve uma interação que culminaria na sobrecarga, caso não haja a adequação do parque tecnológico. Mas de toda forma, a estrutura ideal para trabalhar com sobrecarga é baseada em: (1) Monitoramento; (2) Coleta de Dados; (3) Detecção de falhas; (4) Correção automatizada de falhas; (5) Alerta e (6) Ação humana. Sem um sistema de monitoramento, não há como o tratamento da sobrecarga ser concretizado.

Se você possui um ambiente na nuvem, certamente aproveita das facilidades de backup neste ambiente e mantém backups de máquinas virtuais inteiras. Pois bem, a solução aqui tratada se utiliza destas imagens para o serviço não sentir a sobrecarga. Além disso, o sistema de automatização deve estar incluso. Com isso, a tarefa se torna até bem simples, porque consiste apenas em criar máquinas iguais, com as mesmas configurações e inserí-las no ambiente (configurar DNS, rede, etc).

Mas ainda há alguns problemas na operação. Digamos que sua aplicação responda internamente pelo nome app.internal.com, ao utilizar-se da imagem gerada desta máquina, a máquina nova subirá com este mesmo nome, o que pode causar confusão na execução da aplicação dentro da máquina.

Com todas as máquinas já configuradas em um Puppet Server, basta que esta nova máquina se sincronize com o mesmo, solicite seu novo nome DNS, o Puppet mesmo lida com DNS ou DNS Relay. Este cenário trata muito bem o crescimento adaptativo de um ambiente na nuvem ou, até mesmo, físico. Ao retornar ao ambiente normal, não haverá quaisquer problemas com relação às configurações.

As vantagens de se preparar desta forma e poder crescer de maneira tão otimizada fazem parte da visão moderna que deve ter um empreendedor, que foca no cliente, mas também trata com carinho seu próprio sistema. Se o pensamento é assim, não mede esforços para que o sistema tenha uma metodologia de desenvolvimento coerente, com excelência técnica e sem estourar prazos.