This is the forth post of our story series and we will take a short look into the technical design of Virtomize.

The third post ended with our ideas and concepts of what we want to achieve with Virtomize and today, let’s go on our journey of creating these ideas.

Rethinking

When redesigning our whole concept of how virtual machine provisioning works, we started at the bottom, the hypervisors. Why only supporting one hypervisor? Why not support multiple ones, even at the same time?

We started creating an abstraction layer and implementing it for VMware as our first hypervisor.

Installation

We build an Image-Templating-Engine that allows us to build any installation image for all our supported operating systems at runtime. The image includes all the necessary installation scripts customized to fit the defined network and hardware environment. Also, we allow customization of the operating system itself. The main step was done for our first and biggest requirement - It has to work in almost every environment. Since we allow static and dynamic network configuration even for multiple networks in any combination and all of our supported operating systems, we solved one of the main restrictions that our prototype had. Our prototype only supported DHCP configured networks , which can be a very hard restriction when it comes to building systems in nearly every environment.

Technologies

To build all this, we decided to also go on a new path when it comes to programming languages. Since we wanted to make the system fast, but also easy to maintain, we choose GOLANG as our backend programming language. Golang allows us to have super efficient, almost like C optimized code, while having most of the advantages of modern programming languages, especially for web technologies that are highly integrated into google’s programming language.

For our UI, we go the modern React-Redux-Typescript way, using a material design to support simplicity and usability. We put a lot of work into thinking about the workflows, users have to go through to get their system as fast as possible.

When it became reality

Creating a system that helps you in solving your problems instead of creating a complex solution to a complex problem.

After a lot of hard work, our first version was finally done. It eliminates all problems of the early prototype.

  • Support for nearly every network environment
  • Much simpler usage
  • Better abstraction of complexity
  • Self-service!
  • REST-API
  • Stability

We are very proud of what we achieved so far and have a lot of ideas for the future.

That’s what our last post of our series will be about. The future.

Thanks for reading so far and see you in the Virtomize.