The differences and similarities between two of the most influential open-source projects of 2019 for Fintech.
The Financial services Industry has always been technology dependent and Kubernetes vs Docker is a topic that has been raised numerous times in the Financial industry. Whether you come from a non-technical background and need a quick introduction, or if you need to make a business decision, I hope that the following few words will clarify this matter once and for all.
We need to look beyond the hype that surrounds both Kubernetes and Docker. What these words mean is important to grasp before running your business on top of them.
1. The Symbiosis between Kubernetes and Docker for Financial Services
The question “Kubernetes vs Docker?” in itself is rather absurd. Like comparing apples to oranges. One isn’t an alternative to the other. Quite the contrary, Kubernetes can run without Docker and Docker can function without Kubernetes. But Kubernetes can (and does) benefit greatly from Docker and vice versa.
Docker is a standalone software which can be installed on any computer to run containerized applications. Containerization is an approach of running financial applications on an OS such that the application is isolated from the rest of the system. You create an illusion for your application that is getting its very own OS instance, although there may be other containers running on the same system. Docker is what enables us to run, create and manage containers on a single operating system.
Kubernetes turns it up to eleven. If you have Docker installed on a bunch of hosts (different operating systems), you can leverage Kubernetes. These nodes or Docker hosts can be bare metal servers, or virtual machines. Kubernetes can then allow you to automate container provisioning, networking, load-balancing, security and scaling across all these nodes from a single command-line or dashboard. A collection of nodes that is managed by a single Kubernetes instance is referred to as a Kubernetes cluster.
Now, why would you need to have multiple nodes on your Financial App in the first place? The two main motivations behind it are:
- To make the Financial infrastructure more robust — Your application will be online, even if some of the nodes go offline, i.e, High availability.
- To make your Fintech application more scalable — If workload increases simply spawn more containers and/or add more nodes to your Kubernetes cluster.
1.1 Differences between Kubernetes and Docker
In principle, Kubernetes can work with any containerization technology. Two of the most popular options that Kubernetes can integrate with are rkt and Docker. However, Docker has won the greatest market segment and that has led to a lot of effort in perfecting the integration between Docker and Kubernetes, more than any other containerization technology.
Similarly, Docker Inc., the company behind Docker, offers their own container orchestration engine, named Docker Swarm. But even they realized the fact that Kubernetes has risen to the point that even Docker for Desktop (MacOS and Windows) comes with its own Kubernetes distribution.
If anyone was nervous about adopting Kubernetes, for their Docker-based product, that last point would get rid of all of the doubts. Both projects have wholeheartedly embraced each other and have benefited tremendously from this symbiosis. Even differences between Kubernetes and Docker is a benefit for a Financial App.
1.2 Similarities between Kubernetes and Docker
These projects are more than technologies, they are a community of people, which despite its differences, it is composed of some of the brightest minds in the Industry. When like-minded individuals collaborate, they exchange bright ideas and learn best practices from one another.
These are some of such ideas that both, Kubernetes and Docker, share:
- Their love for microservice based architecture (more on this later).
- Their love for open source community. Both are large open source projects.
- They are largely written in Go which allows them to be shipped as small lightweight binaries.
- They use human readable YAML files to specify application stacks and their deployments.
In theory, you can learn about one without having a clue about the other. But keep in mind that in practice you will benefit a lot more if you start with the simple case of Docker running on a single machine, and then gradually understand how Kubernetes comes into play.
Let’s go deeper into this topic…
2. What is Docker?
There are two ways of looking at Docker. First approach involves seeing Docker containers as really lightweight Virtual Machines. Second approach is to see Docker as a software packaging and delivery platform. This latter approach proved a lot more helpful to human developers and resulted in widespread adoption of the technology.
There are just too many variables to take into account and so we use Docker to abstract that complexity away. Docker can be installed on any OS, even Windows and Mac OS X are well supported. So you can package your code into a Docker image, run and test it locally using Docker to guaranteed that the containers that were created from that Docker image will behave the same way in production.
3. What is Kubernetes?
Kubernetes takes containerization technology, as described above, and turns it up to eleven. It allows us to run containers across multiple compute nodes (these can be VMs or a bare metal servers). Once Kubernetes take control over a cluster of nodes, containers can then spun up or torn down depending upon our need at any given time.
If you visit their official site, Kubernetes states its purpose quite plainly as:
So far we have represented only a naive overview of Kubernetes as automating a bunch of container creation. A fintech app needs to have storage, and there are some DNS records to manage. You need to make sure that the participating compute nodes are securely connected with one another and so on. Having a set of different nodes instead of a single host brings a whole different set of problems.
A brief overview of the Kubernetes architecture will help us shed some light on how it manages to achieve all of this and much more.
4. Fintech industry-wide adoption of Docker and Kubernetes
A lot of the concepts we have discussed so far sound good on paper, but are they economical for Financial Services Industry? Will they actually help your fintech grow? reduce down-time? and save resources both in terms of human hours and computing horsepower?
Docker in Production
The answer is simple when it comes to adopting Docker. Especially, if you are adopting a microservice based architecture for your software you should definitely use Docker containers for each microservice.
The technology is quite mature and very little can be said against it. Keep in mind, merely containerizing your code won’t make it better for you. Try avoiding monolithic designs and go for microservices if you actually want to make use of containerization platform.
Kubernetes in Production
One can’t be blamed for ranting about Kubernetes in Production and the reason behind it, in my personal opinion, is two-fold.
First, most financial organizations blindly jump without any understanding of the basic concepts of a distributed system. They try to set up their own Kubernetes cluster and use it to host simple websites or a small scalable application.
“This is quite risky for fintechs if they don’t have an in-depth knowledge of the system. Things can easily break down”.
Secondly, Kubernetes is rapidly evolving, and other organizations are adding their own special sauce to it, like Service Mesh, Networking plugins, etc. Most of these are open source and therefore are appealing to operator. However, running them in production is not what I would recommend. Keeping up with them requires constant maintenance of your cluster and costs more human hours.
However, there are cloud hosted Kubernetes platforms that organizations can use to run their Financial applications. The worldwide availability of data centers that companies, like AWS, Azure, Joyent or GCE, offer can actually help you to get the most out of the distributed nature of Kubernetes. And, of course, you don’t have to worry about maintaining the cluster.
This is something small and medium scale organizations often miss. If you want to survive node failures and get high scalability you shouldn’t run Kubernetes on a single 1-U rack or even on a single data center.
So, Kubernetes in production? Yes, but for most folks I would recommend cloud hosted solutions.
5. Containers and a new age of cloud computing for Fintech
Docker wasn’t pitched as an OS-level virtualization software, it is marketed as a software packaging and delivery mechanism.The sole reason Docker containers got the attention that its competition didn’t is because of this software delivery approach.
Automated builds are a lot easier thanks to Dockerfiles. Complex multi-container deployments are now standardized thanks to docker-compose. Software engineers have taken containers to their logical extreme by providing complete CI/CD solutions involving building and testing Docker images and managing public or private Docker registries.
Kubernetes has freed containers from being stuck on a single computer, making cloud an ever more enticing a place for this technology. Slowly, but surely, containerization will become the norm for every cloud dependent service and it’s, therefore, really important to adopt this technology earlier, rather than later. Doing so would minimize migration costs and associated risks.
6. A case for distributed operating system
Now that I have ranted about companies adopting Kubernetes without understanding it fully, allow me to make a case for Why a Financial company should adopt Kubernetes. Cloud computing has evolved into this highly competitive market with Google, Microsoft, Amazon and many other players competing with one another.
This has drastically reduced the cost of deploying a fintech software in the cloud. The best thing about Kubernetes is that it’s a largely open source, so you can understand what’s happening without getting too bogged down by the details.
Here is Azure pitching its Kubernetes service:
“Use Azure Kubernetes Service to create and manage Kubernetes clusters. Azure will handle cluster operations, including creating, scaling, and upgrading, freeing up developers to focus on their application. To get started, create a cluster with Azure Kubernetes Service.”
Just knowing how it works, on a surface-level lets you reason about your software as it is running in a distributed system. But you don’t have to worry about actually managing the underlying cluster!
Similar solutions are being offered by Amazon, Google and soon by DigitalOcean. Even small businesses and individual developers can now scale their applications across the entire planet. A little understanding of how its achieved doesn’t hurt, so you should at least have a passing familiarity with Kubernetes and Dockers.
Everytime you think, “Kubernetes vs Docker?” naysayers would respond by saying Docker is cool, but Kubernetes is a little extreme. But the entire computer science is about extreme automation and Kubernetes takes the containerization model to its logical extreme!
Containers are amazing! They allow us to think about services and systems in a completely new and digital way. Both, Docker and Kubernetes are here to stay. They are continuously changing to transform themselves into something better in the future. Keep your Financial company involved in the Technology era and implement the containers that your infrastructure needs the most.
Designing newer software for a container-centric platform would not only make your fintech apps more scalable, but also more future-proof. Sticking to the old VMs might work for now, but a few years down the line you will eventually have to either bear the heavy cost of migrating everything into containers or abandon your projects altogether. Hopefully, now if someone brings up the topic of “Kubernetes vs Docker” you won’t get swept away by jargons. When trying to deploy a server environment in containers, if you feel stressed or lost, contact us. We can help you deploy the best environments in the Cloud.