Elasticidade (computação em nuvem)
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]
- ↑ «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
- ↑ 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]
- ↑ Cloud Computing Principles and Paradigms, ISBN 978-0-470-88799-8, John Wiley and Sons, 2011
- ↑ Perez, Perez; et al., Responsive Elastic Computing, ISBN 978-1-60558-578-9
- ↑ «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
- ↑ «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
- ↑ «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
- ↑ 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
- ↑ 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
- ↑ «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
- ↑ «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