DEV 404

Alibi Perfeito: sistema de geração de desculpas

Rodrigo Azevedo
· 📃1 min read
Sobre o projeto

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.

  • API Gateway, centralizando o acesso aos serviços e validando e gerando tokens de autenticação interagindo com o keycloak.
CI/CD: Integração Contínua e Deploy Contínuo

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.

Leia mais sobre como configurei o CI/CD no meu projeto.

Tecnologias Utilizadas
  • 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.

  • Angular: Front End.
Principais Aprendizados
  • 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.

Próximos Passos
  • Criar observabilidade com Prometheus, Grafana e Jaeger para métricas,alertas e tracing.
  • Acrescentar DevSecOps com ferramentas de DAST e SAST.