Question 8. Project scaling

Suppose you were going to use your team's 375 project as the basis for a similar product on a much larger scale through the following changes:

       for CodeXscape 
           - supporting teams of players working together on quests, 
           - supporting many quests on a server, 
           - supporting services allowing players to find/select/join 
             servers and quests
       for Mage Rage 
           - supporting many players in a battle,
           - supporting many battles on a server, 
           - supporting services allowing players to find/select/join 
             servers and battles
       for Happy Puzzle 
           - supporting central services that allows players to submit 
             and share their own puzzles, tile shapes and images, 
           - supporting player abilities to create and join tournaments
             on puzzle collections of their choice, 
           - supporting player abilities to create races and issue challenges
             on puzzle collections of their choice, 
           - support player-run ranking services that follow an official
             player ranking scheme
       for Course Advisor 
           - supporting all degree programs at VIU, 
           - supporting the addition, modification, and cancellation of
             courses, degree programs, requirements, and departments over time, 
           - supporting the "grandfathering" of programs and requirements
Discuss the major design issues you would encounter in trying to scale your product.
SAMPLE SOLUTION

Answers to this will depend quite a bit on the specific project,
but should generally focus on

   - Data handling: how to handle the increased data storage/transaction issues

   - Processing loads: how to handle the division of computing workload 
     between clients and multiple tiers or types of servers
         (overloaded server, bandwidth or processing load?)

   - Networking: how to handle the communication between and coordination of clients
         (lag/synch issues with games?)

   - Security: how to handle the associated security and privacy isses
         (+cheating issues with games?)

   - Design complexity: how to handle the transition from the existing code base
     to the more complex designs that will be required 
         (changes to plot/nature of games?)