We’re excited to include the following guest blog post by our friends at Voxoz.
Hi! We’re working on Voxoz. We aim to create a tightly integrated development and a production environment primarily for Erlang applications. We try to implement a pure zero-ops model where your application declares your deployment model and uses lightweight components which are designed and implemented strictly with cloud stacks in mind.
To understand this statement imagine a classic database running in the cloud environment. What are the software layers lying below the database interface? Those typically are an internal query cache, a tablespace cache, a tablespace file, a VFS cache, a filesystem driver, a block layer cache, a block driver, a disk driver. And, if your cloud instance is virtualized (and it sure is), you end up having multiple layers of those! Of course, all of the cloud providers try to diminish the footprint of this complexity by implementing various hacks around this design. However this always comes at a cost — the application developer must know how to handle any kinds of slowdowns and/or failures at any level of the application stack. We, on the other hand, are trying to tackle this by reducing the complexity by throwing away components that the app doesn’t actually need.
Our main strength is the
ling virtual machine which is a part of the Erlang On Xen project by Cloudozer that runs on bare bones Xen and starts up in 30ms. That’s right — and that’s only 30 times slower than starting up a process on a MacBook. With
ling we were able to throw the biggest runtime component out of the production environment — the operating system, which is pretty cool. 🙂 We are also experimenting with the Mirage project which allows us to run OCaml programs on bare Xen as well. With these two mighty tools we are open to the whole new frontier of truly lightweight and simple cloud apps with zero overhead.
Apart from that, we’re trying to provide ourselves with a robust development platform that allows us to quickly prototype using well-known tools in an accustomed environment (that is Linux). That’s where Docker comes in very handy — with Docker we were able to bootstrap a base Erlang development environment in a couple of hours, including the time to develop a simple Erlang frontend for that.
During our work on the development environment we’re constantly inspired by projects like Cloud9 IDE and Nitrous.IO, but we’re striving away from locking up a user inside a browser with the focus on the power of a simple UNIX shell with a decent level of isolation (thanks to LXC) and control over the contents of the containers on the simpliest level possible (thanks to AUFS). Of course this couldn’t happen any faster without the precious glue provided by the dotCloud team in the form of Docker, however there is still much work to do to deliver a friction-less development experience.
Here are the slides of our Voxoz presentation in September 2013 that advocates our vision of Erlang development tools and DevOps for Erlang (and pretty much the rest of) software:
[speakerdeck url=”https://speakerdeck.com/proger/voxoz-the-erlang-devops-platform” width=”600″]
Some of Voxoz parts are already available as open source software on Github here and here, mainly our web stack libraries based on N2O — the fastest Erlang web-framework. Feel free to check them out and even join us if you share our passion! 🙂