Em resumo, o Álibi Perfeito é um projeto divertido e técnico que gera desculpas engraçadas para diversas situações. Surgiu na busca por uma ideia de aplicação simples, mas que fosse construída com uma arquitetura em micro serviços. O objetivo foi adquirir aprendizado prático no desenvolvimento utilizando Programação Orientada a Objetos (POO), aplicando conceitos básicos de segurança como autenticação baseada em tokens JWT entre as APIs, e ainda colocar em prática os conceitos de DevOps, com pipelines de CI/CD.
Escolhi o ASP.NET Core para o backend e o Angular para o frontend, sendo tecnologias modernas e robustas, alinhadas com o paradigma de Programação Orientada a Objetos, que permitiu criar uma aplicação dividida em micro serviços, garantindo maior flexibilidade e escalabilidade. Os principais micro serviços são:
Um micro serviço dedicado para geração de desculpas para usuários não logados.
Um CRUD voltado para o administrador do sistema, permitindo o cadastro e gerenciamento de desculpas e categorias.
Keycloak, configurado como um micro serviço separado para autenticação e autorização de usuários e micro serviços.
Front End, front em Angular.
Seguindo as boas práticas a integração contínua (CI) foi separada do deploy contínuo (CD) garantindo que cada parte do processo fosse tratada de forma específica. Para o CI, escolhi o GitHub Actions, criando pipelines reutilizáveis que podem ser facilmente aplicadas a qualquer micro serviço, mantendo tudo mais organizado e eficiente. Já para o CD, o ArgoCD fica responsável pelo deploy, já que ele permite uma abordagem declarativa, garantindo que os deploys estejam sempre versionados no repositório facilitando o controle das versões e ambientes.
Esse modelo, além de ser uma boa prática, ajuda a manter a flexibilidade e a consistência durante o ciclo de vida da aplicação, sem perder o controle.
ASP.NET Core: Backend.
Keycloak: Utilizado para gerenciar autenticação e autorização das APIs..
Ocelot: Configurado como o API Gateway.
K3S: Cluster Kubernetes para orquestrar todos os containers.
Postgres: Banco de dados externo.
GitHub: Repositório de códigos.
GitHub Actions: Pipelines de CI/CD.
ArgoCD: Deploy dentro do cluster Kubernetes.
Implementação prática de arquitetura de micro serviços utilizando ASP.NET Core.
Integração de autenticação federada com Keycloak.
Geração e validação de JWTs em sistemas distribuídos com o Keycloak.
Boas práticas de Programação Orientada a Objetos (POO) aplicadas a serviços independentes.
Gestão de containers e comunicação entre serviços utilizando K3s como cluster Kubernetes.
Criação de pipelines de CI/CD no GitHub Actions, automatizando o processo de integração e deploy contínuo.
Desenvolvimento do front-end com Angular, consumindo as APIs e integrando com os micro serviços.
Utilização do Entity Framework para simplificar a comunicação com o banco de dados.
Acrescentar DevSecOps com ferramentas de DAST e SAST.