Titulo Estágio
CI/CD pipelines para arquiteturas baseadas em micro-serviços
Áreas de especialidade
Comunicações, Serviços e Infraestruturas
Engenharia de Software
Local do Estágio
O escritório da WIT em Taveiro ou outro a definir com o aluno. Neste momento estamos remote.
Enquadramento
Nos últimos anos, temos assistido a uma tendência das organizações moveram as suas infraestruturas aplicacionais para ambientes Cloud.
As plataformas Cloud disponibilizam um conjunto de serviços flexíveis que permitem a instalação e disponibilização de software de forma segura e eficiente, seguindo todas as boas práticas de DevOps e simplificando a criação e manutenção da infraestrutura, automação de pipelines de desenvolvimento, lançamento de novas versões de software e monitorização da performance das aplicações e da própria infraestrutura.
Uma cultura DevOps e adoção de pipelines de desenvolvimento com Contínuos Integration e Continuous Delivery (CI/CD) pode trazer grandes benefícios para uma organização reduzindo substancialmente o time-to-market das suas aplicações.
Existem múltiplas estratégias e ferramentas disponíveis pelo que encontrar a estratégia certa de CI/CD para cada solução pode ser uma tarefa muito complexa.
Este estágio consiste na prototipagem de uma pipeline de desenvolvimento com CI/CD de um sistema cloud-native com uma arquitetura baseada em micro-serviços para múltiplos ambientes: integração, staging e produção. A pipeline deve incluir a criação completa da própria infraestrutura de modo a permitir implementar diferentes estratégias de deployment para garantir uma atualização completa sem qualquer downtime ou quebra de serviço.
Deve fazer parte da pipeline a criação da infraestrutura, testes automáticos, validações de segurança, testes a diferentes estratégias de deployment e deployment desde desenvolvimento ate produção com rollback automático em caso de erro.
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: [url=https://www.youtube.com/watch?v=Mt9sCqvJx9U]https://www.youtube.com/watch?v=Mt9sCqvJx9U[/url]
Objetivo
O objetivo do estágio consiste no desenvolvimento de um protótipo de uma pipeline de Contínuos Integration e Continuous Delivery (CI/CD) para um sistema cloud-native com uma arquitetura baseada em micro-serviços.
A pipeline deve ser totalmente automatizada e deve ser o mais genérica possível de forma a poder ser reutilizada para implementação de uma Framework que possa ser utilizada por outros sistemas na organização. A própria pipeline deve ser configurada por script.
A pipeline deve permitir criar e eliminar ambientes, incluíndo a respetiva infraestrutura, tirando partido dos serviços Cloud como Infraestruture as Code. Toda a infraestrutura tem de ficar funcional sem necessidade de intervenção manual. Alguns destes ambientes serão utilizados para garantir um deployment em poucos minutos de patchs e pequenas alterações e serão criados para validação das alterações com testes automáticos. No final o ambiente é eliminado e o deployment efetuado em produção.
Devem também fazer parte da pipeline diferentes ambientes com objetivos diferentes: ambientes de integração, ambientes de staging e ambiente de produção. Também estes ambientes devem ser totalmente automatizados e criados por script.
Múltiplas estratégias de deployment devem estar disponíveis como configuração:
-Phased Rollout;
-Blue Green Deployments;
-Canary Releases.
As atualizações devem ser efetuadas sem qualquer downtime ou quebra de serviço.
A pipeline deve incluir testes automáticos que comprovem a correto funcionamento da aplicação durante o deployment, incluindo testes à própria estratégia de deployment. Em caso de erro a pipeline deve garantir o rollback completo da atualização (incluindo base de dados).
A pipeline deve ir até produção.
Deve ainda ser configurada a monitorização necessária para confirmar o sucesso da atualização em produção.
Este trabalho deverá ser possível de atingir através da implementação dos seguintes componentes:
-Desenvolvimento de scripts para criação e configuração da infraestrutura;
-Adaptação do sistema para tirar partido de todas as potencialidades de uma pipeline CI/CD;
-Criação dos ambientes de integração, staging e produção;
-Configuração das pipelines de CI/CD até produção;
-Configuração de monitorização necessária para garantir a validação das alterações;
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. Esta informação deverá ser depois aplicada no desenvolvimento do protótipo.
Segue-se a análise de requisitos do projeto, a criação de um plano de desenvolvimento e a definição de um “backlog” com as funcionalidades desejadas. O desenvolvimento deverá ser feito de forma iterativa usando um processo ágil.
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;
• Aquisição de conhecimentos nas tecnologias envolvidas: sistemas cloud-native distribuídos;
• Familiarização com o sistema existente na empresa que será integrado na pipeline CI/CD;
• Estudo comparativo entre serviços disponibilizados pelo fornecedor Cloud ou a ferramentas externas;
• Identificação e seleção das ferramentas e tecnologias que melhor se adequam à solução proposta;
• Identificação das alterações necessárias ao processo de desenvolvimento para implementação da pipeline;
• Identificação dos requisitos necessários do sistema para adaptação à pipeline;
• Documentação intermédia do estágio.
Plano de Trabalhos - Semestre 2
Para o 2º semestre estão planeadas as seguintes tarefas:
• Instalação e configuração de um orquestrador de criação da infraestrutura;
• Instalação e configuração das ferramentas necessárias para implementação da pipeline;
• Adaptação do sistema para ser integrado na pipeline;
• Desenvolvimento dos scripts necessários para criação da infraestrutura;
• Criação e configuração da pipeline;
• Configuração da monitorização necessária para garantir a validação das alterações;
• Preparação do protótipo para demonstrações;
• Documentação final de estágio.
Condições
O local de trabalho será no escritório da WIT Software em Taveiro ou noutro local definido entre o aluno e a empresa uma vez que a WIT tem centros de desenvolvimento no Porto, Aveiro, Coimbra, Leiria e Lisboa. Neste momento encontramo-nos a trabalhar remotamente.
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 inclui tópicos como: iOS Programming, Android Programming, Arquitecturas de Software, Software Quality, Metodologias de Desenvolvimento de Software).
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 DevOps e pipelines de CI/CD de sistemas distribuídos na Cloud.
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 de desenvolvimento.
Observações
- Toda a documentação de projecto será em Inglês.
- Será usado SCRUM, como metodologia de desenvolvimento.
- 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 📩