Titulo Estágio
Robustez de Aplicações na Cloud
Áreas de especialidade
Engenharia de Software
Local do Estágio
DEI-FCTUC
Enquadramento
A Computação na Nuvem fornece recursos elásticos a organizações, permitindo que disponibilizem aplicações pela Internet, reduzindo os custos com infraestruturas físicas. Estas vantagens levaram a uma adopção em massa de Computação na Nuvem. Muitas organizações estão já a seguir uma estratégia de nuvem como primeira opção e muitas outras estão a considerar a migração na próxima década, sendo uma área de intensa atividade industrial e académica.
Cloud computing (designação na língua inglesa) é cada vez mais o paradigma adotado pelas organizações, que pretendem reduzir os custos associados às infraestruturas informáticas. Apesar dos inúmeros benefícios, a fiabilidade e a segurança destas plataformas não tem acompanhado as necessidades, sendo que as organizações confiam as suas aplicações a sistemas virtualizados com a gestão feita remotamente.
Neste contexto, surge a questão da confiança depositada na entidade que gere a plataforma Cloud. Qualquer organização que coloque uma aplicação na cloud (por exemplo, no EC2 da Amazon, Azure da Microsoft, Digital Ocean ou OpenShift) terá de aceitar as garantias dadas pela operadora escolhida. O fornecedor do serviço computacional faz uso de virtualização para gerir e repartir o poder computacional em função das necessidades reais da aplicação, cabendo ao software responder corretamente em casos de avaria.
Objetivo
O objetivo desta dissertação é desenvolver e melhorar uma ferramenta existente para avaliação de confiabilidade. A ferramenta, denominada ucXception, é um projeto de código aberto desenvolvido no nosso departamento e que tem sido usado numa variedade de trabalhos para avaliar sistemas de computação em nuvem virtualizados, linguagens de programação e bibliotecas de middleware REST. Em geral, o ucXception pode ser aplicado a qualquer sistema baseado em Linux e opera por meio da execução de campanhas de injeção de falhas onde erros que emulam falhas de hardware e bugs de software são inseridos no sistema de destino, criando assim cenários onde as aplicações são afetadas por essas falhas e permitindo aos utilizadores estudarem como o sistema se comporta. Esta dissertação tem como objetivo global tornar a ferramenta existente mais fácil de utilizar. Em detalhe, pretende-se:
- Melhorar a usabilidade da ferramenta ucXception, para que um público mais amplo possa utilizá-la, ainda que não sejam especialistas na área. Esta etapa pode envolver o desenvolvimento de interfaces para o utilizador configurar as campanhas de injeção de falhas ou monitorizar o estado das campanhas em execução;
- Disponibilizar o ucXception usando uma tecnologia de containerização bem conhecida. Esta etapa pode envolver o desenvolvimento de uma imagem Docker contendo a estrutura, que pode então ser disponibilizada para que qualquer pessoa possa configurá-la de forma fácil e rápida no(s) seu(s) sistema;
- Investigar técnicas para acelerar o processo de injeção de falhas. Uma possível abordagem consiste em avaliar se a injeção de avarias (de alto nível) pode produzir resultados igualmente precisos e representativos quanto os obtidos com a injeção de falhas (de baixo nível). Se essa hipótese for verificada, o uso de injeção de falha levará a campanhas mais rápidas, sendo algo que se pode traduzir numa melhoria da ferramenta.
Plano de Trabalhos - Semestre 1
- Estudo do estado da arte e levantamento de requisitos (mês 1).
A primeira fase consistirá em tomar contacto com tecnologias de virtualização e aplicações para a cloud, bem como a familiarização com os desafios de segurança e confiabilidade acima referidos. Isto resultará numa clara formulação dos objectivos a alcançar por parte do orientando.
- Construção do ambiente cloud para testes (meses 2 a 4).
Esta tarefa consiste na instalação configuração de uma plataforma de virtualização que permitirá realizar os testes para avaliar a sua robustez. Existe já um ambiente desenvolvido, que consiste na combinação de Xen com CentOS. Partindo desse ambiente, é necessário escolher e instalar as aplicações que serão usadas para testes (workloads) assim como a instalação e familiarização com a ferramenta ucXception.
- Primeira fase de integração de ferramentas de avaliação (meses 2 a 4).
Durante o primeiro semestre, pretende-se que a ferramenta de avaliação de robustez seja capaz de introduzir falhas em cenários simples executando numa única máquina. Tal dará o contexto necessário para iniciar o desenvolvimento de uma versão containerizada do ucXception, sendo uma possibilidade o desenvolvimento de uma imagem Docker para o efeito.
- Escrita do relatório intermédio (mês 5).
O orientando deve apresentar as tarefas efetuadas 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. O estado da arte, estudado na primeira tarefa do planeamento, deverá ficar especialmente cuidado no que toca às inovações propostas para desenvolvimento.
Plano de Trabalhos - Semestre 2
- Desenho e implementação das interfaces de avaliação (meses 6 e 7).
Nesta tarefa o orientando irá desenhar e implementar as interfaces que irão melhorar a usabilidade da ferramenta ucXception, por forma a torná-la mais facilmente usável por uma audiência mais abrangente e menos especializada. Para tal, a containerização da ferramenta ucXception (meses 2 a 4) deverá estar concluída, deverá considerar cenários aplicações distribuídos por múltiplas máquinas, e pretende-se construir as interfaces para que o utilizador possa configurar e executar campanhas de injeção de falhas.
- Avaliação das técnicas desenvolvidas (meses 8 e 9).
Esta tarefa consiste na avaliação dos desenvolvimentos efetuados na ferramenta ucXception. Para tal, pretende-se utilizar a ferramenta para realizar duas experiências distintas e comparar os resultados. Em particular, ir-se-á avaliar se a injeção de avarias (de alto nível) pode produzir resultados igualmente precisos e representativos quanto os obtidos com a injeção de falhas (de baixo nível). Assim, pretende-se verificar experimentalmente se esta hipótese é válida. Caso assim seja, pode-se efetuar melhorias na ferramenta, relativamente ao processo de injeção de falhas.
- Escrita do relatório final (mês 10).
O orientando deve apresentar todo o trabalho levado a cabo no decorrer da dissertação. 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, no contexto de um projeto de investigação, e será disponibilizado um posto de trabalho nos laboratórios do DEI bem como acesso a recursos computacionais para a execução das experiências.
Será aberta uma bolsa de investigação para licendiado/a à qual o/a Estudante se poderá candidatar para apoiar os trabalhos a tempo inteiro.
Observações
Este trabalho insere-se no contexto de um projeto de investigação e haverá a possibilidade de experiência de colaboração com universidades parceiras da UC.
Orientador
Raul Barbosa
rbarbosa@dei.uc.pt 📩