Isolamento de Recursos na Nuvem – Por que isso e tao importante? Rodrigo Albani de Campos – [email protected] Não restam dúvidas quanto à evolução na capacidade e na qualidade do hardware atualmente utilizado como servidores para os mais diversos serviços, ao ponto de hoje em dia ser extremamente comum utilizar aquilo que era chamada de “plataforma baixa” para serviços críticos. Isso fez com que o profissional de TI passasse a assumir algumas coisas como garantidas, sem se preocupar ou exigir certas garantias do fornecedor de infraestrutura. Uma dessas coisas é a capacidade de leitura e escrita em disco dos equipamentos. Salvo algumas condições muito específicas a maioria dos equipamentos entrega desempenho suficiente e de forma consistente para a aplicação. Mesmo quando o desempenho não era o esperado, pelo menos o comportamento era constante, ou seja, ou funcionava a contento ou simplesmente não atendia. A virtualização da infraestrutura e em um segundo momento a computação em nuvem colocaram em cheque diversos aspectos da operação de sistemas que eram paradigmas estabelecidos. Um desses aspectos é o fato do equipamento (servidor) geralmente ser utilizado exclusivamente por um usuário ou por uma aplicação, trabalhando de forma dedicada. Na nuvem não apenas o servidor, mas potencialmente toda a infraestrutura está sendo utilizada por diversos usuários. Isso tem um impacto direto na maneira como o engenheiro de sistemas ou o desenvolvedor colocam suas aplicações em produção. Desde a fase de concepção do UOL Cloud duas grandes preocupações nortearam o desenvolvimento da arquitetura no que tange aos recursos de cada uma das máquinas: 1. Garantir um nível de qualidade que oferecesse uma experiência positiva para nossos clientes, com um desempenho constante e consistente; 2. Garantir que nenhum usuário fosse afetado pela utilização de recursos dos demais, oferecendo um isolamento total da infraestrutura. Claro que isso deveria ser a preocupação básica de todo provedor de infraestrutura, mas em geral isso é ignorado e até mesmo menosprezado pela maioria. Isolamento de recursos na nuvem 1 Estudo de provedores de Cloud Para evidenciar isso foi realizado um teste, medindo o desempenho de escrita em disco. A escrita em disco é importante para diversas aplicações, principalmente as que têm de lidar com informações em disco, como por exemplo, bancos de dados. Nesses testes o esperado é um comportamento constante e consistente, para que o desenvolvedor saiba exatamente como sua aplicação irá se comportar, a exemplo do que pode ser observado no gráfico abaixo, que representa o comportamento de escrita em disco de um servidor hospedado no UOL Cloud. Chamadas de escrita por segundo Chamadas de escrita por segundo UOL Cloud 300 250 200 150 100 50 0 0:00 2:24 4:48 7:12 9:36 12:00 14:24 16:48 19:12 21:36 0:00 Hora do dia O teste realizado no UOL Cloud demonstra um comportamento estável durante todo o dia, com uma média de 273 requisições de escrita por segundo e pouca variação. Esse comportamento é garantido pela preocupação do UOL Cloud em não fazer o overbooking de recursos na sua infraestrutura, além de utilizar recursos tecnológicos avançados para garantir que uma máquina não interfira no comportamento da outra. O mesmo teste quando realizado em outros provedores de Cloud demonstra um comportamento muito diferente. Isolamento de recursos na nuvem 2 Chamadas de escrita por segundo Provedor Cloud A Chamadas de escrita por segundo 250 200 150 100 50 0 0:00 2:24 4:48 7:12 9:36 12:00 14:24 16:48 19:12 21:36 0:00 Hora do dia O desempenho médio ficou em 156 requisições de escrita por segundo, mas o mais grave é o fato do comportamento ser completamente instável, de tal forma que o usuário não sabe qual o comportamento que ele pode esperar do seu provedor de infraestrutura. Percebam ainda a queda brusca no desempenho de escrita em torno de 03:00, causado por algum fator desconhecido e totalmente independente da máquina do usuário. Essa instabilidade pode induzir ao erro, fazendo com que se contratem menos recursos do que os realmente necessários para a aplicação, ou ainda que se contratem recursos de sobra, gerando custo desnecessário. Em outro provedor de Cloud Público os resultados foram similares, porém com um pouco menos de variação, e com uma média de 198 chamadas de escrita por segundo. Isolamento de recursos na nuvem 3 Chamadas de escrita por segundo Chamadas de escrita por segundo Provedor Cloud B 350 300 250 200 150 100 50 0 0:00 2:24 4:48 7:12 9:36 12:00 14:24 16:48 19:12 21:36 0:00 Hora do dia Outro dado relevante verificado no Provedor B foi a degradação ocorrida ao longo do tempo. Em uma experiência, o mesmo teste de escrita foi realizado durante uma semana no mês de Fevereiro de 2012. A máquina então foi desativada por dois meses e um novo teste foi realizado utilizando os mesmos parâmetros. O desempenho de escrita observado em Fevereiro teve uma média de 231 chamadas por segundo, porém o mesmo teste, realizado nas mesmas circunstâncias em Maio resultou em uma média de 137 chamadas por segundo. Chamadas de escrita por segundo Desempenho médio de escrita Provedor Cloud B 250 200 150 100 50 0 Fevereiro Maio 232 137 Chamadas/s Isolamento de recursos na nuvem 4 Todos os testes foram realizados em máquinas virtuais com configurações similares. Conclusão Ao avaliar e escolher um provedor de Cloud é de suma importância que se entenda o que de fato está sendo entregue e qual o compromisso do provedor com o desempenho. Quando não existe um mínimo de garantia quanto a qualidade do serviço e desempenho do ambiente o dimensionamento se torna praticamente impossível, e em um ambiente em que se paga pela utilização o planejamento é essencial. Basta imaginar uma situação em que não se sabe qual será o comportamento e desempenho de um banco de dados ou de um servidor de aplicação para se compreender a importância na previsibilidade do desempenho. Atualmente a maioria dos provedores se preocupa em entregar um desempenho “eventual”, ao invés de um comportamento consistente e constante, que permita para o cliente o correto dimensionamento e aproveitamento de sua infraestrutura. O UOL Cloud se compromete em entregar excelência em seus serviços, utilizando equipamentos e tecnologia de ponta e amparado pela melhor e mais moderna infraestrutura de Data Center do País. Isso permite que se ofereça um desempenho superior por um custo fixo e conhecido, sem deixar de lado a estabilidade. Isolamento de recursos na nuvem 5