Titulo Estágio
Aplicações Robustas na Cloud
Áreas de especialidade
Engenharia de Software
Local do Estágio
Departamento de Engenharia Informática
Enquadramento
"Cloud computing" é 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.
Este estágio aborda o desafio de assegurar a robustez do software (aplicações e serviços) na cloud. 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
Este estágio tem dois objetivos fundamentais:
- Integração de ferramentas existentes de avaliação da robustez, por forma a realizar testes em máquinas virtuais.
- Desenho e implementação de mecanismos apropriados para assegurar a robustez de aplicações virtualizadas em ambientes cloud.
O ambiente de testes será composto por um conjunto de máquinas virtuais, fazendo uso de Linux (por exemplo, Citrix ou CentOS) e uma plataforma de virtualização (por exemplo, Xen ou VMWare). Por forma a testar o sistema, pretende-se integrar um conjunto de ferramentas capazes de introduzir falhas e avaliar a resposta do sistema a essas mesmas falhas. Existe presentemente uma ferramenta para avaliar a robustez de sistemas virtualizados, e o primeiro objetivo será a instalação e integração dessa mesma ferramenta no ambiente de testes.
Por forma a concretizar o segundo objetivo, neste estágio ir-se-á tirar partido de vasta literatura existente sobre a robustez de aplicações e serviços. Após uma primeira fase de análise dos problemas mais comuns (ainda parte do primeiro objetivo) pretende-se escolher as técnicas de proteção mais adequadas. Estas técnicas serão implementadas e avaliadas. No final, o relatório de estágio irá descrever as melhorias obtidas na robustez de software que executa na cloud, sujeito tanto a falhas de software como de hardware.
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 estagiário.
- 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.
- 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 muito simples, simulando falhas de hardware. Esta primeira fase permitirá obter um conjunto de resultados para guiar o desenvolvimento de mecanismos de proteção.
- Escrita do relatório intermédio (mês 5).
O estagiário deve 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. O estado da arte, estudado na primeira tarefa do planeamento, deverá ficar especialmente cuidado no que toca aos mecanismos de proteção a introduzir nas aplicações.
Plano de Trabalhos - Semestre 2
- Desenho e implementação de mecanismos de robustez (meses 6 e 7).
Nesta tarefa o estagiário irá desenhar e implementar as primitivas que permitirão às aplicações cloud serem mais robustas. Considerar-se-á tanto falhas de hardware como de software.
- Avaliação dos mecanismos desenvolvidos (meses 8 e 9).
Esta tarefa consiste na avaliação dos mecanismos desenvolvidos para aumentar a robustez de aplicações cloud. Para tal, far-se-á uso das ferramentas de avaliação analisadas e integradas durante o primeiro semestre. Pretende-se determinar o aumento de proteção fornecido pelos mecanismos desenvolvidos durante os meses 6 e 7.
- 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, em parceria com a Fiercely (http://www.fiercely.pt), e todo o equipamento informático necessário para a realização dos testes, incluindo equipamento com suporte de virtualização, será disponibilizado. O/A estagiário/a terá acesso a um posto de trabalho nos laboratórios de investigação.
Estão em curso candidaturas a projetos que, caso venham a ser aprovadas, levarão à abertura de uma bolsa de investigação, a qual poderá apoiar o trabalho realizado.
Sendo este projeto realizado em parceria com a Fiercely (http://www.fiercely.pt), haverá também um posto de trabalho no IPN destinado ao acompanhamento de tarefas por parte da empresa.
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 disciplinas do Mestrado relacionadas com a área do estágio).
Orientador
Raul Barbosa
rbarbosa@dei.uc.pt 📩