Thursday 19 November 2015

Dockercon 2015

Just returned from the DockerCon 15 that took place in Barcelona, Spain. It has been a somewhat tiring but interesting experience. Here there are some quick thoughts I´d like to share with you.

Brand new Docker functionalities


In the general session, at the very beginning of the conference, some new features were show-cased and seemed  very interesting:
  • Production-ready Docker Swarm (which handles the creation and orchestration of a large number of containers in distributed applications).
  • Out of the box multi-host networking.
These two features were demonstrated by creating 50.000 containers on 1.000 Amazon Web Services nodes. However, I would have loved to see them actually performing some work, (rather just starting up). Specially hard would have been to share some workload and perform some kind of coordination...

Here you can see the video from the general session:


The demo done on the Docker Toolbox was quite interesting, it might be a really good tool in order to ramp up new developers coming to your project.

General exposition


Aimed to be a place for networking and discussion with experts, it has disappointed me a little bit. Basically, a number of sponsors selling their Docker or Cloud-related systems (in most cases monitoring systems, CI/CD tools and container managers).
I have the impression that the functionality that they offer might be partially overlapped with either new versions of Docker or with the orchestrating platforms (Kubernetes, Openshift, etc.)
Got some fancy T-shirts, tough.

Ben Golub sharing experiences on deploying production applications with Docker

Docker shortcomings


What I really liked that the real-life experiences shared by people coming from several companies describing their experience with Docker both in development and in production and the difficulties they found along the way.

Stateful applications

After several talks, it seemed clear that applications that are required to maintain state and a data layer, are hardly deployed in a Docker container by any company that has run Docker in production for a while.
It is pretty straightforward that stateless processes should be run in Docker container in order to maximize parallel processing and high availability/resilience. However, when it comes to stateful applications, not even the experts seem to find a common approach in order to use Docker:
  • In the talk with SalesForce crew (which was one of the most interesting by far), they described their architecture as 70% based on container while the other 30% is running on bare-metal. This 30% is, of course, everything related to databases and data access layer.
  • In another talk, the people coming from Cluodbees (the company behind Jenkins) described a possible solution to have a "volume manager" container within a multi-container host:
    • One of the containers running in the host would mount the entire host filesystem and use it to perform file operations or even execute commands.
    • Using this, volumes may be set up for containers being created and destroyed.
    • This solution involved running everything as root! A bit crazy if you ask me.
Non-mature tools

Also, what was a bit concerning is what some other people said when referring to past Docker experiences: They had to struggle a lot dealing with non-mature  (or non-existent) features just to see that this feature was dropped in the next Docker release (this perhaps may be applied to all new software that is released).
Hard work pays off eventually, laziness pays off now!*
* Motto of our of the seasoned early adopters.

Summary


At the end, the view I have in my mind is that deploying your applications using Docker (or any of the related platforms all the way to PaaS) gives you a lot of potential to increase the quality of your application but also gives you a lot of pain as you have explore new roads that have been barely transited. 
One piece of advice from various companies that have already achieved it, is to go step by step, beginning with simple containers, evaluating pros and cons instead of going all the way to try to set up a PaaS from day one. 
And always be focused in giving the added value your product is meant to add.
Docker, docker, docker!


No comments:

Post a Comment