Self-healing Techniques for Web-based Applications

Palavras-chave: Self-healing,Autonomic computing,Web applications,Fault tolerance

As aplicações Web desempenham um papel importante para o negócio de muitas em- presas. Dados recentemente publicados na Internet Retailer Magazine, revelam que em 2012 as vendas online cresceram: 19% na América Latina atingindo 15,42 biliões de dólares; 16% nos EUA atingindo 225,54 biliões de dólares; 16% na Europa atingindo 302,20 biliões de dólares; 32% na Asia atingindo 256,50 biliões de dólares. Por detrás deste crescimento, existem aplicações que são cada vez mais complexas e difíceis de manter. Estes aspetos, se não forem devidamente acautelados, podem levar a situações de indisponibilidade ou a anomalias de performance, afetando o retorno financeiro e a imagem das empresas. De acordo com Joshua Bixby, presidente da Strangeloop Corporation, “um atraso de um segundo no tempo de resposta, pode representar uma perda de 2,5 milhões de dólares por ano, considerando um site que fatura 100 mil dólares por dia”. O próprio afirma que, “oito em cada dez visitantes que tenham uma experiência negativa não voltam e três vão partilhar a sua experiência com outros”. Em 2001, Paul Horn da IBM, referiu-se à complexidade dos sistemas como um dos maiores entraves ao desenvolvimento tecnológico. Segundo o próprio, a complexidade dos sistemas tende a ser tão elevada que estes se tornam difíceis de gerir e manter. Para fazer face a este problema é proposto o conceito de Autonomic Computing (AC). Este conceito é uma visão holística, na qual os sistemas dispõem de capacidades de gestão autónoma. Foram identificadas quatro atributos fundamentais, nas quais o AC deve assentar: self-configure, self-heal, self-optimize e self-protect. Nesta Tese apresentamos um sistema de self-healing para aplicações Web. O self-healing refere-se à capacidade de auto detetar e recuperar de anomalias. A sua adoção em aplicações Web visa a deteção de anomalias que possam ocorrer em tempo de execução e na recuperação automática dessas anomalias. Neste âmbito, propomos um framework denominado de SHõWA. O SHõWA é composto por vários módulos que cooperam entre si, realizando as tarefas de monitorização da aplicação, a análise de dados para a deteção e localização de anomalias e a execução de procedimentos de recuperação. A monitorização é feita através de um agente, implementado segundo o paradigma de Aspect-Oriented Programming (AOP). Este agente não requer conhecimento prévio sobre a aplicação a monitorizar nem alterações no seu código fonte. Ele dispõe de algoritmos que permitem, de forma autónoma, ajustar a frequência de monitorização e o nível de profiling, reduzindo assim o impacto de performance causado pela própria monitorização. A análise de dados é feita através de correlação estatística, e tem como objetivo detetar variações de performance, analisando para o efeito se uma variação é motivada por alterações de workload ou devido a algum tipo de anomalia. Perante uma anomalia de performance, a análise de dados é feita com o intuito de localizar a anomalia, nomeadamente se na sua origem estão alterações ao nível do sistema, do servidor aplicacional ou da própria aplicação, identificando neste caso, os componentes envolvidos na anomalia de performance. Mediante a deteção e localização da anomalia, o framework seleciona e executa um plano de recuperação (p.ex.: redimensionar os recursos do sistema, fazer downgrade da aplicação, fazer restart sos serviços). Na parte final da Tese, apresentamos uma extensão do framework, destinado a prever a ocorrência de anomalias de performance. Esta extensão faz uso de modelos de análise de séries temporais para estimar valores e predizer, através de algoritmos de classificação (machine learning), o estado do sistema em função dessas estimativas. O framework SHõWA foi implementado e testado neste trabalho. Destacam-se os seguintes resultados: • Através de um conjunto de anomalias frequentemente observadas em aplicações Web, fizemos um estudo comparativo utilizando sistemas de monitorização diferentes. O framework SHõWA detetou 100% das anomalias injetadas e em 82% dos casos foi a ferramenta mais rápida a detetar as anomalias;  • Com a adoção de mecanismos de monitorização adaptativa e seletiva, o framework SHõWA permite intercetar todos os métodos da aplicação sem afetar severamente a performance do sistema. Os resultados revelam que o throughput é afetado em menos de 1% e o atraso no tempo de resposta é inferior a 2 milissegundos;  • O framework SHõWA é capaz de distinguir entre variações de workload e anomalias de performance;  • O framework SHõWA não detetou anomalias quando estas não foram injetadas. Ele detetou todas as anomalias de performance injetadas e todas as vezes que detetou existiam utilizadores afetados por atrasos no tempo de resposta;  • As anomalias detetadas foram recuperadas de forma automática. O processo de recuperação mitigou o impacto das anomalias sem causar erros ou perdas de trabalho em progresso;  • Considerando uma aplicação Web a correr numa infraestrutura em cloud, o framework SHõWA revelou-se útil para redimensionar a infraestrutura e manter um bom nível de serviço. Ele detetou cenários de contenção no workload e de contenção nos recursos do sistema, e permitiu ajustar a infraestutura de forma rápida, reduzindo o impacto das anomalias junto dos utilizadores;  • A monitorização, deteção, localização e recuperação de anomalias é feita automaticamente, reduzindo assim a necessidade de intervenção humana.   Os resultados obtidos favorecem a adoção do framework em aplicações Web de produção. O framework SHõWA contribui para assegurar a performance e disponibilidade das aplicações, maximizando o retorno financeiro para as empresas que utilizam estas aplicações no âmbito do seu negócio.

Área científica: Ciências da Engenharia e Tecnologias