Student Projects

VE/VM450

Cloud Tides – An Elastic Platform on Idle Cloud Resources

Sponsor: Frank Dai, Alan Ren, VMware
Team Members: Dongchen Zhan, Shujie Yang, Jingliang Ren, Wentao Wu, Siyuan Peng
Instructor: Prof. Chengbin Ma

Project Video

Team Members

Team Members:

Dongchen Zhan
Shujie Yang
Jingliang Ren
Wentao Wu
Siyuan Peng

Instructor:

Prof. Chengbin Ma

Project Description

Problem Statement

Nowadays, many enterprises own private clouds whose capacities are designed to support their peak usage. Hence, there are always idle resources, and it is a huge waste on the datacenter facilities. In the meantime, there are individual research groups that are starving on computing resources.
Our project aims at resolving this conflict, which is an elastic platform where enterprises can share and donate their idle servers with individual users, thus bridging the resource demands.

Fig. 1 CloudTides overview

Fig. 1 CloudTides overview

Concept Generation

Our project is divided into two separate parts: server and client.
BOINC Server: We base our project on BOINC[1] (the only widely-used volunteer computing platform). We use Docker containers to set up our own BOINC server and use BOINC wrappers to deploy jobs.
Client Platform: We choose to
• Build up a front-end webpage in AngularJS to present real-time data
• Build up a back-end part in Golang to continuously monitor cloud resources
• Deploy our platform on Kubernetes

Fig. 2 Diagram of server and client

Fig. 2 Diagram of server and client

Design Description

CloudTides allows company users to register their cloud servers and uses the login details to register their resources on vSphere.
Once they register and configure preferences, CloudTides can choose to start the job which is downloaded from the BOINC server when the usage is below some threshold (preference configured by the user).
Job executables and different versions of wrappers are stored on the server. When a job is started, the cloud server will download the job executables and corresponding wrappers, deploy a VM template and run the job on containers using Docker. Once the job has finished, results will be uploaded to the database, where the users can access the contribution data.

Fig. 3 Detailed workflow

Fig. 3 Detailed workflow

Engineering Specifications

Specification Val Unit
1 Avg. CPU utilization 60 %
2 Avg. memory utilization 70 %
3 Max number of  simultaneous tasks 100 N/A
4 Unit test coverage 70 %
5 Cycle for checking cloud status 3 min/cycle
6 Cycle for searching unmonitored cloud 2 min/cycle
7 Number of host CPU 2 N/A
8 Host CPU freq. capacity 48 GHz
9 Host memory capacity 4 GB
10 Host storage capacity 1.81 TB

Table 1 Engineering Specifications

Validation

√ Feasibility:
We mainly use unit testing and integration testing. We call functions with different arguments and assert the expected results after each code change. We merge everyone’s code into one branch and test various basic functions repeatedly. We also set up a CI/CD pipeline to improve testing efficiency.

√ Reliability:
Our project uses a Kubernetes cluster to run the platform. We intentionally restart one of the servers and adjust the CPU and memory while the platform is running, and the platform is still in service.

√ Efficiency:
We record the average CPU and memory of the servers. The CPU and memory utilization is around 40% and 50% respectively, which implies that there is still room for improvement.

Conclusion

We build an elastic platform called CloudTides based on BOINC for enterprises to share their idle cloud servers with individuals.
We will build a project server to onboard a real project in the future.
We will also construct a test and production environment through Kubernetes and set up a set of CI/CD pipeline. These tools greatly facilitate the development of developers and enhance the subsequent maintainability of this project.

Acknowledgement

Sponsors: Frank Dai & Alan Ren from VMware
Instructors: Prof. Chengbin Ma & Prof. Mian Li from UM-SJTU Joint Institute

Reference

[1] https://boinc.berkeley.edu/

Project Video