Architecture

Ubicloud follows an established pattern in building public cloud services. A control plane manages a data plane, where the data plane usually leverages open source software.The following architecture diagram shows the control and data plane components for our compute service. This service allows you to provision and use virtual machines (VMs); and also forms the basis of some of our other services.

Control plane

Control plane manages users, data plane services, and resources. This is a Ruby program that stores its data in Postgres. We use the Roda framework to serve HTTP requests and Sequel to access the database. We manage web authentication with RodAuth. The control plane communicates with data plane servers using SSH, via the library net-ssh.

Users communicate with the control plane through the cloud console or Ubicloud APIs. The console is a web app served by the Roda framework. For the visual design, we use Tailwind CSS with components from Tailwind UI. We also use jQuery for interactivity.

Once you’ve initialized the control plane, create a new user and sign into the cloud console.

Data plane

The control plane communicates with Linux bare metal servers using SSH. Ubicloud expects Linux with KVM running on these servers. Our managed service uses Ubuntu 22.04 as the underlying Linux distribution.

For our compute service, Ubicloud makes several additions on top of Linux KVM. We use cloud-init to bootstrap SSH access to the server. We use Cloud Hypervisor as our virtual machine monitor (VMM); and each instance of the VMM is contained within Linux namespaces for further isolation and security.

This section also has design documents that explain how some Ubicloud services work. You can read them here or request new documents by getting in touch with us.