Na computação em nuvem, a elasticidade é definida como "o grau em que um sistema é capaz de adaptar-se a carga de trabalho através de provisionamento e desprovisionamento de recursos automaticamente, de forma que em cada ponto no tempo, os recursos disponíveis correspondam à demanda atual, tão próxima quanto possível".Nikolas Herbst, Rouven Krebs, Giorgos Oikonomou, George Kousiouris, Athanasia Evangelinou, Alexandru Iosup, and Samuel Kounev. Ready for Rain? A View from SPEC Research on the Future of Cloud Metrics. Technical Report SPEC-RG-2016-01, SPEC Research Group - Cloud Working Group, Standard Performance Evaluation Corporation (SPEC), 2016. Elasticidade é uma característica que diferencia a computação em nuvem dos paradigmas de computação propostos anteriormente, tais como computação em grade. A adaptação dinâmica de capacidade, por exemplo, alterando o uso de recursos de computação, para atender a uma variação de carga de trabalho é chamado de "computação elástica".
Exemplo Vamos ilustrar a elasticidade através de um exemplo simples de um provedor de serviço que deseja executar um site em uma Infraestrutura de nuvem. No momento o site é impopular e uma única máquina (geralmente uma máquina virtual) é suficiente para servir a todos os usuários. No momento o site, de repente, se torna popular, por exemplo, como resultado de uma multidão relâmpago, e uma única máquina não é mais suficiente para servir a todos os usuários. Com base no número de usuários, simultâneos, acessando o site e os requisitos de recursos do servidor web, pode ser que dez máquinas sejam necessárias. Um sistema elástico deve imediatamente detectar essa condição e prover outras nove máquinas a partir da nuvem, para assim servir a todos os usuários responsivamente.
No momento , o site torna-se impopular novamente. As dez máquinas que atualmente estão alocados para o site, estão, na maior parte do tempo inativas e uma única máquina seria suficiente para servir a alguns usuários que estão acessando o site. Um sistema elástico deve imediatamente detectar esta condição, desprover as nove máquinas e liberá-las para a nuvem.
Finalidade Elasticidade visa corresponder a quantidade de recursos alocados para um serviço com a quantidade de recursos que ele realmente necessita, evitando o sobre - ou sub-provisionamento. O excesso de provisionamento, por exemplo, a alocação de mais recursos do que o necessário, devem ser evitados, como o provedor de serviços, muitas vezes tem que pagar por recursos que são alocados para o serviço. Por exemplo, uma instância de um Amazon EC2 M4 extra-grande custa US$0.239/hora. Se um serviço alocou duas máquinas virtuais quando somente uma é necessária, o fornecedor de serviços de desperdiça $2,095 a cada ano. Portanto, as despesas de um provedor de serviços são maiores do que o ideal e o lucro é reduzido.
Sub-provisionamento, por exemplo, alocando menos recursos do que o necessário, devem ser evitado, caso contrário o serviço pode não servir seus clientes com um bom serviço. No exemplo acima, sob sobre-provisionamento o site pode fazer ele parecer lento ou inacessível. Os usuários, eventualmente, desistem de acessar, assim, o provedor de serviços perde clientes. No longo prazo, a renda do provedor vai diminuir, o que também reduz o lucro
Problemas
O tempo de provisionamento de recursos Um problema em potencial é que a elasticidade leva tempo. Uma máquina virtual (VM) na nuvem pode ser adquirida a qualquer momento pelo usuário, no entanto, pode demorar vários minutos para que a VM adquirida esteja pronto para uso. O tempo de inicialização da VM é dependente de fatores, tais como tamanho da imagem, tipo da VM, localização do centro de dados (datacenter), o número de VMs, etc. Prestadores de serviços em nuvem têm diferentes desempenho de inicialização de VM. Isto implica que qualquer mecanismo de controle projetado para aplicações elásticas deve considerar em seu processo de decisão o tempo necessário para as ações elasticidade tenham efeito, como provisionamento de outra VM para um componente de uma aplicação específica.
Monitorando aplicações elásticas Aplicações elásticas podem alocar e desalocar recursos (como VMs) em demanda específica de componentes de aplicação. Isso faz recursos de nuvem voláteis, e as ferramentas de monitoramento tradicionais que associam o monitoramento de dados com um determinado recurso (i.e. VM), como Gânglios ou Nagios, não são mais adequados para o monitoramento de comportamento de aplicações elásticas. Por exemplo, durante sua vida, um armazenamento de dados de um aplicativo elástico pode adicionar e remover armazenamento de dados das VMs devido ao custo e requisitos de desempenho, variando o número de VMs usadas. Assim, é necessário obter informações adicionais no monitoramento aplicações elásticas, tais como associar a estrutura lógica do aplicativo sobre a infraestrutura virtual subjacente. Este por sua vez gera outros problemas, como a forma de agregar dados a partir de várias VMs para extrair o comportamento do componente de aplicação executando no topo dos VMs, como diferentes métricas podem precisar ser agregados de forma diferente (por exemplo, o uso da cpu pode ser medido, transferência de rede pode ser resumida).
Requisitos de elasticidade Quando a implantação de aplicativos em infraestruturas em nuvem (IaaS/PaaS), requisitos de partes interessadas precisam ser considerados, a fim de garantir o adequado comportamento elástico. Apesar de, tradicionalmente, seria tentar encontrar o melhor ponto entre custo e qualidade ou desempenho, para os usuários da nuvem do mundo real os requisitos que dizem respeito ao comportamento são mais complexas e alvo de várias dimensões da elasticidade (por exemplo, SYBLGeorgiana Copil, Daniel Moldovan, Hong-Linh Truong, Schahram Dustdar, "SYBL: an Extensible Language for Controlling Elasticity in Cloud Applications", Proceedings of the 13th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing (CCGrid), May 14–16, 2013, Delft, the Netherlands).
Múltiplos níveis de controle Aplicativos em nuvem pode ser de vários tipos e complexidades, com vários níveis de artefatos implantados em camadas. Controlar tais estruturas devem levar em consideração uma variedade de questões, sendo rSYBL,Georgiana Copil, Daniel Moldovan, Hong-Linh Truong, Schahram Dustdar, "Specifying, Monitoring, and Controlling Elasticity of Cloud Services", Proceedings of the 11th International Conference on Service Oriented Computing. Berlin, Germany, 2–5 December 2013. doi=10.1007/978-3-642-45005-1_31 uma abordagem neste sentido. Para controle multi-nível, sistemas de controle precisam considerar o impacto do nível inferior de controle tem sobre nível superior e vice-versa (por exemplo, o controle de máquinas virtuais, web containers, ou serviços da web no mesmo momento), bem como os conflitos que podem surgir entre várias estratégias de controle a partir de vários níveis. Estratégias elásticas sob nuvem podem tirar proveito de métodos teóricos de controle(por exemplo, o controle preditivo tem sido experimentada em cenários de nuvem, mostrando vantagens consideráveis com respeito a métodos reativos).
Ver também
Microsoft Azure Amazon Elastic Compute Cloud
Referências
Ligações externas
O NIST Definição de Computação em Nuvem. Peter Mell and Timothy Grance, NIST Special Publication 800-145 (September 2011). National Institute of Standards and Technology, U.S. Department of Commerce.
Categoria:Computação em nuvem