Repository for Code related to Voxxed Days Singapore 2018 talk on Modernize Application Developement with Highly Scalable Architecture using Docker and Azure.
The application showcases the journey of developer from containerizing application to testing locally using a single node Minikube cluster. It then goes into overdrive mode with deployment to managed Kubernetes cluster in Azure. Icing on the cake is the monitoring solution provided by Azure Container Monitoring
.
The code structure is organized as
src
: contains the source code for theVDSG2018
solutionTechTalksWeb
: Contains source code for the MVC web frontend namedTechTalksWeb
TechTalksAPI
: Contains source code for the backend API namedTechTalksAPI
. The API also acts as a producer of RabbitMQ messages.TechTalksDB
: Contains the initialization script forTechTalksDB
database and the DockerfileTechTalksMQProcessor
: Contains code for onsuming events and writing to the SQL databaseTechTalksELKProcessor
: Contains code for consuming events and writing them to a Elastic Search Index
DotnetCLI
: Contains the dotnet CLI commands for creating solution, projects and adding external packagesPowershell
: contains the Powershell scripts for managing Kubernetes deployments and AKS clusterk8s
: Contains the Kubernetes Manifest files for Minikube, AKS with containerized SQL Server linux and AKS-ManagedSQL running a managed SQL Database in Azure.
The application with all the components deployed via containers will look as
Database persistance is handled by externalizing the SQL server state using Persistenet Volumes
The application uses queue based load levelling pattern
For a production grade scenario, the application uses managed SQL instance instead of a containerized version of SQL Server 2017
For monitoring, Prometheus and Grafana provide metrics collection and visualization