A glimpse of a truly elastic cloud
----------------------------------

We see that migration to clouds of the large part of existing IT infrastructure is almost finished. What’s next?

From our point of view, the next wave of cloud services will use newly introduced (not inherited) features of modern platfroms. In particular, resource management in datacenters will start to avoid multi-tenancy and reduce the number of pre-started instances.

To make this real new instances must be started and resources released as fast as possible. A small demo we prepared - called Zerg - shows that OS-less technologies, such as Erlang on Xen, is a step in the right direction.

Upon reception of an HTTP request, the demo spawns a new Xen domain with LING VM and a web application written in Erlang. After serving a single request the domain simply shuts itself down and frees all resources. The whole process takes 1.5-2sec.

The demo uses libvirt connector library called verx - the excellent work of Michael Santos. Our special thanks go to Michael. The library let us launch 25k+ demo instances flawlessly.

libvirt itself did not behave as a software stolen from the future. The all-encompassing API to virtualisation capabilities on average took 3x more time than the total of starting the Xen, booting Erlang VM, and running the web application, including all preparatory and configuration phases. Weird, but true.

Our experiments show that libvirt is not prepared to spawn instances in parallel. The limitation seems to be introduced by libvirt itself, not by the underlying hypervisor. We have to dig deeper down the stack to spawn instances faster.

Surely, the demo itself has a little practical value. Yet it gives a glimpse of tomorrow: think about incremental dynamic map/reduce that can survive any combinatorial explosion, or scalable web servers that can consume harshest spikes of load. The application design will have to be radically different too to embrace such rapid resource allocation/deallocation.

comments powered by Disqus