The Modern Full Life Cycle of a Web Application - The Stack
Intro
This article continues the cycle of the “The Modern Full Life Cycle of a Web Application” articles series. (You can find the first one at this link)
The usual suspects in the modern times are:
Kubernetes (the last version installed by minikube)
Helm
Nginx Ingress Controller
Prometheus
Grafana
Python 3
Pulumi
Kubernetes
What is Kubernetes and why do we need it?
Kubernetes (also known as K8s) is a container orchestration engine.
It has an API which accepts CRUD operations on containerised applications system operations. (For ex: create pod, delete pod etc.)
In this articles series I will work with minikube - when working on my local machine, and AKS (Azure Kubernetes Service) - when moving the application to a production grade level. Almost all major cloud providers have their own offering of managed Kubernetes solutions.
Kubernetes is not the panacea solution for all the infrastructure problems. It is a very complex system. It requires expertise to be managed efficiently and securely and actually help the business rather than be a huge source of frustration and impediments. Many of the modern systems can very easily work on classical virtualisation approaches and do not require Kubernetes to become successful.
My sample application does not have a special requirement for Kubernetes. I use it for the sake of demonstrating the modern tendencies into the infrastructure.
Helm
There are various clients offering CLI user experience towards the Kubernetes API.
Helm is one of them. It offers possibilities to manage the K8s application and their dependencies, version and publish them. With Helm’s help, what was a complex system with external dependencies now is installed with one command.
Nginx Ingress Controller
An “Ingress Controller” is a load balancer working inside a Kubernetes cluster(in our case). It makes easy the management of the applications traffic routing.
Nginx Ingress Controller is the implementation of the Ingress Controller based on Nginx proxy.
Prometheus
Prometheus is an event monitoring and alerting software. It will allow me to gather all the necessary metrics about the Kubernetes cluster as well as the application I am going to use for demo.
Grafana
To visualize the metrics stores into the Prometheus time series storage, I will need a frontend. Grafana has native integration with Prometheus as well as a powerful templating.
Pulumi and Python 3
And finally Pulumi and Python 3. They are tightly related to each other. Pulumi is an infrastructure provisioning tool which is taking the Infrastructure as Code approach to another level by providing the users a powerful DSL which has integrations with major programming languages, one of which is the Python version 3.
For some parts of the infrastructure, I will use Python to provide an unified CLI tool which does both infrastructure provisioning as well as the glueing the infrastructure and the application.
Sign up now so you don’t miss the next issue.
In the meantime, tell your friends!