Azure Spring Apps is a great way to build and deploy modern applications on Azure. It's a fully managed platform that allows you to create, deploy, and manage microservices-based applications.
Azure Spring Apps supports popular frameworks like Spring Boot and Spring Cloud, making it a great choice for Java developers. You can also use it with other frameworks and languages.
To get started with Azure Spring Apps, you need to create a resource group in the Azure portal. This will be the container for all your Azure resources.
Once you've created your resource group, you can create an Azure Spring Apps instance. This will give you a managed environment to deploy and run your Spring-based applications.
Pricing and Plans
Azure Spring Apps offers three pricing plans: Basic, Standard, and Enterprise. The Basic plan is ideal for individual development and test purposes, providing entry-level hosting support for Spring applications on Azure.
The Basic plan includes 4 GB of memory and 2 vCPUs, with the first 50 vCPU-hours and 100 memory GB-hours free each month. You'll be billed for actual additional usage based on the total 'Basic Overage Memory Duration' and 'Basic Overage vCPU Duration'.
Eureka and Spring Cloud Config are included at no extra charge in the Basic price plan. The base price for the Basic plan is $-/hour, with an overage vCPU price of $-/vCPU-hour and an overage memory price of $-/GB-hour.
The Standard dedicated plan is hosted in Azure Container Apps environments and designed for seamless interaction with other apps running in the same environment. You'll be billed for the total number of vCPUs and memory provisioned in dedicated workload profiles, per second that each instance is running.
The Standard consumption and dedicated plan combines the best of pay-as-you-go and resource-based pricing, offering flexibility and cost predictability. A consumption workload profile is always created by default, and you can add dedicated workload profiles to fit the requirements of your workload.
Here's a comparison of the Basic and Standard dedicated plans:
The Enterprise plan is designed for production workloads with VMware Tanzu components, but its pricing and feature details are not specified in the provided article sections.
Features and Benefits
Azure Spring Apps offers a range of features and benefits that make it an attractive choice for Spring developers.
You can efficiently migrate existing Spring apps and manage cloud scaling and costs by deploying them to Azure Spring Apps. This service also allows you to modernize your apps with Spring Cloud patterns to improve agility and speed of delivery.
Azure Spring Apps supports both Java Spring Boot and ASP.NET Core Steeltoe apps, with Steeltoe support currently offered as a public preview.
With Azure Spring Apps, you can deploy any type of Spring app, including web apps, microservices, event-driven, serverless, and batch, without the need for Kubernetes. This allows you to take advantage of the Azure ecosystem while using your existing investments.
You can also focus on what matters – your apps, business logic, and delivering value to your users – by deploying any type of Spring or polyglot apps, either from source code or artifacts, with support for container creation and maintenance.
Here are some of the key features and benefits of Azure Spring Apps:
- Fully managed infrastructure to focus on Spring Boot and other Spring app development while maintaining app portability
- Seamless app management with Azure and Spring capabilities supported by Microsoft and VMware
- Fast and effortless app migration to shorten the path to production from months to days
- Compatibility with an ecosystem of familiar tools to leverage existing IT investments and maintain developer productivity
- Azure Spring Apps manages the underlying infrastructure, Java Development Kit (JDK), base images, and vulnerability scanning and patching
Azure Spring Apps also provides a platform as a service (PaaS) for Spring developers, managing your application infrastructure so that you can focus on application code and business logic.
Security and Compliance
Azure Spring Apps prioritizes security and compliance, ensuring your application data is protected. The service has a robust security posture with features like secure access, secure communications, and secrets management.
Azure Spring Apps provides complete isolation between service instances, preventing unauthorized access to your application data. This isolation is a crucial aspect of maintaining data security.
Azure Spring Apps also provides complete TLS/SSL and certificate management, ensuring secure communication between your application and users. Critical security patches for OpenJDK and Spring runtimes are applied as soon as possible, keeping your application up-to-date and secure.
Here are some key security features of Azure Spring Apps:
- Isolated service instances
- Complete TLS/SSL and certificate management
- Critical security patches for OpenJDK and Spring runtimes
Service Level Agreement
Reviewing the Service Level Agreement (SLA) for Azure Spring Apps is a crucial step in ensuring the security and compliance of your cloud-based applications. The SLA outlines the expected uptime and performance of the service.
Azure Spring Apps guarantees a minimum of 99.95% uptime, which is measured over a calendar month. This means that your application should be available at least 99.95% of the time.
The SLA also covers issues related to data loss, corruption, or deletion. If such an issue occurs, Azure will work with you to restore your data to a point in time before the incident occurred.
Establish Security Baseline
Establishing a security baseline is crucial for any application, and Azure Spring Apps takes it seriously. It has an aggressive security posture with various functionalities integrated to ensure the security of your application.
One of the key features is secure access, which is essential for protecting your application from unauthorized access. Secure communications are also integrated, ensuring that all data transmitted between your application and users is encrypted.
Azure Spring Apps also provides secrets management, which is a must-have for any application that handles sensitive data. Workload isolation is another feature that ensures each application instance is isolated from others, preventing any potential security breaches.
Role-based access control (RBAC) is also integrated, allowing you to control who has access to your application and what actions they can perform. Passwordless connection support is also available, eliminating the risk of password-related security issues.
Here is a summary of the security features integrated into Azure Spring Apps:
- Secure access and communications
- Secrets management
- Workload isolation
- Role-based access control (RBAC)
- Passwordless connection support
These features work together to provide a robust security baseline for your application, giving you peace of mind and protecting your users' data.
Customer Data Stored Outside Specified Region?
Azure Spring Apps is a regional service, storing all customer data in a single, specified region. This means you can rest assured that your data is kept within a specific geographic area.
All customer data in Azure Spring Apps is stored to a single, specified region, as stated in the documentation on Data residency in Azure. This is a key aspect of security and compliance for businesses that require data to be stored within a specific region.
You can learn more about geo and region by checking out the Data residency in Azure documentation, which provides a comprehensive overview of these concepts.
Observability and Monitoring
Observability and monitoring are crucial for any application, and Azure Spring Apps provides several options to help you achieve full-stack observability. You can add observability to your Spring apps with New Relic One, which integrates seamlessly with Azure Spring Apps, allowing you to view your data in a single UI for streamlined troubleshooting.
AppDynamics offers another powerful tool for achieving full-stack observability, providing real-time visibility and correlated insights for Spring Boot applications running in Azure Spring Apps. This enables you to quickly isolate the root cause of any performance issue and optimize your applications to deliver exceptional experiences.
To unify observability for your Azure Spring Apps data, you can use Elastic, which provides a powerful Azure-native data store for interactive analytics using rich visualizations in real time. This allows you to surface outliers with machine learning and react to events happening anywhere in your environment with intuitive navigation between logs, metrics, and APM traces.
Here's a quick rundown of the monitoring options available in Azure Spring Apps:
Add Observability
Adding observability to your Spring apps is a game-changer for troubleshooting and performance optimization. With the right tools, you can get real-time visibility into your application's behavior and identify issues before they affect users.
New Relic One and Azure Spring Apps integration allows you to send your application data directly to New Relic One, giving you access to a powerful observability platform. This integration provides a single UI for streamlined troubleshooting.
AppDynamics offers full-stack observability across Spring workloads, providing real-time visibility and correlated insights for Spring Boot applications running in Azure Spring Apps. This helps you quickly isolate the root cause of any performance issue.
Elastic unifies observability for your Azure Spring Apps data in a powerful Azure-native data store, allowing you to apply interactive analytics using rich visualizations in real time. This helps you surface outliers with machine learning and react to events happening anywhere in your environment.
Here are some key options to consider when adding observability to your Spring apps:
Diagnostic logging is also an important aspect of observability, as it makes it easier to debug issues when you deploy an Azure Spring Apps solution. To set up diagnostic logging, you can create a Log Analytics workspace and configure the diagnostic settings for your Azure Spring Apps instance.
Accessing Kubernetes for Container Manipulation
You can't directly access Kubernetes to manipulate your application containers in Azure Spring Apps, as it abstracts the developer from the underlying architecture.
This abstraction allows you to focus on writing application code and business logic, rather than worrying about the container management layer.
As a result, you won't have direct control over your containers in the same way you would with a more traditional deployment setup.
How Many Public IP Addresses Does an Instance Have?
When working with Azure Spring Apps, it's essential to understand how many public IP addresses each instance type has.
The number of outbound public IP addresses varies across plans and instance types.
Azure Spring Apps instance types have specific default numbers of outbound public IP addresses.
For Basic plan instances, the default number is 1.
Standard and Enterprise plan instances default to 2.
VNet injection instances, on the other hand, default to 1.
Here's a quick reference to help you keep track:
Hosting and Deployment
Azure Spring Apps provides a fully managed VMware Tanzu Build Service, which automates the creation, management, and governance of containers at enterprise scale.
The Tanzu Build Service offers a higher-level abstraction for building applications, reducing the operational burden on developers and supporting enterprise IT operators who manage applications at scale. You can configure what Tanzu Buildpacks to apply and build polyglot applications that run alongside Spring applications on Azure Spring Apps.
Azure Spring Apps intelligently schedules your applications on the underlying Kubernetes worker nodes, providing high availability by distributing applications with two or more instances on different nodes. Each service instance is backed by Azure Kubernetes Service with multiple worker nodes.
Here's a quick rundown of the buildpack options available with Tanzu Build Service:
- Open-source Cloud Native Buildpacks
- Commercial Language Family Buildpacks for VMware Tanzu
These buildpacks make it easier to build Spring, Java, NodeJS, Python, Go, and .NET Core applications, and you can also use them to configure application performance monitoring agents like Application Insights, New Relic, Dynatrace, AppDynamics, and Elastic.
Deploy and Manage
Deploying and managing applications on Azure Spring Apps is a breeze. You can deploy and manage Spring and polyglot applications with ease.
The Azure Spring Apps Enterprise plan provides the fully managed VMware Tanzu Build Service, which automates the creation, management, and governance of containers at enterprise scale. This service offers a higher-level abstraction for building applications, reducing the operational burden on developers.
Tanzu Build Service provides a balance of control and supports enterprise IT operators who manage applications at scale. It also offers a range of buildpack options, including Open-source Cloud Native Buildpacks and Commercial Language Family Buildpacks for VMware Tanzu.
You can configure what Tanzu Buildpacks to apply and build polyglot applications that run alongside Spring applications on Azure Spring Apps. This makes it easy to build applications in various languages, such as Java, NodeJS, Python, Go, and .NET Core.
Tanzu Buildpacks also supports application performance monitoring agents, including Application Insights, New Relic, Dynatrace, AppDynamics, and Elastic.
Azure Spring Apps intelligently schedules your applications on the underlying Kubernetes worker nodes, providing high availability and scalability. Each service instance is backed by Azure Kubernetes Service with multiple worker nodes.
To provide high availability, Azure Spring Apps distributes applications with two or more instances on different nodes. This ensures that your applications are always available and running smoothly.
To deploy your code to Azure Spring Apps, you'll need to gather some information and run a few commands. Here's a step-by-step guide:
- Gather the following information:
- The name of your Azure Spring Apps instance
- The path to your artifact (e.g. `target/demo-0.0.1-SNAPSHOT.jar`)
- Run the following command: `az spring app deploy -n pet-supplies-app --artifact-path target/demo-0.0.1-SNAPSHOT.jar`
- Once the deployment is complete, you can test access to your app using the following curl command: `curl $(az spring app list --query "[?name=='pet-supplies-app'].[properties.url]" -o tsv)`
Create an Instance
To create an instance of Azure Spring Apps, you'll need to install the spring extension using the Azure CLI. You can do this by running the command `az extension add --name spring`.
The name of your Azure Spring Apps instance is important, so keep it simple and descriptive. Set the environment variable `AZURE_SPRING_CLOUD_NAME` to the name of your instance.
To create the instance, run the command `az spring create -n $AZURE_SPRING_CLOUD_NAME -g $AZURE_RESOURCE_GROUP --sku Basic`. This will create an Application Insights component for gathering analytics and telemetry.
You'll also need to set the session defaults for the resource group and Azure Spring Apps instance names. This will save you time in the long run by not having to enter them for every command. Run the commands `az configure --defaults group=$AZURE_RESOURCE_GROUP` and `az configure --defaults spring-cloud=$AZURE_SPRING_CLOUD_NAME`.
Here's a summary of the steps:
Frequently Asked Questions
What is the difference between azure Spring apps and Azure App Service?
Azure Spring Apps is designed for microservice architectures, while Azure App Service is optimized for hosting web applications. If you're building a Spring-based application, Azure Spring Apps is the better choice, but for general web app hosting, Azure App Service is the way to go.
What versions of spring apps are supported by azure?
Azure Spring Apps supports Java LTS versions, including Java 8, 11, 17, and 21, for a stable and secure experience. Check our documentation for more information on supported versions and best practices.
Sources
- https://azure.microsoft.com/en-us/pricing/details/spring-apps/
- https://azure.microsoft.com/en-us/products/spring-apps
- https://learn.microsoft.com/en-us/azure/spring-apps/enterprise/overview
- https://learn.microsoft.com/en-us/azure/spring-apps/enterprise/faq
- https://azure.github.io/cloud-scale-data-for-devs-guide/migrate-to-azure-spring-apps.html
Featured Images: pexels.com