O projeto restapi-flask é uma iniciativa que visa aplicar e consolidar os conhecimentos adquiridos ao longo de estudos prévios. Buscamos não apenas praticar os conceitos aprendidos, mas também desenvolver habilidades práticas na construção e implantação de uma API REST utilizando Flask.
Este projeto representa uma oportunidade para colocar em prática os aprendizados acumulados ao longo do tempo dedicado aos estudos, visando não só a compreensão teórica, mas também a aplicação prática dos conceitos em um contexto real de desenvolvimento de software.
Objetivos do projeto:
-
Construir uma REST API com três rotas (endpoints):
- /users para retornar todos os usuários (GET)
- /user/ para retornar um usuário específico (GET)
- /user para registrar um novo usuário (POST)
-
Persistir dados em um Banco de Dados.
-
Configurar a aplicação para rodar dentro de um Docker container (Dockerfile).
-
Criar um docker-compose para compor a API juntamente com o banco de dados (ambiente de desenvolvimento).
-
Escrever testes unitários para as rotas.
-
Utilizar um Makefile para automatizar os passos mais comuns.
-
Fazer o deploy da aplicação em alguma plataforma de PaaS (Heroku).
-
Criar uma pipeline de CI/CD utilizando alguma ferramenta “as a service” (GitHub Actions, Azure DevOps, etc…).
Importante instalar:
- Docker
- Python
Seguindo a evolução natural do nosso projeto, vamos adaptar o projeto como um todo, desde o código, pipeline e deploy para rodar dentro do Kubernetes.
Cursos requisitos:
Kubernetes: Do Básico ao Avançado (mínimo até o módulo 13).
Terraform para AWS
Ferramentas requisitos:
Helm
Terraform
Vagrant
Ansible
PS: O projeto completo estará em anexo nesta aula quando finalizar as gravações... Ainda está em fase de gravação 🙂
Neste segundo módulo eu proponho o seguinte:
Melhorar a API adicionando mais 2 rotas (endpoints)
/user/<cpf> (DELETE) para deletar um usuário do banco de dados.
/user (PATCH) para atualizar um usuário existente.
Criar um endpoint para health check que teste efetivamente a conexão com o banco de dados. O objetivo é que o nosso pod não receba tráfego enquanto o banco não estiver respondendo.
Adicionar novas estratégias para garantir a qualidade de código e também da perspectiva de segurança.
Construir um cluster local (na sua própria máquina) utilizando ferramentas como Kind, Minikube, K3s.
Criar manifestos Kubernetes para fazer o deploy da aplicação.
Adaptar o Makefile para deployar no cluster de desenvolvimento criado no passo 2.
Evoluir os manifestos de forma empacotada usando um Helm Chart.
Construir um cluster EKS na AWS utilizando Terraform.
Adaptar o Makefile para deployar no EKS.
Criar uma estratégia de deployment com o mínimo possível de erros.
Evoluir a pipeline no GitHub Actions adicionando os novos testes e deployando no EKS.