Skip to content

vincent-scw/gframe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

gframe

Let's play a classic game --Rock-Paper-Scissors-- with others in gframe.

Motivation

This is a proof-of-concept application, which demostrates Microservice Architecture Pattern using various technologies. For technical perspective, it includes Restful Api, GraphQL, Websocket, OAuth2, Redis, Kafka, Docker, Kubernetes...etc. For deployment, I've setup Azure Kubernetes Service (AKS) for everything. Refer to depoly folder for details.

  • Note: it is still in beginning stage.

Functional services

Functional services

Game service

Handle player login/logout, and interact with game playing.

Broker service

Group players.

Admin service

Setup, control and monitor a game.

Infrastructure services

Redis

This project heavily depends on Redis. It uses several features in Redis, like Cache, Pub/Sub, Sets...etc

Kafka

This project use Kafka as message queue.

Monitoring services

Promethuse & Grafana (https://grafana.gframe.fun)

Jaeger

Clients

  • Player Client (https://www.gframe.fun)
    • User must be able to access the Player Client, and join the game with simply providing a name
    • When player presses Start, he/she must be added to a gaming group
    • Player is able to play game with opponents
  • Admin Client (https://admin.gframe.fun)
    • Admin must be able to access the Admin Client with username/password
    • Admin must be able to control the game (including creation, setting, etc...)
    • Admin must be able to simulate game playing via Simulator

How to Start

  • PowerShell: .\services\run.ps1 & .\clients\run.ps1
  • Docker Compose:

Key Features

  • Auth Service
    • Authorization & Authentication
    • OpenID
  • Player Events
    • Join
    • Leave
  • Players Matching
  • Gaming
  • Admin Client & Simulator
    • Admin Client
    • Simulator
      • Inject Players
      • Game Play
  • Log Monitoring
  • Docker Supporting
    • Docker Compose
    • Kubernetes
  • Devops
    • CI/CD
    • Microservices Monitoring