Jason’s Status Report for 2/19

This week, I mainly performed research in order to work on the design presentation. Although I have a good idea of the general layout of the project, needing to quantify it with metrics and diagrams really solidified my understanding of the requirements our project is supposed to meet as well as how different parts of the project interact with each other.

One of the important things I researched was the basic benchmarks we want our web application to meet with the server architecture we are implementing. This includes bit rate, lag ratio, buffer fill, user latency, load balancer latency, and CPU usage. I looked into some industry standards for video streaming applications to determine our baseline bit rate, lag ratio, and buffer fill. Additionally, I also found common load balancer performance benchmarks that determine our ideal load balancer latency and CPU usage. Of course, the performance of the load balancer would vary with different algorithms, but we would like each algorithm to meet these loose benchmarks at the very least before comparing between them.

Another aspect of the design that I worked on was improving the specificity of our server architecture. We had a rough draft of the diagram of the architecture before and where our load balancer would fit in it but it required more refinement. Fleshing out this diagram in the design presentation helped us gain a better understanding of where to send requests to and receive responses from for each node in the architecture as well as determine where to obtain parameters necessary for the decision making of the load balancer.

Finally, I also had to find a way to obtain suitable videos for our web application without violating any copyright laws. I found that there’s a category of videos on Youtube with the Creative Commons license that allows for republishing the videos without the risk of copyright claims. We will be using these videos from Youtube, particularly ones that are 1080p and at 60 fps to produce a significant load for our server.

Once we obtain our AWS credit next week, I will be working on implementing the basic server architecture on AWS with the load balancer they provide just to check if the connections all work.

Nakul’s Status Report for 2/19

This week I spent most of my time working on the design presentation with my group. I worked on researching about  the use of Django and NGINX to create a web application for our video server. I planned the best course of action to work on a web app considering that we do not have access to our AWS credits.

I also worked on researching different EC2 instance types as well as the tradeoffs between using each one. We have now narrowed down the instance type which will allow us to effectively create a multi tier architecture to simulate user testing and load.

I also worked on coming up with a testing plan for user simulation. I researched into user testing of web apps and came up with a testing plan for each quantitative metric associated with the front end of our application. I determined that running 30 devices (or VMs) sending between 1 and 50 requests every 10 mins will be appropriate for benchmarking each of the metrics.

Team Status Report for 2/19

We met up as a team to come up with more specific metrics for our use case requirements. In order to meet these use case requirements, we had to flesh out video specs (1080p 60fps 8-12 min), video obtainment (Youtube Creative Commons), the type of VM we would use (AWS EC2 T4g, T3, H1), end-user simulation (varying video watching behavior), and load balancing algorithms (round-robin, CPU decider, response-based UCB1).

In the upcoming week, we hope to obtain our AWS credits to be able to test the connectivity of our server architecture. Assuming this goes well, we will then move on to building and deploying the video web application without our customizable load balancer.

Mitul’s Status Report for 2/19

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.

Team Status Report for 2/12

In preparing for the presentation this week, we finalized specific benchmarks that we want to meet with our capstone project as well as the technological suite we intend to use in order to meet those requirements. Drafting the Gantt chart will also help in knowing what to do exactly in the coming weeks. Mitul has already requested the AWS credits for our project, and it is not possible to proceed with the implementation before we obtain the credits.

For this coming week, we plan to refine our design for the project for the design presentation, researching the specifics of our web application design, architecture design, and the first few algorithms we will be testing with our load balancer. Assuming we receive the AWS credits early, we can also start implementing our prototype server architecture using AWS.

Jason’s Status Report for 2/12

This week, I mainly worked on the project proposal presentation before it was presented by Mitul to the section. In particular, I filled in the slides explaining the basics of multi-tiered architecture and load balancers as these are the foundations of our project that enables us to test different load balancing algorithms.

Another item on the presentation I was responsible for was the Gantt chart. I found it very helpful in dividing the daunting scale of the full project to much more manageable smaller tasks. It also helps in realizing the specifics of each step in the project. We now have a very clear timeline of who to do what when until the end of the semester very early on in the project.

Finally, when we encountered the technical challenge of having to simulate users to put a non-trivial load on the servers, I looked into and proposed various solutions such as running scripts on our own devices as well as maybe using the ECE clusters or more ec2 instances from AWS in order for similar purposes.

Mitul’s Status Report for 2/12

This week I spent some time preparing for the proposal presentation I gave on Wednesday (going over the slides, practicing speaking points, and monitoring the time).

I read more about the standard AWS multi-tier server building process and found that an interactive suite can build most of the architecture at a high level except for the LBs. AWS’s LBs are not directly programmable so we will need to replace those with separate ones that will be programmed to EC2 instances.  Thus, I applied for AWS credits at the start of the week as we plan to test the multi-tier architecture’s server connections with the separate LBs as soon as possible. The building process is detailed in this link: https://medium.com/the-andela-way/designing-a-three-tier-architecture-in-aws-e5c24671f124

I also did some further research on how a load balancer’s performance can be analyzed. The paper linked below was of particular interest: https://www.ijarcce.com/upload/2013/october/62-O-priyesh_kanungo_-MEARURING_PERFORMANCE.pdf

The metrics of mean response time and mean slowdown are of particular interest since the parameters can be easily obtained from LB-adjacent nodes and they are consistently insightful regardless of the situation. On the other hand, processer utilization seems only useful in low load server situations but still worth considering for enhancing analysis.

Nakul’s Status Report for 2/12

This week was spent planning and creating our team’s proposal presentation. I contributed by researching the use case requirements of our web application as well as the custom load balancer. I read through research papers on Load Balancing to determine appropriate metrics that can be used to measure the performance of our custom load balancer. These metrics will also be used to define the loss/reward function of our machine learning algorithms. I also read a paper about different implementations of load balancers using different algorithms. This gave me more perspective as to how we should go forward designing our load balancer as well as the multi tiered architecture within which it will exist.

We have been slightly set back as we have not yet received AWS credits which would allow us to create a multi tiered deployment of our web application. We are on track with our schedule for collecting and reading through resources on load balancing and multi tier architectures.

Next week I hope to have started work on creating the video streaming application we will be using to test our load balancing algorithms. I also hope to deploy a sample web app on a multi tier architecture through AWS.

Intro to Team C2: LearNet

We are building a video streaming web application on AWS with a multi-tiered architecture. Our goal is to test load balancing servers with different models between these tiers. The models will range from CPU-based decision making to applicable machine learning algorithms. The models will be tested for meeting network benchmarks and compared against each other to analyze performance.

Our team members are Mitul Saha, Jason Tang, and Nakul Goenka and we are Team LearNet.