Bitcurrent e Webmetrics executaram númerosos testes por um mês em 5 diferente plataformas cloud - Amazon, Google, Rackspace, Salesforce.com e Terremark - tentando medir o desempenho em cada plataforma. Uma de suas cloclusões é que cada plataforma funciona muito bem para diferentes tipos de aplicações. Para testar o desempenho, os autores do relatório selecionaram 4 tipos de testes e usaram como referência 5 aplicações nativas executadas em 5 diferentes plataformas cloud: Testes
- Requisição de um Objeto Pequeno - 1x1 pixel GIF
- Requisição de um Objeto Grande - Imagem de 2MB
- Executar uma tarefa de uso intenso de CPU - 1.000.000 operações seno e soma. Para o Salesforce.com foram feitas 100.000 operações devido a uma limitação da plataforma.
- Executar uma tarefa de uso intensivo de IO (Entrada/Saída) - Consultando 500.000 linhas de uma tabela usando um banco de dados MySQL com Clear Cache do Amazon, Rackspace e Terremark, um armazenador de dados do Salesforce.com, e BigTable do Google.
Aplicações Nativas
Para as aplicações nativas de referência, os autores escolheram 5 websites reais desenvolvidos para as plataformas. O websites foram escritos em Apex para o Salesforce.com, em Java e Python para o Google AppEngine, websites executando em servidores Linux no servidor Xen da Amazon e Rackspace, e websites executando em máquinas virtuais VMWare para o Terremark. Os nomes das aplicações não foram divulgados.
Para realizar as medições, os autores usaram os serviços do WebMetrics, enviando várias requisições em momentos diferentes e de vários locais ao redor do mundo por um mês.
Duas plataformas cloud, Salesforce.com e Google AppEngine, fornecem PaaS (Platform as a Service - Plataforma como Serviço), enquanto as outras três, Amazon, Rackspace e Terremark, fornecem IaaS (Infrastructure as a Service - Infraestrutura como Serviço).
Resultados
A latência dos 4 testes para todas as 5 plataformas foram a seguinte:
Todas as plataformas funcionaram bem para pequenos objetos, embora plataformas PaaS executaram melhor do que plataformas IaaS para objetos grandes. Salesforce.com funcionou muito mal para tarefas de uso intensivo de CPU embora o teste incluiu apenas 10% do número de operações usadas em outras plataformas. Google e Rackspace foram os melhores no teste de IO.
Os resultados dos testes de aplicações nativas são os seguinte:
As PaaS cloud testadas funcionaram melhor, seguidas pela Amazon e Rackspace, enquanto Terremark veio por último devido a grande quantidade de respostas em 12 segundos.
Conclusões
Os autores do relatório de performance extrairam muitas conclusões sumarizando as lições aprendidas durante os testes:
- Fique de olho nos seus vizinhos. Nós vimos boas evidências que várias aplicações cloud ficam lentas de uma vez, então você será afetado, definitivamente, por outros usando a mesma cloud que você.
- Entenda o perfil de sua cloud. Os historiogramas mostraram aqui que diferentes clouds são boas em tarefas diferentes. Você terá que escolher o tamanho da sua máquina virtual - em termos de CPU, memória, etc - a fim de ter um bom desempenho.
- Você precisa de um monitorador para sua aplicação. Quando você planeja uma estratégia de monitoramento, você precisa de um código personalizado que é executado por trás dos panos e assim você pode avaliar o problemas rapidamente.
- Escolher entre PaaS ou IaaS depende da sua tendência de carga de trabalho. Se você está querendo recodificar sua aplicação para ter as vantagens de sistema de “dados grandes” como o Bigtable, você pode escalar melhor escolhendo uma cloud PaaS. Por outro lado, se você precisa de máquinas individuais, você tem que construir elasticidade na sua configuração IaaS.
- Dados grandes não vem de graça. Usar armazenadores de dados grandes e compartilhados pode parecer legal; mas leva tempo para colocar os dados lá (37 horas, no caso do Google) o que pode não ser apropriado para os padrões de uso de suas aplicações.
- Monitorar o uso e os controladores. Em PaaS, se você exceder suas taxas limites você pode ter algumas surpresas.
- A resolução de erros se torna mais difícil. Você precisa dos dados da Internet como um todo, do seu provedor de cloud como um todo, e de seus vários níveis de aplicações individuais, a fim de identificar o problema corretamente. Quando você está executando em uma infraestrutura dedicada, você não precisa gastar muito tempo eliminando problemas de terceiros (tais como contenção de banda compartilha ou bloqueio de I/O).
- PaaS significa que você está na mesma máquina. Nós percebemos que se você está usando PaaS, quando a cloud fica lenta, todo mundo fica lento. Com IaaS, existe uma separação maior da CPU e da responsividade dos servidores - mas você ainda continua dividindo armazenamento e largura de banda.
O relatório completo contém informações detalhadas coletadas durante a execução testes de desempenho para cada plataforma.
Nota: Os autores aconselham usar as métricas de desempenho apenas para fins instrutivos, considerando que os resultados podem variar dependendo do tipo de carga de trabalho, código, configuração usada, ambiente de desenvolvimento e outros fatores. O estudo não tem a intenção de recomendar uma plataforma cloud em relação a outra.