English version 🇺🇸
Service developed as part of the Phase 3 Tech Challenge — FIAP Postgraduate in .NET Software Architecture.
- Microservices Architecture: The monolithic application was migrated to a distributed architecture with dedicated services for Users, Games, and Payments, increasing modularity and resilience.
- Advanced Search with Elasticsearch: Implementation of Elasticsearch to index game data, enabling efficient and complex queries for recommendations and metrics.
- Serverless Scalability: Use of serverless functions (e.g., AWS Lambda) for asynchronous processes like notifications and payment processing, optimizing costs and scalability.
- API Gateway: A single, secure entry point to manage and route requests to the different microservices.
- Event-Driven Architecture: Adoption of Event Sourcing to record all system state changes, ensuring auditability and data consistency.
- Enhanced Observability: Implementation of distributed logging and tracing to monitor and debug the application in a distributed environment.
[(Insert your communication flow or sequence diagram here)](https://miro.com/welcomeonboard/WXFNR1F3MExCYnZ2RXNncGM2c1VqNHBTS29oOGlCZkkvYmk3enBzS1Y2MHl2UXh0SHMrNENtYUVodE1JZHltaXZiRXQvV3pKNm4vd3BoNG5JUXJFeHFFcHNVL25KWlpLMVp2UERoR3c1MW4xOFRFcFBPU3IxZ3NjMCtnWnYxVGZzVXVvMm53MW9OWFg5bkJoVXZxdFhRPT0hdjE=?share_link_id=35637098032)
- Microservices:
- Creation of at least three microservices in separate repositories (e.g., Users, Games, Payments).
- Elasticsearch:
- Indexing of game data for efficient searching.
- Development of advanced queries for recommendations based on user history.
- Use of aggregations to generate metrics, such as most popular games.
- Serverless:
- Creation of Serverless Functions (AWS Lambda or Azure Functions) for asynchronous operations.
- Configuration of triggers to automatically invoke functions based on events.
- Implementation of an API Gateway to manage and protect microservices.
- (Optional) Configuration of JWT authentication and rate limiting.
- Architecture:
- Implementation of event sourcing to log all system state changes.
- Improved observability with distributed logs and traces.
(Note: Since the architecture is distributed, each microservice has its own setup process. Check the README of each repository for specific details.)
- Clone the repositories:
Clone the User microservice repository git clone [Link to User Microservice Repository]Clone the Game microservice repository git clone [Link to Game Microservice Repository]
Clone the Payment 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, and other necessary settings. - Run Infrastructure: Use
docker-compose up -din a shared infrastructure directory (if applicable) to start databases, Elasticsearch, and other services. - Run Microservices: Navigate into each microservice's directory and run the start command (e.g.,
npm start,dotnet run). - Access the Application: The services will be exposed through the API Gateway. Use the Gateway's URL to interact with the application.
- CI/CD Pipelines: CI pipelines run on pull requests, and CD pipelines deploy changes to the cloud upon merging to the main branch. Check the pipeline files (e.g.,
.github/workflows/deploy.yml) in each repository.
FIAP Cloud Games (FCG) - Fase 3
✨ Principais Características • 🏗️ Arquitetura • 🧠 Requisitos Técnicos • 🚀 Como Usar
- Arquitetura de Microsserviços: Migração da aplicação monolítica para uma arquitetura distribuída com serviços dedicados para Usuários, Jogos e Pagamentos, aumentando a modularidade e a resiliência.
- Busca Avançada com Elasticsearch: Implementação do Elasticsearch para indexar os dados dos jogos, permitindo buscas eficientes e consultas complexas para recomendações e métricas.
- Escalabilidade com Serverless: Uso de funções serverless (ex: AWS Lambda) para processos assíncronos, como envio de notificações e processamento de pagamentos, otimizando custos e escalabilidade.
- API Gateway: Ponto de entrada único e seguro para gerenciar e rotear as requisições para os diferentes microsserviços.
- Arquitetura Orientada a Eventos: Adoção do padrão Event Sourcing para registrar todas as mudanças de estado do sistema, garantindo auditoria e consistência dos dados.
- Observabilidade Aprimorada: Implementação de logs e rastreamento distribuído (traces) para monitorar e depurar a aplicação em um ambiente distribuído.
A nova arquitetura da FCG foi desenhada para ser resiliente, escalável e observável, adotando uma abordagem baseada em eventos e microsserviços.
Descrição do Fluxo: O cliente interage com o sistema através de um API Gateway, que roteia as requisições para os microsserviços de Usuários, Jogos e Pagamentos. O serviço de Jogos utiliza Elasticsearch para buscas, enquanto processos assíncronos são delegados a Funções Serverless. Todas as alterações de estado são registradas como eventos (Event Sourcing), e a observabilidade é garantida com logs e traces distribuídos.
Exemplo de Fluxo (Compra de um Jogo): O usuário autenticado solicita a compra via API Gateway. O serviço de Jogos inicia a transação e publica um evento. O serviço de Pagamentos processa o pagamento e publica um evento de sucesso. Por fim, o serviço de Jogos finaliza a compra, e uma Função Serverless envia a notificação de confirmação.
- Microsserviços:
- Criação de três microsserviços em repositórios separados (ex: Usuários, Jogos, Pagamentos).
- Elasticsearch:
- Indexação de dados dos jogos para busca eficiente.
- Criação de consultas avançadas para recomendações baseadas no histórico do usuário.
- Uso de agregações para gerar métricas, como os jogos mais populares.
- Serverless:
- Criação de Funções Serverless (AWS Lambda ou Azure Functions) para operações assíncronas.
- Configuração de gatilhos (triggers) para acionar as funções automaticamente com base em eventos.
- Implementação de um API Gateway para gerenciar e proteger os microsserviços.
- (Opcional) Configuração de autenticação JWT e controle de requisições (rate limiting).
- Arquitetura:
- Implementação de event sourcing para registrar todas as mudanças de estado do sistema.
- Melhora da observabilidade com logs e rastreamento distribuído (Traces).
(Nota: Como a arquitetura é distribuída, cada microsserviço possui seu próprio processo de setup. Verifique o README de cada repositório para detalhes específicos.)
- Clone os repositórios:
Clone o repositório do microsserviço de Usuários git clone [[Link para o repositório do Microsserviço de Usuários](https://github.com/Net-Vanguard/Fiap-Users.git)]Clone o repositório do microsserviço de Jogos git clone [Link para o repositório do Microsserviço de Jogos]
Clone o repositório do microsserviço de Pagamentos 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 as conexões de banco de dados, chaves de API e outras definições. - Execute a Infraestrutura: Utilize
docker-compose up -dem um diretório de infraestrutura comum (se aplicável) para iniciar os bancos de dados, Elasticsearch, etc. - Execute os Microsserviços: Navegue até o diretório de cada microsserviço e execute o comando de inicialização (ex:
npm start,dotnet run). - Acesse a Aplicação: Os serviços serão expostos através do API Gateway. Utilize a URL do Gateway para interagir com a aplicação.
- Pipelines de CI/CD: As pipelines de CI são executadas em pull requests e as de CD realizam o deploy na nuvem após o merge na branch principal. Consulte os arquivos de pipeline (ex:
.github/workflows/deploy.yml) em cada repositório.
