Since we started blogging, we’ve been compared to orchestrators more often. And if earlier there were questions about how D2C differs from Heroku, Cloud 66 and similar services, then now, apparently, we were treated as an alternative solution for orchestrating.
Ok, i’ll try to fix the situation and will compare D2C with several popular solutions, which are heard more often: Docker swarm, Kubernetes and Rancher.
And to start not “from the end”, I’ll briefly give you a small review on each of them.
Docker swarm mode — a Docker abstraction. The same Docker engine but working in a cluster. Several containers-workers are combined into a service served by a Swarm Manager. Swarm Manager runs apps’ containers on free hosts and takes the commands to manage the cluster. Swarm also works as a load balancer between multiple workers, equally distributing requests coming from either side of the cluster.
Manager: the management node that takes the tasks
Worker: executing tasks node
Docker CLI: the user interacts with a Swarm through Docker CLI, operating in addition to the usual commands such as “docker node” and “docker service”..
Docker Hub: repository of ready made images
Advantages: the relative simplicity and a fast speed of exploration: if you have already worked with Docker containers, learning how to use the Swarm mode is not a difficult task.
Disadvantages: narrow functionality, not so cool in a sense of fault tolerance as kubernetes, and if you are not experienced in Docker, you will still have to learn a bit.
Kubernetes, as stated in the official documentation, it is an open source system to automate the process of deploying, scaling and managing containerized applications. I would add to that statement by saying that Kubernetes is a framework that helps to build a fault-tolerant and scalable container management platform. It is not a ready-to-use and easy-to-use solution, which making the entry limit to this technology higher.
Pods — containers in Kubernetes are grouped into groups called Pods. The Pod usually includes from 1 to 5 containers.
Flat Networking Space — Networking Space in Kubernetes is flat and permits all pods to interact with each other. Containers in each Pod share an IP and communicate with each other using ports on the localhost.
Services is an abstraction over pods that defines an access policy. Service automatically balance the load between the Pods.
Replication Controllers check the number of running replicas of Pods on the server. They control and monitor the number of running pods for a service, improving fault tolerance.
Advantages: Kubernetes is a free and powerful tool which is able to manage containers and combines infinite scalability and automation.
Disadvantages: studying it is not easy. A good thing in the hands of competent OPS, but the developer will have tight with it without an OPS.
Rancher — this is a kind of step to the convenience and ease of development due to the high-quality web interface. Rancher makes it easy to manage complex environments. It can manage the containers by itself or use other managers. For example, if you need features that are not available in Rancher’s default scheduler, you can run others like Kubernetes or Docker Swarm on top of it. You just need a couple of mouse clicks, which is much easier than configuring them manually.
In addition, Rancher has a catalog of applications which could be quickly deployed in your infrastructure.
However, Rancher is not a 100% ready-made solution. Your source could be deployed just from Docker images. And there will be some difficulties with database scaling. In a couple of mouse clicks won’t be enough to change the configuration to master-slave or multimaster.
Advantages: The undoubted advantage is the availability of the catalog of ready-to-run services and applications. Rancher also has a clear web interface and the ability to launch quickly other orchestrating solutions such as Kubernetes and Docker Swarm.
Disadvantages: Still, Rancher is not an easy-to-use platform. To deploy your own application with it, at a minimum, you must be able to create Docker images, which means that you have a certain technology entry limit.
At D2C, we focused on ease of use and low entry limit into the world of scalable apps for the developer. The main focus we made on the sources of the application and the services required to run it.
Yes, under the hood, we also use Docker containers and nontrivial orchestration with use of Ansible as a “Manager”, but from the user’s side, that kitchen is hidden and filed in the form of a fairly clear interface, expressed in simple steps:
Advantages: In D2C, there’s no need to explore the kitchen under the hood for developing a scalable application, developers can even solve quite serious problems without OPS.
In order to start using D2C for creating containerized cluster systems, the developer just needs to understand the basics of configuring services and specify the link to source in a git repo for deployment in the cloud or on their own servers.
Not a hosted solution which allows you to effectively combine cloud providers or manage your own hosts.
Disadvantages: For free just a version for one cloud host, the full version is paid. For experienced OPSs, D2C may be not so flexible because of the focus on simplicity for the developer.