Abstract:
No ambiente da computação workflows tornam-se um padrão crescente para diversos experimentos científicos. Workflows científicos são compostos por várias aplicações estruturadas em um fluxo de atividades, onde o resultado de uma delas torna-se a entrada de outra. Uma aplicação pipeline é um tipo de workflow que recebe um conjunto de tarefas, as quais devem passar por todas as fases desta aplicação de forma sequencial, o que pode levar a um tempo de execução proibitivo. Tendo em vista este problema, aplicações pipeline podem se beneficiar da utilização de recursos distintos para cada um dos estágios, ou seja, executadas em plataformas distribuídas. Entretanto, dependências e necessidade especificas da computação distribuída surgem devido à interação entre os estágios de processamento e a grande quantidade de dados que devem ser processadas. O fluxo de entrada para aplicações que utilizam padrões pipeline pode ser intenso, inconstante ou irregular. De acordo com o comportamento do fluxo de tarefas, alguns estágios da aplicação podem ter seu desempenho prejudicado, atrasando os estágios subsequentes e por fim interferindo no desempenho da aplicação. Uma alternativa para resolver isto é alocar o máximo de recursos disponíveis (over-provisioning) em cada estágio da aplicação. Entretanto, esta técnica pode gerar um alto custo de infraestrutura, além da possibilidade que em alguns momentos os recursos fiquem ociosos. Sendo assim, a elasticidade em ambiente de nuvem computacional aparece como uma alternativa, explorando o conceito “pagar somente pelo que usar” (pay-as-you-go). Nesse contexto é proposto um modelo de elasticidade baseado
na camada PaaS (Plataform as a Service) da nuvem, intitulado de Pipel. Este modelo permite que aplicações pipeline tirem vantagem do provisionamento dinâmico de recursos da infraestrutura de nuvem computacional. Pipel utiliza uma abordagem reativa, fazendo uso de thresholds para a tomada de decisões da elasticidade, baseados na carga de CPU das máquinas virtuais em cada estágio da aplicação. Cada estágio possui um balanceador de carga (chamado de controlador de estágio) e um determinado número de recursos em operação. O controlador do estágio recebe as tarefas que o estágio deve executar, as aloca em uma fila onde são distribuídas nas máquinas virtuais disponíveis em seu estágio. De acordo com regras estabelecidas Pipel realiza ações de elasticidade sobre o ambiente de nuvem. Para validar esta proposta foi desenvolvido um protótipo, o qual foi testado em dois cenários: (i) sem uso de elasticidade e (ii) com uso da elasticidade. Em cada cenário utilizou-se quatro cargas de processamento: (i) Crescente; (ii) Decrescente; (iii) Constante e (iv) Oscilante. Os resultados apresentam uma redução de 38% no tempo da execução da aplicação com o uso da elasticidade provida por Pipel.