What Comes After the Containers and Unikernels?

(Reposted here from my LinkedIn)

A brief history of everything… (SysAdmin related)

There has been a lot of hype over the last year on container solutions, like Docker, with an ever growing and sometimes fragmented group of supporting projects. What does this all mean for the cloud and the future of hosting applications?

Pre-Cloud and Virtualization (aka The Dark Ages)

Before the cloud and virtualization you had a bare metal server where you installed an operating system on to host your service or application. It was basically a 1 to 1 thing in terms of the hardware and operating system. There were hardware load balancers to distribute traffic to a pool of these physical servers. This was very inefficient due to much of the hardware not being utilized even during peak load times.

Dawn of Virtualization (aka The Not-So Dark Ages)

When the boom of virtualization in all its forms came about with VMware and other offerings, people saw the promise and hope of being able to more fully utilize their hardware by segmenting it into virtual machines to better use (and cost effectively) plan for capacity.

To The Cloud! (aka The Age of Enlightenment)

With the launch of cloud services like Amazon Web Services around 2008, the hope of not being burdened with the depreciation of hardware and nightmares of a physical data center were soon to be realized. By leveraging virtualization and the overall better performance of the Internet, people could unchain themselves from their data centers and focus more on taking advantage of the on-demand aspects cloud work loads offered. This brought about massive change and enabled startups to grow as needed. In the “Dark Ages” you would need to place an order with your server hardware provider to deal with needing more capacity.

Do You Even Docker Bro!? (aka The Age of Containers)

The next step in this evolutionary tail was the rise of containers. Not a new concept per say (BSD jails and so on) but the seemingly exponential growth of Docker rang in the age of containerization. (Yes, I had to add that word to my spell check dictionary.) Around this same time the idea (or terminology to be exact) of DevOps became more popular allowing for less friction between development and systems administrators to more quickly deploy code. Containers played a big part in allowing this growth to occur with continuous integration (CI). All this software defined networking and projects, like Mesos, and the rise of Big Data and the tools like Hadoop.

All of these advances created the ability as with the more current versions of Docker to create entire software defined networks running clusters of containers across multiple bare metal and cloud providers. Many more things are needed to achieve this but it is out of the scope of this article.

Unikernels and Beyond (aka The Future!)

Most recently there has been a lot of discussion and interest in what most people are referring to as unikernels. Which is simply doing away with all the extra system crap and building up a very minimal system with just enough for your needs. With microservices architecture becoming so popular, it is argued that this is most likely the next step. Here is where it starts to get philosophically very interesting.

Imagine in the not too distant future having a true cloud as most non-technical people think it works. Where you upload your code and it automatically has your stuff running and scales as needed in a secured network of its own. It would be self healing properties and the ability to simply type a command and control every aspect of it. It would replicate itself, altering its DNS and other attributes on its own. All of the things discussed here will lead up to this in the future.

A future where cloud providers and self-hosted data centers will become transparent. Optimized for cost of the CPU usage and/or storage like real time commodities markets do today with oil. Were Amazon Web Services (AWS) CPU credits trade higher than Google Cloud Platform. It’s a strange concept but it could one day be a reality.

Ten years ago if you described to me what Docker and AWS do today I would of thought it a science fiction dream equal to those from a John Brunner book.