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
Prof. Chengbin Ma
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
Our project is divided into two separate parts: server and client.
BOINC Server: We base our project on BOINC (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
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
|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
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.
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.
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.
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.
Sponsors: Frank Dai & Alan Ren from VMware
Instructors: Prof. Chengbin Ma & Prof. Mian Li from UM-SJTU Joint Institute