Elasticidade (computação em nuvem)

Origem: Wikipédia, a enciclopédia livre.

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".[1][2] 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".[3][4]

Exemplo[editar | editar código-fonte]

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[editar | editar código-fonte]

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[editar | editar código-fonte]

O tempo de provisionamento de recursos[editar | editar código-fonte]

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.[5] 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,[6] como provisionamento de outra VM para um componente de uma aplicação específica.

Monitorando aplicações elásticas[editar | editar código-fonte]

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.[7] 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[editar | editar código-fonte]

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, SYBL[8]).

Múltiplos níveis de controle[editar | editar código-fonte]

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,[9] 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.[10] 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).[11]

Veja também[editar | editar código-fonte]

Referências[editar | editar código-fonte]

  1. «Elasticity in Cloud Computing: What It Is, and What It Is Not» (PDF). Proceedings of the 10th International Conference on Autonomic Computing (ICAC 2013), San Jose, CA, June 24–28 
  2. 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. [1]
  3. Cloud Computing Principles and Paradigms, ISBN 978-0-470-88799-8, John Wiley and Sons, 2011 
  4. Perez, Perez; et al., Responsive Elastic Computing, ISBN 978-1-60558-578-9 
  5. «A Performance Study on the VM Startup Time in the Cloud». Proceedings of 2012 IEEE 5th International Conference on Cloud Computing (Cloud2012). ISBN 978-1-4673-2892-0. doi:10.1109/CLOUD.2012.103 
  6. «On estimating actuation delays in elastic computing systems». Proceedings of ICSE Workshop on Software Engineering for Adaptive and Self-Managing Systems (SEAMS). doi:10.1109/SEAMS.2013.6595490 
  7. «MELA: Monitoring and Analyzing Elasticity of Cloud Services». Proceedings of IEEE 5th International Conference on Cloud Computing Technology and Science (CloudCom 2013). doi:10.1109/CloudCom.2013.18 
  8. Georgiana 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
  9. 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
  10. «ElaaS: An Innovative Elasticity as a Service Framework for Dynamic Management across the Cloud Stack Layers». Proceedings of Sixth International Conference on Complex, Intelligent and Software Intensive Systems (CISIS) 4–6 July 2012. doi:10.1109/CISIS.2012.117 
  11. «Towards a systematic approach to the dynamic adaptation of structured parallel computations using model predictive control». Cluster Computing. 17. doi:10.1007/s10586-014-0346-3 

Ligações externas[editar | editar código-fonte]

  • 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.
  • «Cloud computing and emerging IT platforms: Vision, hype, and reality for delivering computing as the 5th utility». Future Generation Computer Systems. 25