The last topic before we start looking at Kubernetes is to understand why the world is moving from Monolithic to Microservices or servers to containers to manage application deployment. To understand that, we need to take a look at how software development has evolved through the years.
A few years back we had huge monolithic applications that were deployed as huge standalone applications on dedicated servers. For example, consider a banking website. Traditionally you would have a single web frontend that talks to a huge backend which in turns talks to a database. To achieve high availability you would have to horizontally scale the application to multiple servers . Every time something changes in the application, you would have to test and redeploy the whole thing. Also, the code passed through multiple environments such as developers machine, test environment, staging, production and so on. Each of these environments would have minor differences and there was no guarantee that the application would behave in the same way in all the environments.
People then realized that instead of building a single monolithic application, it was prudent to build smaller applications or services that talk to each other via RESTful API or messaging to accomplish the same functionality. Also, with smaller services it was possible to deploy them independently. With the advent of services, the industry also moved to containers since now it was possible to deploy those services along with their dependencies as containers onto a platform that allowed the containers to be created and scaled easily.
Currently, most enterprise applications are moving towards a microservices architecture with applications deployed as containers on an enterprise container platform such as Kubernetes which is hosted on premise or in the cloud with provides such as AWS, google cloud or Azure.
In the next Post we will see an introduction to Kubernetes and then in later video delve into its details.