Java - Spring Cloud Microservices on Azure
A complete eco-system for an enterprise application
In this era of cloud computing, clients are highly interested in building their applications following the micro-service architecture and utilizing the service offerings from giant cloud infrastructure providers like AZURE, AWS, GCP, etc. People are inclined to choose the serverless ecosystem and service-based infrastructure to minimize the hassle of managing things and ensure availability, scalability, and security. In this article, we will be sharing the tools, technologies, and experiences of building a cloud-based micro-service application and explaining why we are choosing the specific items/tools for our case to build a robust enterprise solution.
The key purpose of this article is to provide a summary of the tools and technologies we have chosen, or Azure offers, that are mostly required by a conventional business application. After finishing this article, you will have an idea about the services or tools one can utilize if planning to develop and deploy a java based microservice application on azure. Discussion about the microservice vs monolithic or comparison between Azure and other cloud services are out of the scope of this article.
- Based on the application nature, our team’s capacity, and some other facts, we prefer Java and Spring framework to build the backend microservices. As we decided to host spring cloud-based micro-services, we have been searching for some managed services that will ensure the scaling up and scaling out by just clicking some options. Besides, monitoring, metrics, and analytics need to be more robust and easily accessible. While searching on Azure, AKS comes first. While analyzing the AKS on the web, we have found another specialized service from azure – “Azure Spring Cloud,” a very specific infra service for spring cloud-based microservice hosting. Visiting the offerings of Azure spring cloud, we have just felt like it will reduce almost 90% of our DevOps works. Besides, monitoring and scaling are so easy that we may offer this dashboard to non-tech people as well.
A brief description of “Azure Spring Cloud” quoted from the Azure website:
“Azure Spring Apps is a platform as a service (PaaS) for Spring developers. Manage the lifecycle of your Spring Boot applications with comprehensive monitoring and diagnostics, configuration management, service discovery, CI/CD integration, and blue-green deployments”
So, why do we like “Azure Spring Cloud” mostly:
- Build-in configuration, discovery, and gateway server
- Easy deployment options using Azure CLI
- Live log streaming
- Application monitoring
- Microservice maps
- Easy scale-up and scale-out options
Build-in Configuration, Discovery Servers
Azure offers configuration, discovery, and gateway servers with the package of azure spring cloud, so you no need to manage these three servers separately. It is also cost-effective. However, we have encountered an issue with the provided discovery server after Azure pushed some updates. We had to re-create the discovery server to fix it.
Easy Deployment Options Using Azure CLI
Azure CLI is a very convenient and developer-friendly tool and using that one can easily manage the azure services. It is very handy to deploy the spring cloud applications using the CLI.
Live Log Streaming
Using Azure CLI, you can see the live log streaming from your computer. This is very handy sometimes to track the application and debug issues in real-time. Besides, it also has a very robust log query and filtering UI.
Azure Application Monitoring
It is an awesome tool to monitor applications. It has the features to build custom dashboards. It provides detailed application maps of the microservices. Distributed tracing is an in-built feature of the application monitoring tool for Azure Spring Cloud.
Easy Scale-Up and Scale-Out Options
Azure offers extremely easy scale-up and out options for spring cloud applications. Apps could be scaled up or down both horizontally and vertically. It provides multiple options for conditional scaling that ensure the efficient utilization of the resources and costs.
Database for Microservices
To ensure the DB scalability parallel to microservices, we have found the “Azure SQL DB” immensely helpful. It provides the option “Elastic Pool”, to ensure the scalability and proper utilization of the resources. Besides, Azure also provides Redis cache as a service.
Azure Blob Storage
Azure Static App
Very easy to deploy and amazingly fast for hosting the single-page JS front-end applications.
One of the beauties of Azure cloud. It is the single place where you will get the project management options – Azure board (Basic, Agile, Kanban, Scrum, etc.), CI and CD, pipelines, release, and so on. It also provides the git repository facility. You can easily configure CI/CD pipelines with Azure-based application infra services like App service, Azure Could Service, Static App service, or at Azure VM. The azure board is highly customizable. You can make the relationship with the task and Git commit. While merging the pull request the related tasks can also be marked as completed.
Selecting Azure Cloud as the hosting environment for our microservice-based enterprise application is a great experience as we are offered all most all the required services as “PaaS” including DevOps under one umbrella. It is a great release for the development team not worrying about scalability, servers, monitoring tools, and so on. You may not need to go to choose some other options while using azure. It is a seamless experience. We have saved a lot of time using the “PaaS” offerings from Azure; thus, we do the project delivery faster. Finally, we do feel – “Azure is really caring about Java now.”