Introduction to the sample app
Note
The first 50 vCPU hours and 100 GB hours of memory are free each month. For more information, see Price Reduction - Azure Spring Apps does more, costs less! on the Apps on Azure Blog.
Note
Azure Spring Apps is the new name for the Azure Spring Cloud service. Although the service has a new name, you'll see the old name in some places for a while as we work to update assets such as screenshots, videos, and diagrams.
This article applies to: ✔️ Basic/Standard ❌️ Enterprise
This series of quickstarts uses a sample app composed of two Spring apps to show how to deploy a .NET Core Steeltoe app to the Azure Spring Apps service. You use Azure Spring Apps capabilities such as service discovery, config server, logs, metrics, and distributed tracing.
Functional services
The sample app is composed of two Spring apps:
The
planet-weather-provider
service returns weather text in response to an HTTP request that specifies the planet name. For example, it may return "very warm" for planet Mercury. It gets the weather data from the Config server. The Config server gets the weather data from a YAML file in a Git repository, for example:MercuryWeather: very warm VenusWeather: quite unpleasant MarsWeather: very cool SaturnWeather: a little bit sandy
The
solar-system-weather
service returns data for four planets in response to an HTTP request. It gets the data by making four HTTP requests toplanet-weather-provider
. It uses the Eureka server discovery service to callplanet-weather-provider
. It returns JSON, for example:[{ "Key": "Mercury", "Value": "very warm" }, { "Key": "Venus", "Value": "quite unpleasant" }, { "Key": "Mars", "Value": "very cool" }, { "Key": "Saturn", "Value": "a little bit sandy" }]
The following diagram illustrates the sample app architecture:
Note
When the application is hosted in Azure Spring Apps Enterprise plan, the managed Application Configuration Service for VMware Tanzu assumes the role of Spring Cloud Config Server and the managed VMware Tanzu Service Registry assumes the role of Eureka Service Discovery without any code changes to the application. For more information, see Use Application Configuration Service for Tanzu and Use Tanzu Service Registry.
Code repository
The sample app is located in the steeltoe-sample folder of the Azure-Samples/Azure-Spring-Cloud-Samples repository on GitHub.
The instructions in the following quickstarts refer to the source code as needed.
In this quickstart, we use the well-known sample app PetClinic to show you how to deploy apps to the Azure Spring Apps service. The Pet Clinic sample demonstrates the microservice architecture pattern and highlights the services breakdown. You see how to deploy services to Azure with Azure Spring Apps capabilities such as service discovery, config server, logs, metrics, distributed tracing, and developer-friendly tooling support.
To follow the Azure Spring Apps deployment examples, you only need the location of the source code, which is provided as needed.
The following diagram shows the architecture of the PetClinic application.
Note
When the application is hosted in Azure Spring Apps Enterprise plan, the managed Application Configuration Service for VMware Tanzu assumes the role of Spring Cloud Config Server and the managed VMware Tanzu Service Registry assumes the role of Eureka Service Discovery without any code changes to the application. For more information, see the Infrastructure services hosted by Azure Spring Apps section later in this article.
Functional services to be deployed
PetClinic is decomposed into four core Spring apps. All of them are independently deployable applications organized by business domains.
- Customers service: Contains general user input logic and validation including pets and owners information (Name, Address, City, Telephone).
- Visits service: Stores and shows visits information for each pet's comments.
- Vets service: Stores and shows Veterinarians' information, including names and specialties.
- API Gateway: The API Gateway is a single entry point into the system, used to handle requests and route them to an appropriate service or to invoke multiple services, and aggregate the results. The three core services expose an external API to client. In real-world systems, the number of functions can grow quickly with system complexity. Hundreds of services might be involved in rendering one complex webpage.
Infrastructure services hosted by Azure Spring Apps
There are several common patterns in distributed systems that support core services. Azure Spring Apps provides tools that enhance Spring Boot applications to implement the following patterns:
- Application Configuration Service for Tanzu: Application Configuration Service for Tanzu is one of the commercial VMware Tanzu components. It enables the management of Kubernetes-native ConfigMap resources that are populated from properties defined in one or more Git repositories.
- Tanzu Service Registry: Tanzu Service Registry is one of the commercial VMware Tanzu components. It provides your apps with an implementation of the Service Discovery pattern, one of the key tenets of a Spring-based architecture. Your apps can use the Service Registry to dynamically discover and call registered services.
Database configuration
In its default configuration, Pet Clinic uses an in-memory database (HSQLDB) which is populated at startup with data. A similar setup is provided for MySQL if a persistent database configuration is needed. A dependency for Connector/J, the MySQL JDBC driver, is already included in the pom.xml files.
Sample usage of PetClinic
For full implementation details, see our fork of PetClinic. The samples reference the source code as needed.
Next steps
Feedback
Submit and view feedback for