Software as a Service: DockerCon US 2016
There was DockerCon US 2016 in June in Seattle [http://2016.dockercon.com]. Docker community grows from year to year, and this is the largest Docker-centric event. There are a lot of news announced during the sessions, plenty of use-cases described, talks about success stories from enterprise level projects to middle-size Software as a Service solutions.
There was announced new version of Docker 1.12. It should be released in several weeks. There will be built-in Orchestration and Docker Swarm.
Orchestration is a set of duties for installing, updating and maintaining your infrastructure during lifetime of the application. It doesn’t seem a problem in case of several servers, but if you have more systems to hold under control in your Software as a Service project, then it would not be so easy. Orchestration have to be useful and simple. To achieve both of those goals, the orchestration is built-in into new Docker version.
Docker Swarm is a technology to install and maintain a cluster for Docker. Several systems may be joined together and treated as the saem Docker container. There are Swarm manager and worker nodes. They are communicating in secured way via TLS transparently for software developers. We can use docker CLI to create a swarm:
docker swarm init
And for adding worker node to the cluster:
docker swarm join node-1:2377
As swarm is out of the box feature of Docker new version, we don’t need to apply any extra efforts like installing TLS certificates or keep topology of the infrastructure in some storage. Docker is doing that all transparently. As we can run simple container by docker run, it’s very easy to run a process distributed on the cluster with replication and load balancing:
docker service create –name frontend –replicas 5 -p 80:80/tcp nginx:latest
Simplicity and Usefulness
As you can see, there is a service, which has a task. That task is running in the containers. Besides, we can group services of the project into a stack. Stack is like description of whole application. There is a .dab file format (Distributed Application Bundle) to describe the stack. We need to use such .dab file to run the stack to have the application up and running.
There is an intelligent health checking feature for nodes monitoring. We can setup rules to mark a node as non-working and what to do in this case. E.g., up and running one more container on another node and reassign a service to another node. New version of Docker provides security out of the box by default without extra configuration. Each manager node is certificate authority in PKI. We can run a container on all nodes of the swarm or use just some subset of the cluster. These and many other improvements make Docker a tool N1 for Software as a Service development.
There are Docker for Mac and Docker for Windows solutions. You can download and use them instead of Docker Toolkit. Both of them provide seamless integration of Docker into those platforms. They need to have Windows 10 64bits and Yosemite 10.10, respectively.