Propostas Submetidas

DEI - FCTUC
Gerado a 2024-04-23 20:53:49 (Europe/Lisbon).
Voltar

Titulo Estágio

Engenharia do Caos em Sistemas Distribuídos

Áreas de especialidade

Engenharia de Software

Sistemas de Informação

Local do Estágio

Remote / Presencial (a empresa tem escritórios em Coimbra, Aveiro, Porto, Leiria, Lisboa, Belmonte)

Enquadramento

Nos últimos anos, temos assistido a uma tendência das organizações moveram os seus produtos para ambientes Cloud apostando cada vez mais em arquiteturas distribuídas. Este tipo de arquiteturas traz grandes vantagens para o desenvolvimento de sistemas de grande escala e altamente disponíveis, no entanto os sistemas distribuídos aumentam a complexidade de lidar com falhas inesperadas devido ao número elevado de componentes, sendo particularmente complexo garantir um sistema tolerante a falhas. Resiliência é a capacidade de um sistema recuperar de falhas e continuar a funcionar não se limitando apenas a evitar falhas, mas a responder de forma a evitar quebras de serviço e/ou perda de dados.  Solucionar falhas antes de elas causarem impacto nos utilizadores e no negócio é um desafio muito complexo, porque torna-se necessário perceber como cada sistema se comporta e reage perante determinadas falhas. É com esse objetivo que a Engenharia do Caos (ou Chaos Engineering, em inglês) se popularizou como um método utilizado entre as empresas mais inovadoras do mundo. A Engenharia do Caos é uma disciplina inovadora que visa aumentar a resiliência dos sistemas e a sua capacidade de reagir a falhas. A Engenharia do Caos é uma abordagem proactiva que tem como objetivo testar a resiliência dos sistemas ao realizar testes ou experiências que introduzem falhas simulando condições reais. Os resultados destas experiências ajudam na implementação de soluções para tornar os sistemas mais resilientes. Este estágio tem como objetivo aplicar esta abordagem num sistema distribuído cloud-native para melhorar a sua resiliência. Esta abordagem vai permitir identificar e estabelecer uma estratégia para resolver proactivamente os problemas e limitações existentes no sistema, tornando o sistema mais resiliente. Sobre a Empresa: A WIT tem 20 anos de experiência na área das telecomunicações e é uma empresa francamente exportadora. Prova disso é o facto do software que desenvolve já ter sido exportado para 46 países. Todos estes projectos foram desenvolvidos com uma metodologia muito forte de software, sempre com requisitos de alta-disponibilidade, segurança, performance, escalabilidade e especial cuidado com a user-experience. A empresa conta com os seguintes clientes: Grupo Vodafone, Deutsche Telekom, NTT DoCoMo, KDDI, Softbank, AT&T, Verizon, Safaricom, Vodacom, Unitel, entre outros. Na WIT somos Groundbreakers e procuramos, todos os dias, desafiar o status quo fazendo mais e diferente, sempre com o objectivo de sermos cada vez melhores.  Descobre aqui se também tu podes ser um groundbreaker:https://www.youtube.com/watch?v=Mt9sCqvJx9U 

Objetivo

O objetivo do estágio consiste no desenvolvimento de um protótipo para testar e melhorar a resiliência de uma aplicação recorrendo à disciplina de Engenharia do Caos. O estagiário deve familiarizar-se com os princípios da Engenharia do Caos e com as várias frameworks disponíveis na indústria para aplicar essa abordagem. Posteriormente o estagiário deve ambientar-se com o sistema onde estes testes vão ser executados para perceber como o sistema funciona e medir qual o seu comportamento normal. Após a fase de ambientação inicial deve-se aplicar o seguinte método:Formular uma hipótese;Medir o comportamento base do sistema;Injetar uma falha recorrendo a frameworks existentes ou desenvolvendo aplicações à medida;Monitorizar o comportamento resultante;Documentar o processo e observações;Sugerir e/ou implementar melhorias no próprio sistema (quando possível) para o tornar mais resiliente. Ao realizar experiências de injeção de falhas, o estagiário deve confirmar se a monitorização está em vigor é eficaz, adicionando melhorias sempre que necessário. As experiências podem recorrer a frameworks já existentes como Simian Army ou Litmus Chaos, ou a aplicações desenvolvidas à medida. No final todos testes devem estar devidamente automatizados de forma a poder executa-los tantas vezes quanto necessário. O protótipo deve permitir executar um ou múltiplos testes em simultâneo. Espera-se que o aluno tenha a autonomia e capacidade crítica necessárias para recolher, analisar e estruturar toda a informação acerca de soluções existentes no mercado para aplicar os princípios da disciplina. Esta informação deverá ser depois aplicada no desenvolvimento do protótipo. O desenvolvimento do protótipo deverá ser feito de forma iterativa usando um processo ágil, baseado em SCRUM. No final do estágio, deverá existir um protótipo funcional, que seja facilmente demonstrável e que mostre bem os conceitos explorados durante o estágio.

Plano de Trabalhos - Semestre 1

Para o 1º semestre estão planeadas as seguintes tarefas:Levantamento do estado da arte e familiarização com a disciplina Engenharia do Caos;Estudo das diferentes abordagens e metodologias para implementar esta abordagem;Estudo das várias frameworks existentes no mercado;Familiarização com o sistema sob o qual os testes serão executados;Definição das experiências que vão ser executados para provocar falhas no sistema (introduzir Caos);Definir qual o estado normal do sistema através de analise de critérios de aceitação;Identificação das alterações necessárias ao sistema para adaptação às ferramentas selecionadas;Documentação intermédia do estágio. 

Plano de Trabalhos - Semestre 2

Para o 2º semestre estão planeadas as seguintes tarefas:Desenvolvimento e implementação das ferramentas e scripts necessários para injetar falhas;Adaptação do sistema para garantir monitorização do sistema durante a execução das experiências;Execução dos testes/experiências para gerar Caos;Identificar soluções e melhorias para garantir a resiliência do sistema;Implementar melhorias;Preparação do protótipo para demonstrações;Documentação final de estágio. 

Condições

O aluno terá ao seu dispor os equipamentos necessários para desempenhar as suas tarefas. O estágio é remunerado. Se o desempenho do aluno ao longo do mês for positivo, terá direito a receber uma bolsa mensal. Além da bolsa, o aluno terá acesso às formações da WIT Academy (que incluir tópicos como: iOS Programming, Android Programming, Arquitecturas de Software, Software Quality, Metodologias de Desenvolvimento de Software, DevSecOps). O aluno será acompanhado não só pelo orientador como por um tutor técnico que lhe dará todo o apoio necessário. No final do estágio, o aluno terá conhecimento detalhado sobre a Engenharia de Resiliência e sobre a disciplina inovadora Engenharia do Caos. No final do estágio, será feita uma avaliação do estagiário e dos conhecimentos adquiridos. Se o resultado for positivo o estagiário será convidado para fazer parte da equipa. 

Observações

- A documentação de projecto deverá ser preferencialmente em Inglês-Serão usadas metodologias de desenvolvimento ágeis.-Existe um Tutor e um Orientador. O Orientador define os requisitos do estágio, define as prioridades do Backlog e acompanha os resultados parciais do projecto. O Tutor garante o cumprimento das tarefas, promove as meetings e acompanha o aluno com mais regularidade 

Orientador

Rui Cunha
rui.cunha@wit-software.com 📩