• Nenhum resultado encontrado

A implantação de serviços de computação em nuvem enfrentam desafios relacionados ao método de fornecer o melhor serviço com o menor esforço possível com os recursos existentes disponíveis. Esses e outros desafios são vinculados ao balanceamento de carga. O balanceamento de carga em nuvem é compreendido como um mecanismo capaz de distribuir de forma eficiente uma determinada carga de trabalho entre múltiplos nós para melhorar o desempenho geral do sistema, utilização dos recursos, tempo de resposta, estabilidade, disponibilidade e várias outras características atribuídas às necessidades das aplicações dos serviços de computação em nuvem (DESAI; PRAJAPATI, 2013). A natureza dinâmica das operações em computação em nuvem pode provocar sobrecarga ou subutilização dos recursos em uma infraestrutura de nuvem, tornando ainda mais difícil balancear a carga de trabalho.

Nesta seção, são discutidos os principais desafios encontrados ao projetar soluções para o problema de balanceamento de carga em nuvem. Esses desafios também estão presentes em diferentes camadas da pilha de serviços da computação em nuvem, porém este trabalho foca em sistemas de armazenamento baseados em objetos. Trabalhos no estado da arte de balanceamento de carga em nuvem como (NUAIMI et al., 2012) e (MESBAHI; RAHMANI, 2016), consolidam os principais desafios enfrentados para mitigar o problema de balanceamento de carga em nuvem. Entre tais desafios, pode-se destacar:

• Heterogeneidade dos dispositivos de armazenamento. Apesar de existirem diversas abordagens na literatura que conseguem distribuir bem a carga de forma uniforme entre nós de armazenamento, como as baseadas em DHTs (FELBER et al., 2014), pouco tem se trabalhado em técnicas para sistemas de armazenamento heterogêneos em nuvem. Estes ambientes, frequentemente surgem pela necessidade dos provedores de armazenamento em nuvem terem que atualizar ou estender sua infraestrutura com armazenamento modernos. Algoritmos de balanceamento de carga precisam lidar com a vazão distinta dos dispositivos de armazenamento, pois determinados dispositivos podem processar operações de entrada

e saída com muito mais rapidez do que outros. Portanto, a má utilização dos recursos heterogêneos pode causar o retardamento das requisições dos clientes e o desperdício de recursos de um sistema de armazenamento. Algoritmos de balanceamento que buscam ajustar dinamicamente a carga de trabalho com as capacidades distintas dos dispositivos tendem a diminuir o tempo de resposta das requisições. Por conseguinte, eles otimizam o desempenho geral do sistema de armazenamento tirando vantagem da heterogeneidade do ambiente.

• A distribuição espacial dos servidores. Alguns algoritmos são projetados de forma eficiente para funcionar com servidores locais, ou seja, fisicamente próximos uns dos outros. Entretanto, é um grande desafio projetar um algoritmo eficiente que considere a distribuição espacial dos servidores de armazenamento. Esse desafio é motivado pelo fato de poder existir um grande atraso da conexão de rede entre os elementos participantes do processo de balanceamento. As requisições dos clientes podem sofrer com atraso do tempo de resposta devido a distância física dos servidores responsáveis pelo processamento das requisições. Assim, se faz necessário desenvolver estratégias de balanceamento que controlem os servidores distribuídos espacialmente ao longo do sistema e que sejam eficientes ao considerarem atrasos de rede.

• Replicação. Um dos grandes desafios ao projetar os algoritmos de balanceamento de carga é levar em consideração a camada de armazenamento do sistema com uma determinada politica de redundância. Assim, algoritmos de balanceamento de carga que utilizam replicação total propõem manter alta disponibilidade entre os servidores e dispositivos de armazenamento. Porém, esses algoritmos não conseguem ser tão eficientes pois eles exigem maiores custos de transmissão na rede, processamento e armazenamento na sincronização necessária para manter as réplicas atualizadas em todos os dispositivos de armazenamento. Para contornar esse tipo de problema, a política de replicação parcial é utilizado por algoritmos de balanceamento para economizar os recursos do sistema de armazenamento. Apesar desse tipo de política direcionar em uma melhor utilização dos recursos na camada de persistência de dados, existe a desvantagem de aumentar a complexidade do algoritmos que adotam esse tipo de política. Isso acontece pelo fato dos algoritmos atribuírem em seus modelos apenas algumas réplicas que estão distribuídas entre diferentes dispositivos de armazenamento ao longo da infraestrutura da nuvem. O desempenho das soluções que utilizam alguma política de redundância ainda pode ser

melhorado quando considerada a heterogeneidade da capacidade de armazenamento e a vazão dos dispositivos de armazenamento do sistema de armazenamento em nuvem, seja através da escrita ou seleção de réplicas.

• Ponto central de falha. O controle do estado de balanceamento de carga e a coleta de informações de diferentes componentes de um sistema de armazenamento em nuvem devem ser projetados de forma a evitar um único ponto de falha no algoritmo. Algoritmos de balanceamento de carga cujo controle é centralizado normalmente possuem baixa complexidade e são mais fáceis de ser implementados devido ao conhecimento global do estado do sistema. Porém, um único controlador torna arriscado o funcionamento constante do sistema. Em alguns casos, se o controlador falhar, todo o sistema irá falhar junto. Dessa forma, os algoritmos de balanceamento de carga devem ser projetados para superar esse desafio. Algoritmos de balanceamento com controle distribuído parecem ser a melhor abordagem. Entretanto, eles possuem a desvantagem de serem mais complexos e exigem maior coordenação e controle dos servidores para que o algoritmo de balanceamento funcione corretamente, sem gerar sobrecargas.