Deploying Java Microservices on Azure Kubernetes Service(AKS) - Architecture

Azure Kubernetes Service is a managed container orchestration service based on the open-source Kubernetes system. Azure Kubernetes Service is used to handle critical functionality such as deploying, scaling and managing Docker containers and container-based applications.

Architecture 


Data Flow:

  1. A developer makes changes to the Spring web application source code.
  2. Git is the distributed version control system.
  3. The code change is committed to a source control repository, such as BitBucket
  4. To commence the continuous integration (CI) process, a BitBucket webhook triggers a Jenkins project build.
  5. The Jenkins build job utilizes a dynamic build agent in Azure Kubernetes Service to perform a container build process.
  6. A container image is engendered from the code in source control and is then pushed to an Azure Container Registry.
  7. Through continuous deployment (CD), Jenkins deploys this updated container image to the Kubernetes cluster.
  8. Azure Active Directory is used to secure access to the resources.
  9. Containers are deployed to the AKS cluster.
  10. Azure Kubernetes Service report metrics to Azure Monitor.
  11. A Grafana instance provides visual dashboards of the application performance predicated on the data from Azure Monitor.
  12. The administrator accesses via a separate admin portal.
  13. Microservices use the data source to store and retrieve information.
  14. Users access services via apps and a website.
  15. Azure SQL DB reports metrics to Azure Monitor.
  16. A Grafana instance provides visual dashboards of the application performance predicated on the data from Azure Monitor.

Resources

  • Bitbucket is our Git repository management solution designed for professional teams. It gives us a central place to manage git repositories, collaborate on our source code and guide us through the development flow.
  • Jenkins is an open-source automation server that can integrate with Azure services to enable perpetual integration (CI) and continuous deployment (CD). In this scenario, Jenkins orchestrates the creation of new container images predicated on commits to source control, pushes those images to Azure Container Registry, then updates application instances in Azure Kubernetes Service.
  • Azure SQL Database is a plenarily managed platform as a service (PaaS) database engine that handles most of the database management functions such as upgrading, patching, backups, and monitoring without utilizer involution. Azure SQL Database is always running on the latest stable version of the SQL Server database engine and patched OS with 99.99% availability
  • AKS(Azure Kubernetes Service) is an open-source plenarily managed container orchestration service, that can be used to deploy, scale, and manage Docker containers and container-predicated applications in a cluster environment.
  • Azure Container Registry is a hosting platform for Docker images. It is a private registry where developers can store and manage private docker container images and other related artifacts. These images can then be pulled and run locally or used for container-based deployments to hosting platforms.
  • Azure Monitor avails us to track performance, maintain security, and identify trends. Metrics obtained by Monitor can be utilized by other resources and implements, such as Grafana.
  • Grafana is an open-source solution for running data analytics, pulling up metrics that make sense of the massive quantity of data & to monitor our apps with the avail of cool customizable dashboards.
  • Azure Cosmos DB is a fully managed NoSQL database service for building and modernizing scalable, high-performance applications.      
  • Azure Active Directory allows using Azure AD users, groups, or service principals as subjects in Kubernetes RBAC to manage AKS resources securely.

More,

Popular posts from this blog

Learn Java 8 streams with an example - print odd/even numbers from Array and List

Java Stream API - How to convert List of objects to another List of objects using Java streams?

Registration and Login with Spring Boot + Spring Security + Thymeleaf

Java, Spring Boot Mini Project - Library Management System - Download

ReactJS, Spring Boot JWT Authentication Example

Spring Boot + Mockito simple application with 100% code coverage

Top 5 Java ORM tools - 2024

Java - Blowfish Encryption and decryption Example

Spring boot video streaming example-HTML5

Google Cloud Storage + Spring Boot - File Upload, Download, and Delete