Skip to content

Net-Vanguard/fase-03

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 

Repository files navigation

English version 🇺🇸

 

  FCG Logo  

  FIAP Cloud Games (FCG) - Phase 3  

Service developed as part of the Phase 3 Tech Challenge — FIAP Postgraduate in .NET Software Architecture.


✨ Key Features

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

🏗️ Architecture

Architectural Design

https://miro.com/welcomeonboard/WXFNR1F3MExCYnZ2RXNncGM2c1VqNHBTS29oOGlCZkkvYmk3enBzS1Y2MHl2UXh0SHMrNENtYUVodE1JZHltaXZiRXQvV3pKNm4vd3BoNG5JUXJFeHFFcHNVL25KWlpLMVp2UERoR3c1MW4xOFRFcFBPU3IxZ3NjMCtnWnYxVGZzVXVvMm53MW9OWFg5bkJoVXZxdFhRPT0hdjE=?share_link_id=35637098032

Microservices Communication Flow

[(Insert your communication flow or sequence diagram here)](https://miro.com/welcomeonboard/WXFNR1F3MExCYnZ2RXNncGM2c1VqNHBTS29oOGlCZkkvYmk3enBzS1Y2MHl2UXh0SHMrNENtYUVodE1JZHltaXZiRXQvV3pKNm4vd3BoNG5JUXJFeHFFcHNVL25KWlpLMVp2UERoR3c1MW4xOFRFcFBPU3IxZ3NjMCtnWnYxVGZzVXVvMm53MW9OWFg5bkJoVXZxdFhRPT0hdjE=?share_link_id=35637098032)

🧠 Technical Requirements

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

🚀 How to Use

(Note: Since the architecture is distributed, each microservice has its own setup process. Check the README of each repository for specific details.)

  1. 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]    

  2. Configure Environment Variables: Each microservice requires its own .env file. Refer to the .env.example in each repository to configure database connections, API keys, and other necessary settings.
  3. Run Infrastructure: Use docker-compose up -d in a shared infrastructure directory (if applicable) to start databases, Elasticsearch, and other services.
  4. Run Microservices: Navigate into each microservice's directory and run the start command (e.g., npm start, dotnet run).
  5. Access the Application: The services will be exposed through the API Gateway. Use the Gateway's URL to interact with the application.
  6. 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.

 

  FCG Logo  

  FIAP Cloud Games (FCG) - Fase 3  

  ✨ Principais Características🏗️ Arquitetura •   🧠 Requisitos Técnicos •   🚀 Como Usar


✨ Principais Características

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

🏗️ Arquitetura

A nova arquitetura da FCG foi desenhada para ser resiliente, escalável e observável, adotando uma abordagem baseada em eventos e microsserviços.

Diagrama da Arquitetura e Fluxo de Comunicação dos Microsserviços

https://miro.com/welcomeonboard/WXFNR1F3MExCYnZ2RXNncGM2c1VqNHBTS29oOGlCZkkvYmk3enBzS1Y2MHl2UXh0SHMrNENtYUVodE1JZHltaXZiRXQvV3pKNm4vd3BoNG5JUXJFeHFFcHNVL25KWlpLMVp2UERoR3c1MW4xOFRFcFBPU3IxZ3NjMCtnWnYxVGZzVXVvMm53MW9OWFg5bkJoVXZxdFhRPT0hdjE=?share_link_id=35637098032

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.

🧠 Requisitos Técnicos

  • 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).
    •    

🚀 Como Usar

(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.)

  1. 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]    

  2. Configure as Variáveis de Ambiente: Cada microsserviço exige um arquivo .env próprio. Consulte o .env.example em cada repositório para configurar as conexões de banco de dados, chaves de API e outras definições.
  3. Execute a Infraestrutura: Utilize docker-compose up -d em um diretório de infraestrutura comum (se aplicável) para iniciar os bancos de dados, Elasticsearch, etc.
  4. 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).
  5. 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.
  6. 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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •