terça-feira, 21 de julho de 2009

A Elasticidade, a Escalabilidade e a Nuvem

Ricky Ho publicou em seu blog uma questão bem interessante: Como definir escalabilidade e elasticidade?

Para ele, escalabilidade é tornar possível aumentar o workload de uma aplicação adicionando mais recursos. Obviamente esta estratégia possui um limite, simplesmente adicionar mais discos, processadores ou quaisquer outros dispositivos de hardware não resolverá problemas de escalabilidade. E este é um ponto interessante, pois ele considera escalabilidade apenas como adicionar novos recursos, leia-se hardware. Não seria a escalabilidade também implementada via software, sistemas distribuídos como o Google File System, por exemplo? A resposta é sim. E estas duas formas de conseguir escalabilidade são conhecidas como escalabilidade vertical e escalabilidade horizontal, respectivamente. Este post fornece um bom esclarecimento sobre cada uma delas.

Enquanto escalabilidade visa aumentar o workload de uma aplicação, ignorando a utilização ou não-utilização dos recursos disponíveis, elasticidade refere-se à habilidade de aumentar ou diminuir os recursos necessários para a execução da aplicação, on-the-fly. Deve-se notar que: possuir elasticidade não significa ser escalável.

No embalo da carruagem, Ricky Ho também mencionou outras características de aplicações na nuvem:

  • Statelessness: Evitar criar aplicações que armazenem estado

  • Minimizar o impacto causado pela movimentação de dados durante balanceamento de carga

  • Bons algoritmos para gerenciar o grau de elasticidade

Nenhum comentário:

Postar um comentário