Domain - package to store golang code generated from proto files Game - Service that generates random numbers Numbers - The game itself, including frontend and golang static file serving Proto - protocol files for grpc Integrations - integration tests for the game Frontend - self-explanatory
- Scale random number generator service, use load balancer on client side.
- Move frontend to CDN + Storage
- Write RedisGameManager that will store game state in Redis
- Deploy multiple instances of Numbers service, use load balancer on client side.
- Actually 10000 will work with just one instance. It should be way more than 10000 to overload that.
- Decoupling
- Inversion of control + Dependency Injection
- Graceful shutdown
- High cohesion, loose coupling + Single source of truth (Meaningful class structure)
- MVC partially for numbers service.