Imagine we have a popular e-Commerce application that needs to survive Black Friday.
The application architecture should be based on the following components:
Azure Kubernetes Services (AKS) with the Kubernetes Cluster Autoscaler is used as the main distributed environment and mechanism to scale compute power under load.
Istio’s service mesh improves cluster observability, traffic management, and load balancing.
As a central logging system, Azure Log Analytics and Azure Portal Dashboards are used.
The figure above shows that the AKS cluster contains nodes represented as virtual machines under the hood. The Autoscaler is the main component here. It scales up the node count when the cluster is under high load. It also scales the node down to a standard size when the cluster is under normal load.
Istio provides the data plane and control plane, assisting with the following:
Load balancing
TLS termination
Service discovery
Health checks
Identity and access management
Configuration management
Monitoring, logs, and traffic control
Please note that the architecture includes the Dev, Test, Staging, and Production stages. The formula for the highly available Kubernetes cluster is having separate clusters per stage. However, for Dev and Test, we can use a single cluster separated by namespaces to reduce infrastructure costs.
We use Azure Log Analytics agents and the Portal to create a dashboard for additional logging reinforcement. Istio contains a lot of existing metrics, including those for performance and options to customize them. We can then integrate it with a Grafana dashboard.
Lastly, you can also set up a load test using Istio.
Please check out the following shots for more information regarding this topic: