This week I spent most of my time working on the design presentation slides. This required adding furthering specification and numerical detail to our design plan. I specified our target problem being the lack of publicly available knowledge on load-balancing algorithms and their relative performance. Though enterprise solutions are widely available, the inner programming is not visible to users, so a stronger public knowledge can support more open-source software building and research. Our solution plan is to test many load balancing algorithms for insights on how they perform on the real-world scenario of video streaming.
I also further narrowed down the four load balancing algorithms we plan to test for our minimum viable product. We would have two purely parameter-based decision makers and two machine learning models. The parameter-based options will take into account either processor utilization or relative input/output volumes. The first machine model will be a low parameter unsupervised learner that follows the UCB1 algorithm based on local response time (https://jeremykun.com/2013/10/28/optimism-in-the-face-of-uncertainty-the-ucb1-algorithm/). The second is not yet finalized but will take into account request sizes as well as server loads, inspired by the insights of the following paper: https://hal.archives-ouvertes.fr/hal-02570549/document
I also standardized more of our final testing environment (several geographically different AWS EC2 instances) and how our internal server metrics will be calculated. There are further specifics on the testing end that we plan to experiment with once we receive our AWS credits for server connectivity trials.