From the course: Azure Kubernetes Service (AKS): Deploying Microservices

Microservices and Kubernetes overview

- [Instructor] For a long time, software applications were mainly developed as monolith, where all the functionalities of the application are tightly coupled in a single code base. For example, an e-commerce application would consist of functions like user management for sign up, sign in and password recovery, catalog management for storing and displaying available items in stock, payment function for checkouts and payment solutions, orders management for displaying customers orders, cancel order functionality, among others. All this made a monolithic application quite large and difficult to scale. Since monoliths are tightly coupled, a failure in one of the functions could make the application crash, causing a downtime of your web application. However, in the past couple of years, microservices are increasingly popular in software development. Microservices are loosely coupled, small and independent software applications that are deployed separately from each other, loosely depend on each other, and each possess their own data in their database as part of a broader software application. Using our e-commerce application example earlier, a microservices architecture approach would be to design a microservice for user management, another microservice for catalog management, one for orders, and another for payment solutions. Each of these four microservices would have its own database to possess data. This way your microservices are scalable to meet the demands of the business, and reliable because a failure of one of the microservices does not necessarily affect the availability of other microservices. And one more thing, due to this small size of your microservice application, it's much easier and faster to run and test the microservices in isolation, not relying on input from another microservice. Now you may wonder how microservices fit into Kubernetes infrastructure. Since microservices are small independent applications that fulfill a specific business or customer function, which you can scale out or in, manage and update independently, it gets to a point where managing deployment and scalability of multiple microservices becomes a manual task that you as an IT or software engineer would want to run away from. Architects in microservices based application with Kubernetes accelerates the delivery, scalability and reliability of your microservice applications. However, before you run your microservice in Kubernetes, you need to containerize the microservice. This involves packaging your service, its dependencies and configurations into a container image. This way, your container image can be deployed and scaled as demand requires in a Kubernetes cluster almost instantaneously, without intervention from you as an IT engineer. In this course, we would use Azure Kubernetes Service, which is a managed Kubernetes orchestration software that provides a means to deploy, manage and scale multiple containers. It can automatically discover services you deploy, allocate appropriate compute resources, and expose your services securely to the internet through a load balancer.

Contents