A capacidade, proativa ou reativa, de aumentar ou diminuir os recursos de um serviço em tempo de execução. A noção de tempo é crucial, envolvendo tanto o atraso na percepção da necessidade de reconfiguração quanto na duração deste procedimento.
Escalabilidade Temporal
Nota:
Elasticidade x Escalabilidade
Escalabilidade é a habilidade de um sistema de lidar com uma quantidade de maior carga à medida de novos recursos são adicionados, mantendo um nível de desempenho uniforme ou aproximado. O conceito é livre da noção do tempo diferente da elasticidade
Modalidades
Vertical
Nota:
Permite o redimensionamento de atributos como CPU, disco, rede, memória ou até mesmo alocação e desalocação de nós de computação
Horizontal
Nota:
Permite aumentar/diminuir o número de instâncias (VMs) e sua migração para novos nós de processamento
Política de Alocação
Manual
Nota:
Necessita da intervenção do usuário/programador. Podem ser disponibilizadas por meio de APIs
Automática
Reativa
Nota:
Caracterizada pelo mecanismo regra-condição-ação. É comum o emprego de thresolds na escrita de regras para gerenciamento das métricas. Geralmente conta com uma pré-configuração do usuário através de redação de regras-condição-ação. Novos serviços requerem um novo esforço de redação.
Comum no Amazon, Windows Azure e Nimbus.
Pode utilizar como estratégia a detecção de padrões e discretização por meio de profiling
Proativa
Nota:
Utiliza técnicas de predição para antecipar o comportamento de carga do sistema e assim decidir pela ação de elasticidade.
É comum que implementações proativas utilizerm Fast Fourier Transform (FFT), Walvelts, séries temporais e/ou perfis(profiles).
Métricas de Atuação
Utilização de CPU
Nota:
Métricas mais utilizadas.
Custo Financeiro
Nota:
Elasticidade com aumento de recursos acarreta em maiores gastos para o consumidor. Pesquisas procuram um melhor mapeamento dado um determinado budget.
Controle da Energia Elétrica
Número de Requisições em Fila
Utilização de Memória
Estratégias
Replicação
Nota:
Imagem ou template que é instanciado para criar uma máquina virtual para tolerância a falhas e balanceamento de carga.
Gerenciada por um controlador de requisições que gerencia a escala sob demanda. O aumento/diminuição da demanda aumenta/diminui as imagens em execução.
Migração
Nota:
Técnica mais trivial para expressão da elasticidade. As VMs são isoláveis e hypervisors permitem a transferência entre nós com um nível de desempenho aceitável (live migration). Não é necessário alteração em nível de implementação nas aplicações.
Redimensionamento
Nota:
Refere-se a adaptação/alteração de recursos e aplicações (threads)
Interfaces de Uso
Linha de Comando
Nota:
Comum em nuvens privadas, geralmente associadas ao SO Linux
Interface Gráfica
Nota:
Gerente gráfico, mais comumente disponíveis mediante navegador web.
API
Nota:
Interfaces em nível de programação, onde usuários podem interagir com a nuvem, como por exemplo, lançar e destruir instâncias de serviços.