Titulo Estágio
Tolerância a falhas em aplicações distribuídas na cloud
Áreas de especialidade
Engenharia de Software
Local do Estágio
DEI
Enquadramento
Tem-se vindo a assistir a um rápido aumento da utilização de serviços
em ambientes cloud. Estes ambientes são caracterizados pela deslocação
dos dados, do software e da computação para infraestruturas remotas
através de redes de comunicação. O desenvolvimento da cloud deve-se em
grande medida ao rápido progresso da funcionalidade e do desempenho
das redes de dados e dos equipamentos servidores. No entanto,
acontecimentos recentes que afetaram infraestruturas de cloud
demonstraram que estas são ainda demasiado vulneráveis e imaturas para
suportar serviços críticos.
Neste contexto, surge naturalmente o problema da confiança depositada
no "cloud provider", isto é, na entidade que gere a infraestrutura
onde as aplicações são executadas. Um problema muito específico
coloca-se às aplicações distribuídas, porque qualquer erro que ocorra
na computação tende a propagar-se a várias máquinas tendo assim um
enorme impacto potencial.
Objetivo
As falhas que ocorrem em computação distribuída podem manifestar-se de
diferentes formas, desde o simples crash, até outras manifestações
arbitrárias mais perniciosas, tais como a terminação da conexão,
respostas erradas ou corrupção de dados, por exemplo.
Podemos afirmar que dentro da categoria das avarias arbitrárias há uma
vasta gama de cenários possíveis, que, dependendo das aplicações,
podem ter maior ou menor gravidade. O problema que queremos abordar
neste estágio passa por reduzir o custo de tolerar este tipo de
falhas, que na sua solução geral envolvem a utilização de pelo menos 4
réplicas.
Se aceitarmos a possibilidade de corrigir apenas algumas classes de
falhas será possível usar formas de redundância mais ligeiras. Por
exemplo, nalguns casos é suficiente usar duas réplicas para detetar a
existência de um problema; noutros é suficiente a criação de
redundância nas respostas dadas pelo servidor. Embora menos genéricas,
estas soluções podem ser suficientes para algumas aplicações, sendo
muito mais económicas em termos de utilização de recursos.
Assim, o que pretendemos neste estágio é medir os custos de desempenho
e de implementação de várias soluções possíveis para tolerar falhas
arbitrárias.
Plano de Trabalhos - Semestre 1
- Estudo do estado da arte e das soluções atualmente existentes (mês 1).
A primeira fase consistirá em tomar contacto com as tecnologias e com
as soluções atualmente existentes para proteção de aplicações
distribuídas.
- Criação de ambiente cloud para testes e avaliações (meses 2 a 4).
Esta tarefa consiste na construção de um ambiente de testes de
aplicações distribuídas, em tudo semelhante ao que se encontra na
cloud.
- Escrita do relatório intermédio (mês 5).
Dever-se-á apresentar as tarefas efectuadas durante o primeiro
semestre e descrever o trabalho a realizar no segundo semestre,
escrevendo para esse efeito um relatório intermédio e preparando uma
apresentação pública para discussão.
Plano de Trabalhos - Semestre 2
- Desenho de uma solução (meses 6 e 7).
Nesta tarefa o estagiário irá implementar uma solução diferente que
utilize outro tipo de base de dados.
- Implementação e avaliação da solução desenvolvida (meses 8 e 9).
Esta tarefa consiste em aplicar o trabalho anterior na cloud, de forma
a possibilitar uma comparação aprofundada com a solução relacional
desenvolvida no primeiro semestre.
- Escrita do relatório final (mês 10).
O estagiário deve apresentar todo o trabalho levado a cabo no decorrer
do estágio. Para tal, deverá escrever uma tese descrevendo o problema
e a sua solução, bem como preparar a sua apresentação e discussão
pública.
Condições
O trabalho irá ser realizado no Departamento de Engenharia Informática
da Universidade de Coimbra e irá ser aberta uma candidatura a uma
bolsa para estagiário com Licenciatura (745€ mensais) que poderá
apoiar os trabalhos do segundo semestre.
Observações
Dar-se-á preferência a alunos que tenham tido um bom desempenho às disciplinas no âmbito do trabalho proposto (nomeadamente Sistemas Distribuídos, Sistemas Operativos e Integração de Sistemas).
Orientador
Filipe Araújo & Raul Barbosa
filipius@uc.pt 📩