It all started with taking on the monolith code by microservices, and shaping the final product into a lego-like software.
Services like shopping carts or the payment option began to be written as separate pieces of software. Technologies like orchestration (K8s) and containerization (Docker) are helping companies in outstripping profitable parameters from making easy-to-deploy applications to handling the huge rush on a big sale day.
K8s and similar technologies like Docker Swarm, are technically known as container orchestration platforms designed to support large and distributed systems, and the sales pitch is:
Run billions of containers a week, Kubernetes can scale without increasing your operation team. Well, even if you have 10-100 containers, just imagining we are not all Google size…still it’s for you.
If you are at the beginning of the journey or just considering adopting K8s and Docker containers for your cloud infrastructure, this post will hopefully help you evaluate some of the major advantages offered by these technologies.
Squeezing every ounce by avoiding vendor lock-in
Migrating to the cloud can bring a lot of benefits to your company, such as increased cost savings, flexibility, and agility. But if something goes wrong with your CSP (Cloud Service Provider) after your migration, moving to another cloud vendor can incur substantial costs. No portability support and the steep learning curve are a couple of the reasons why it becomes harder to switch vendors.
Kubernetes and Docker containers make it much easier to run any app on any public cloud service or any combination of public and private clouds.
Container technology helps isolate software from its environment and abstract dependencies away from the cloud provider. And it should be easy to transfer your application to a new cloud vendor if necessary, since most CSPs support standard container formats. Thus easing the transition from one CSP to another making the whole process more cost-effective.
Rolling back the deployment cycles
There is an increasing demand to decrease the delivery time and be able to ship more number of features at a time. Manual testing and complex deployment processes can cause post release issues which worked in testing, but failed in production, resulting in delays in getting your code to production.
K8s and Docker containers help you shrink the release cycles through declarative templates and rolling updates.
It is the default strategy to update the running version of your app. You can deploy such updates as many times as you want and your user won’t be able to notice the difference. Moreover, with its production readiness, you can ensure zero-downtime deployment when you wish not to interrupt your live traffic.
Adapting the infrastructure to new load conditions
When the workload to perform a particular business function suddenly increases, the entirety of a monolithic application has to be scaled to balance the workload. This results in consumption of computing resources. And in the world of cloud, redundant usage of resources costs money.
Especially, in the case when you have a 24/7 production service with a load that is variable in time, where it is very busy during the day in the US, and relatively low at night.
Docker containers and Kubernetes allow scaling up and down the physical infrastructure in minutes through auto-scaling tools.
Scaling is typically done in two ways with Kubernetes:
When you add more instances to the environment with the same hardware specs. For example, a web application can have two instances at normal times and four at busy ones.
When you increase your resources. For example, faster disks, more memory, more CPU cores, etc.
Kubernetes and Docker container technologies are now seen as the de facto ecosystem. It can lead to great productivity gains if properly implemented into your engineering workflows, and adopted at the right time.
You can make the move especially when…
- Your team is facing trouble managing your platform because it is spread across different cloud services.
- Your company has already moved its platform to the cloud and has experience with containerisation, but is now beginning to have difficulties with scale or stability.
- You have a team that already has significant experience working with containers and cloud services.
But what about tons of configurations and setup that is required to maintain and deploy an application, you will ask.
Well to be honest, the amount of benefits it offers deserves a little bit of complexity.