O EventFlow API é uma solução de back-end robusta, escalável e orientada a produção para gestão de eventos, desenvolvida em .NET 8 e estruturada segundo os princípios da Clean Architecture.
Diferente de APIs tradicionais voltadas apenas a CRUD, este projeto foca fortemente em Observabilidade, Performance e Resiliência, simulando um ambiente real de produção com tracing distribuído, logs estruturados e estratégias de cache.
O projeto foi refatorado para suportar alta carga, baixo acoplamento e manutenibilidade a longo prazo.
graph TD
Client[Cliente / Swagger] -->|HTTP Request| API[EventFlow API]
subgraph "Observability Layer"
API -.->|Logs| Seq[Seq Dashboard]
API -.->|Traces| Jaeger[Jaeger UI]
end
subgraph "Data & Performance"
API <-->|Cache-Aside| Redis[Redis Cache]
API <-->|EF Core| SQL[SQL Server]
end
- Redis (Cache-Aside Pattern): Implementação estratégica de cache distribuído para reduzir a carga no banco de dados.
- Latência Otimizada: Redução significativa no tempo de resposta em operações de leitura (ex:
GetById). - Consistência: Estratégias de invalidação de cache (TTL e remoção ativa) para garantir a integridade dos dados.
A aplicação foi projetada para não ser uma "caixa preta" em produção:
- Tracing Distribuído (OpenTelemetry + Jaeger): Rastreamento ponta-a-ponta (End-to-End) das requisições, permitindo identificar gargalos exatos entre API, Cache e SQL Server.
- Logs Estruturados (Serilog + Seq): Centralização de logs com enriquecimento de dados, facilitando diagnósticos rápidos em ambiente containerizado.
- Políticas de Retry: Resiliência a falhas transientes na conexão com o banco de dados e serviços externos.
- Health Checks: Monitoramento da saúde dos contêineres e dependências.
Ambiente de desenvolvimento totalmente orquestrado via Docker Compose, subindo instantaneamente:
API (.NET 8)SQL ServerRedisJaeger UI(Tracing)Seq(Logging)
- Modern C#: Uso de Primary Constructors e Records.
- Clean Architecture: Separação estrita de responsabilidades.
- DI Otimizada: Uso de Extension Methods para manter a configuração de injeção de dependência limpa e organizada.
| Categoria | Tecnologias |
|---|---|
| Core | .NET 8, C# 12 |
| Arquitetura | Clean Architecture, RESTful, Dependency Injection |
| Banco de Dados | SQL Server 2022, Entity Framework Core 8 |
| Performance | Redis (StackExchange.Redis), Microsoft.Extensions.Caching |
| Observabilidade | OpenTelemetry, Jaeger, Serilog, Seq |
| Documentação | Swagger / OpenAPI (com suporte a Auth) |
| Qualidade | xUnit, Moq, FluentAssertions, FluentValidation |
| DevOps | Docker, Docker Compose |
A forma mais simples e profissional de executar o EventFlow API é utilizando Docker, que sobe toda a infraestrutura necessária automaticamente.
- Docker Desktop instalado.
git clone https://github.com/alysonsz/eventflow-api.git
cd eventflow-apidocker-compose up -d --buildAguarde alguns segundos até que todos os containers estejam prontos.
| Serviço | URL | Descrição | Credenciais (se houver) |
|---|---|---|---|
| Swagger | http://localhost:8079/swagger | Documentação e testes da API | - |
| Jaeger UI | http://localhost:16686 | Tracing e análise de performance | - |
| Seq Logs | http://localhost:5341 | Logs estruturados em tempo real | User: admin Pass: MyStrongPassword123! |
- Acesse o Swagger
- Execute
GET /event/{id}(primeira chamada → SQL Server) - Execute a mesma requisição novamente
Resultado:
- A segunda resposta ocorre em milissegundos, pois vem do Redis
Vá até o Jaeger UI e compare os spans das duas requisições.
EventFlow API
├── 📁 EventFlow.Core # Domínio (Entidades, Interfaces, DTOs)
├── 📁 EventFlow.Application # Regras de Negócio (Services, Validations, Cache Logic)
├── 📁 EventFlow.Infrastructure # Acesso a Dados (EF Core, Repositories, Migrations)
├── 📁 EventFlow.Presentation # API (Controllers, Docker, DI Setup)
└── 📁 EventFlow.Tests # Testes Unitários (xUnit)
A API utiliza JWT (JSON Web Token).
- Crie uma conta em:
POST /authentication/register - Faça login em:
POST /authentication/login - Copie o token retornado
- No Swagger, clique em Authorize e informe:
SEU_TOKEN
Desenvolvido por Alyson Souza Carregosa
Focado em Engenharia de Software de Alta Performance, Arquitetura e Sistemas Observáveis.
Este projeto está licenciado sob a MIT License.