Uma das razões o sucesso da computação em nuvem é que dado a sua natureza, sua aplicabilidade pode ser voltada tanto para o contexto acadêmico quanto para o contexto de negócios, podendo ser verificada sua eficiência em problemas reais.
Entretanto, normalmente as propostas para provisionamento de recursos têm sido baseadas em políticas de melhor esforço, onde é feito o possível para atender uma requisição, porém se não houver possibilidade, a mesma será descartada, logo não são levados em conta acordos em nível de serviço e a qualidade dos serviços [Distefano et al., 2011].
Existem muitas aplicações distribuídas na nuvem sendo executadas na internet, sendo que os clientes e os provedores usualmente estão dispersos globalmente. Muitas dessas aplicações requerem determinados níveis de QoS para garantir a satisfação dos seus usuários. Entretanto, garantir ou prever QoS em redes globais diversificadas, que suportam serviços complexos, é uma tarefa que ainda precisa de refinamento para ser resolvida, certamente atrelado ao amadurecimento da computação em nuvem [Pedersen et al., 2011].
Esta crescente utilização da nuvem para construção de aplicações que empregam componentes distribuídos revela a necessidade urgente de uma forma eficiente de avaliação da qualidade dos componentes da nuvem [Zhang et al., 2011]. Por este motivo, abordagens que avaliam e classificam a qualidade dos componentes de uma nuvem são importantes para auxiliar durante o processo de
10
seleção de componentes, isto considerando um conjunto de componentes com funcionalidades equivalentes. Além disto, a classificação dos componentes ajuda na identificação de componentes com baixo desempenho, importante para aplicações complexas que normalmente incluem grande quantidade de componentes [Zheng et al., 2010].
Ainda considerando sistemas distribuídos, [Vinek et al., 2011] afirma que antes da aplicação de qualquer estratégia para otimização da seleção de serviços e fontes de dados, é preciso haver uma análise em termos de métricas de QoS, de forma que seja possível realizar uma comparação com as estatísticas que descrevem os requisitos da aplicação.
O fato é que, devido a natureza dinâmica e heterogênea da computação em nuvem, alcançar níveis satisfatórios de QoS é um grande e relevante desafio, tanto para satisfazer as obrigações dos provedores quanto para as necessidades dos usuários [Chen and Zang, 2009], [Chen and Yang, 2008]. Ainda precisando-se levar em conta que requisitos de QoS podem possuir múltiplas dimensões, sendo então necessário o gerenciamento de QoS que considere componentes diversificados [Liu et al., 2011]. De forma geral, as principais dimensões de QoS em um ambiente de nuvem incluem: desempenho, confiabilidade, segurança, disponibilidade, acessibilidade, fidelidade, integridade, custos, dentre outros [IBM, 2011], [Yu and Buyya, 2005].
Considerando o aspecto de disponibilidade, como uma evolução natural dos sistemas distribuídos, a computação em nuvem pretende atender as transformações nos domínios das aplicações e nos requisitos de sistemas. Sendo assim, a virtualização de recursos é uma das chaves de sucesso do paradigma de nuvens, normalmente utilizado para hospedar diversas aplicações dos usuários em servidores multicore, porém, também apresenta novos desafios a serem investigados, incluindo alguns no contexto de QoS, sendo alguns semelhantes aos enfrentados na Computação em Grade [Armstrong et al., 2009].
As tecnologias de virtualização utilizadas pelos provedores de computação em nuvem podem introduzir interferências no desempenho das cargas de trabalho, de forma a afetar significativamente os parâmetros de QoS [Nathuji et al., 2010].
11
A qualidade dos serviços também pode ser considerada um requisito não funcional, podendo ser utilizada como base para seleção de serviços na nuvem, objetivando elevar o nível dos mesmos e ainda influenciar em sua precisão e confiabilidade [Tao et al., 2010]. Desta forma, a disponibilidade de um monitoramento de QoS seguro e confiável é importante para o crescimento da computação em nuvem, uma vez que será possível garantir que os usuários recebam integralmente os serviços contratados na nuvem. Este fato aumenta o nível de confiança dos serviços na nuvem, garantindo o crescimento deste paradigma [Romano et al., 2011].
Visto que, uma nuvem disponibiliza serviços para diversos usuários ao mesmo tempo, e que muitos destes usuários possuem diferentes requisitos de QoS, estratégias que consideram múltiplas restrições de QoS são profundamente relevantes para nuvens [Xu et al., 2009]. Neste sentido, uma vez que na prática, os recursos computacionais são limitados, é muito importante que os provedores de nuvem gerenciem eficientemente os seus recursos. Desta forma, um modelo eficiente de reconfiguração e alocação de recursos que satisfaça as solicitações de vários usuários é muito importante, sendo possível coletar e analisar informações de confiabilidade, que normalmente são baseadas nos históricos dos servidores da nuvem. Assim, com a utilização de políticas adequadas e a partir dos recursos disponíveis, poderá ser possível atender as solicitações de serviço [Kim et al., 2010].
Normalmente, uma aplicação pode ser hospedada em uma plataforma de execução construída a partir de recursos reais e/ou virtuais em uma nuvem. Neste contexto, os requisitos de QoS podem ser especificados em um SLA que estabelece as restrições da aplicação em relação a sua plataforma de hospedagem.
Através do monitoramento dos parâmetros de QoS o SLA poderá ser verificado, havendo alguma violação que degrade algum dos atributos de qualidade, a plataforma poderá ser dinamicamente re-configurada para incorporar recursos adicionais, e de forma inversa, se o SLA estiver sendo honrado e recursos da plataforma estiverem sendo desperdiçados por falta de utilização, também poderá ocorrer uma reconfiguração na plataforma para liberar estes recursos [Ferretti et al.,2010].
12
Para a computação em nuvem alcançar um sucesso pleno, faz-se necessário que, tanto os clientes quanto os fornecedores tenham certeza de que os acordos em nível de serviço assinados estão efetivamente apoiando da melhor forma suas respectivas atividades de negócio. Atualmente, conforme [Goiri et al., 2010] a utilização de SLAs não tem estabelecido bons níveis de confiança, especialmente quando os provedores terceirizam recursos para outros provedores. Estes provedores de recursos tipicamente suportam métricas muito simples ou métricas que dificultam a exploração eficiente dos seus recursos.