English version 🇺🇸
A scalable digital games platform, developed throughout the Tech Challenges of the FIAP Postgraduate Program in .NET Software Architecture.
✨ Project Evolution • 🧠 Key Technologies & Concepts • 🚀 How to Use
This project was developed in three distinct phases, reflecting the evolution from a simple MVP to a complex, distributed, and cloud-native architecture.
The initial goal was to build the core of the platform. We developed a monolithic API in .NET 8 that included essential functionalities such as user registration and authentication with JWT. We applied Domain-Driven Design (DDD) principles and created a solid foundation with unit tests to ensure software quality from the start.
With the MVP validated, the focus shifted to operational efficiency and scalability. The monolithic application was containerized using Docker. We implemented CI/CD pipelines to automate the testing and deployment processes, publishing the application to a cloud environment (AWS/Azure). We also integrated a monitoring stack to ensure the platform's reliability and performance.
In the final phase, we evolved the architecture to a microservices model to increase modularity and resilience. The monolith was decomposed into independent services (Users, Games, Payments). We implemented Elasticsearch for advanced game searches and adopted serverless functions for asynchronous processes, all managed through an API Gateway, resulting in a robust and modern distributed system.
- Backend: .NET 8 (Minimal APIs / MVC)
- Architecture: Monolith (Phases 1-2) ➔ Microservices (Phase 3), Domain-Driven Design (DDD), Event Sourcing
- Data Persistence: Entity Framework Core, Elasticsearch
- DevOps: Docker, CI/CD (GitHub Actions / Azure DevOps)
- Cloud: AWS / Azure, Serverless (Lambda / Functions), API Gateway
- Authentication: JWT (JSON Web Tokens)
- Software Quality: Unit Tests (TDD / BDD)
- Observability: Structured Logging, Distributed Tracing, Monitoring (Prometheus, Grafana, etc.)
(Note: The final project structure is based on microservices. Each service is in its own repository and has specific setup instructions in its respective README.)
- Clone the repositories:
# Clone each microservice repository git clone [Link to User Microservice Repository] git clone [Link to Game Microservice Repository] git clone [Link to Payment Microservice Repository] - Configure Environment Variables: Each microservice requires its own
.envfile. Refer to the.env.examplein each repository to configure database connections, API keys, etc. - Run the Infrastructure: Use
docker-compose up -dto start necessary services like databases, Elasticsearch, and message queues. - Run the Microservices: Navigate into each microservice's directory and run its start command (e.g.,
dotnet run). - Access the Application: The services are exposed through the API Gateway. Use the Gateway's URL to interact with the complete application.
Plataforma de jogos digitais escalável, desenvolvida ao longo dos Tech Challenges da Pós-graduação FIAP em Arquitetura de Software .NET.
✨ Evolução do Projeto • 🧠 Principais Tecnologias e Conceitos • 🚀 Como Usar
Este projeto foi desenvolvido em três fases distintas, refletindo a evolução de um MVP simples para uma arquitetura complexa, distribuída e nativa da nuvem.
O objetivo inicial foi construir o núcleo da plataforma. Desenvolvemos uma API monolítica em .NET 8 que contemplava funcionalidades essenciais como cadastro e autenticação de usuários com JWT. Aplicamos princípios de Domain-Driven Design (DDD) e criamos uma base sólida com testes unitários para garantir a qualidade do software desde o início.
Com o MVP validado, o foco mudou para a eficiência operacional e escalabilidade. A aplicação monolítica foi conteinerizada com Docker. Implementamos pipelines de CI/CD para automatizar os processos de teste e deploy, publicando a aplicação em um ambiente na nuvem (AWS/Azure). Integramos também uma stack de monitoramento para garantir a confiabilidade e o desempenho da plataforma.
Na fase final, evoluímos a arquitetura para um modelo de microsserviços, visando aumentar a modularidade e a resiliência. O monolito foi decomposto em serviços independentes (Usuários, Jogos, Pagamentos). Implementamos o Elasticsearch para buscas avançadas de jogos e adotamos funções serverless para processos assíncronos, tudo gerenciado por um API Gateway, resultando em um sistema distribuído, robusto e moderno.
- Backend: .NET 8 (Minimal APIs / MVC)
- Arquitetura: Monolito (Fases 1-2) ➔ Microsserviços (Fase 3), Domain-Driven Design (DDD), Event Sourcing
- Persistência de Dados: Entity Framework Core, Elasticsearch
- DevOps: Docker, CI/CD (GitHub Actions / Azure DevOps)
- Cloud: AWS / Azure, Serverless (Lambda / Functions), API Gateway
- Autenticação: JWT (JSON Web Tokens)
- Qualidade de Software: Testes Unitários (TDD / BDD)
- Observabilidade: Logs Estruturados, Rastreamento Distribuído (Traces), Monitoramento (Prometheus, Grafana, etc.)
(Nota: A estrutura final do projeto é baseada em microsserviços. Cada serviço está em seu próprio repositório e possui instruções de setup específicas em seu respectivo README.)
- Clone os repositórios:
# Clone cada repositório dos microsserviços git clone [Link para o repositório do Microsserviço de Usuários] git clone [Link para o repositório do Microsserviço de Jogos] git clone [Link para o repositório do Microsserviço de Pagamentos] - Configure as Variáveis de Ambiente: Cada microsserviço exige um arquivo
.envpróprio. Consulte o.env.exampleem cada repositório para configurar conexões de banco de dados, chaves de API, etc. - Execute a Infraestrutura: Utilize
docker-compose up -dpara iniciar os serviços necessários como bancos de dados, Elasticsearch e filas de mensagens. - Execute os Microsserviços: Navegue até o diretório de cada microsserviço e execute o seu comando de inicialização (ex:
dotnet run). - Acesse a Aplicação: Os serviços são expostos através do API Gateway. Utilize a URL do Gateway para interagir com a aplicação completa.
