You can choose a representative application (such as IoT applications), convert it to microservices, deploy such microservices using containers, and user Kubernetes/Swarm/Mesos to realize container orchestration. A demo as well as system design is required.
You will first deploy a cloud platform using OpenStack (at least a two-node configuration). You have to make sure key components can work properly --- VMs can be spawned via an OpenStack dashboard, and can communicate with each other (networking is correctly deployed). Based on this platform, please choose one or several advanced features to explore, such as deployment tools (e.g., Chef and Puppet), VM orchestration (Heat), metering and data collection service (Ceilometer), object store (Swift), database as a service (Trove). You must use representative applications to demonstrate the usage of these features. A demo as well as detailed system design description is required.
You can explore a SDN-based network, connecting clients and servers. In addition, various types of network functions (e.g., firewall, IDS, IPS, and proxy servers) can be inserted freely in this SDN-based network. The goal is to create a SDN controller (e.g., Opendaylight) that will redirect selectively network flows to go through such network functions (running within virtual machines). After being processed by such network functions, these network flows will be redirect to their destination. In this project you may need to set up an Open vSwitch based SDN network, deploy Opendaylight as the network controller, install network functions inside virtual machines, and explore OpenFlow methods to realize traffic redirection. A demo as well as system design is required.
You may need to set up a KVM-hypervisor environment, and create several VMs. Within these VMs, you could run different types of workloads (e.g., web services, database services, some I/O benchmarks, and computation workloads). The goal is to try to stress KVM hypervisor with different types of operations (e.g., network I/Os, disk I/Os, and CPU loads), and trigger different components of KVM.
In this environment, you can choose to use Linux perf (or other performance measurement tools) to capture as much performance information as possible, and interpret it into human-readable information. You may want to develop a tool (using Python) to automatically convert performance data (collected by Perf) to a function call graph as show in Figure 1 (this is a normal call graph example). Please find ways to visualize the results (people don't want raw data). With this tool, we can easily know which functions (or path) consume most CPU resources while we are running certain types of workloads atop KVM.
Objective: After this project, you must be a guru of Linux Perf. Your developed tool can be leveraged to analyze performance overheads of KVM hypervisor. That being said, we can easily identify the key hot functions under arbitrary use cases. You need to demonstrate the usage of the tool using several scenarios. Please come up with a usage scenario, establish a system/platform for this usage scenario, use representative applications to demonstrate this system/platform, and study and evaluate this established system.