Inspired by The State of Spring 2021 and 2020 reports, we reached out to Spring developers to learn how they are migrating Spring Boot apps to the cloud.
In this first report, you will learn about:
Platforms targeted for Spring Boot app deployments
Challenges with Spring Boot app migration to the cloud
Top monitoring tools and Spring Cloud components used today.
We plan to make this an annual survey that serves as a key source of feedback for Spring teams in Microsoft, VMware, and many other communities. Thank you to everyone who participated!
Our 2021 survey reached a total of 260 qualified individuals attending SpringOne 2021. A wide range of roles, regions, and job levels are represented. Based on the demographics of the event, we estimate 55% of respondents were hands-on developers, 28% were architects and development managers, and 17% were infrastructure experts, line of business experts, or C-level executives. These developers deploy Spring apps to diverse destinations - on-premises systems, clouds such as Azure, AWS, GCP, and other clouds, and platforms such as virtual machines, Kubernetes, managed Web app services, managed Spring Boot services, and Tanzu Application Service.
1. Destination platforms for Spring Boot apps
Top cloud destinations for Spring Boot apps are Kubernetes and Platform as a Service (PaaS) solutions. Developers are moving away from virtual machines to Kubernetes and PaaS solutions.
Managed Kubernetes services are available across cloud platforms, and the majority of developers who are deploying to Kubernetes are deploying to managed Kubernetes services (50%) such as AKS, EKS, and GKE, versus self-managed Kubernetes on virtual machines (36%).
There are also PaaS service destinations like Azure Spring Cloud. Azure Spring Cloud is a unique service where developers can deploy JARs and don’t have to worry about managing any infrastructure or Kubernetes.
About 21% of developers indicated that they plan to use multiple destinations for Spring Boot apps.
2. Challenges with Spring app migration to the cloud
Developers are facing multiple challenges that can be categorized into 3 broad categories:
Migrating Spring app challenges
Transforming apps to Spring challenges
Cloud migration challenges
2A. Migrating Spring app challenges
Developers are challenged with migrating Spring Boot monolith apps to cloud-friendly apps (33%), unsupported versions of Spring Boot to supported versions (20%), and unsupported versions of Spring Cloud components to supported versions (20%).
Migrating Spring Boot monolith apps to cloud-friendly Spring Boot apps
Typically, transforming a Spring Boot monolith app to a cloud-friendly Spring Boot app comprises multiple things, particularly:
Relying on databases for the business state, storage for shareable artifacts, and cache for data shared across app instances -- instead of local files
Relying on ports 80 and 443
Producing logs as event streams
Scale-out to multiple instances to increase availability instead of scale-up
Externalize configurations by leveraging Spring Cloud Config Server
Enable dynamic discovery using Spring Cloud Service Registry
Decentralize load balancing decisions using client-side Spring Cloud Load Balancer
Use a single-entry point by integrating on behalf of specific clients by routing calls through Spring Cloud Gateway
Instrument apps for distributed tracing
Defuse cascading failures by using Spring Cloud Circuit Breaker.
Open-source communities are exploring tools for applying recipes to migrate Spring Boot monoliths to cloud-friendly Spring Boot apps.
Migrate Spring Boot app to supported versions of Spring Boot 2.x
We have seen organizations use Spring Boot apps from version 1.x to 2.2.x. These apps can besafely migratedto Spring Boot 2.5.x and application config data can also besafely migrated and alignedwith Spring Boot 2.5.x. Open-source communities are exploring tools for converting older versions to newer versions of Spring Boot.
2B. Transforming any app to Spring challenges
From The State of Spring 2021 report, we learned that 61% of developers surveyed use Spring Boot as their only or primary development platform. The Spring use continues to grow – for 2021, that number grew 9% to 61% of organizations. Hence, the app modernization to Spring Boot is popular among developers and they are transforming from POJO, Java EE, Spring MVC, and Mainframe apps to Spring Boot. Although these transformations are becoming more common, there are substantial challenges and almost always require rewriting code. This presents an opportunity to help developers transform their applications more efficiently with better tooling and experiences.
2C. Cloud migration challenges
The top challenges when migrating Spring Boot apps to the cloud are migrating associated databases (30%) end-to-end monitoring (24%), testing migrated apps (23%), end-to-end automation (18%), and cutting over traffic to a new production (18%) in the cloud.
3. Top monitoring tools used by developers
Besides data migration, end-to-end monitoring is the #1 challenge for developers who are migrating Spring Boot apps to the cloud.
App development, DevOps, infrastructure, and SRE teams benefit from monitoring and gaining an understanding of the performance of their cloud applications. Observability and monitoring solutions collect and analyze a vast amount of data from app environments, most organizations empower all the teams, including SRE and infrastructure teams, to help business teams to gain insights into operational aspects of their business apps. This practice helps executives and business stakeholders to make data-driven business decisions.
Top Application Performance Monitoring tools (APM) used by Spring Boot developers are cloud providers APM, Prometheus, and traditional APM products such as Dynatrace, AppDynamics, Datadog, and New Relic.
The top end-to-end monitoring tools used for analyzing a vast number of logs and metrics are Splunk, Elastic, and cloud provider’s aggregator such as Azure Log Analytics.
4. Top Spring Cloud components used by developers
As many organizations and developers are migrating Spring Boot monolith apps to cloud-friendly Spring Boot apps, and migrating Spring Boot apps to cloud, the top Spring Cloud components remain the same over the past three years – Spring Cloud Config Server, Spring Cloud Gateway, and Spring Cloud Service Registry. Open-source communities are exploring tools for applying recipes to migrate Spring Boot monoliths to cloud-native Spring Boot apps.
Many organizations are running production workloads powered using Spring in on-premises data centers and are migrating or exploring to migrate those workloads to the cloud. We will be addressing their challenges and working with the community to address the community’s challenges for migrating those workloads to the cloud.
Top cloud destinations for Spring Boot apps are Kubernetes and Platform-as-a-Service (PaaS) solutions. Developers are moving away from virtual machines to Kubernetes and PaaS solutions.
Developers are facing multiple challenges that can be categorized into 3 broad categories – migrating Spring app, transforming any app to Spring, and cloud migration.
Developers are challenged with migrating Spring Boot monolith apps to cloud-friendly apps (33%) and upgrading unsupported versions of Spring Boot to supported versions (20%), and unsupported versions of Spring Cloud components to supported versions (20%).
App modernization to Spring Boot is popular among developers and they are transforming from plain old Java (POJO), Java EE, Spring MVC, and Mainframe apps to Spring Boot.
Besides data migration, the top cloud migration challenges when migrating Spring Boot apps to the cloud are end-to-end monitoring (24%), testing migrated apps (23%), end-to-end automation (18%), and cutting over traffic to new production (18%).
If you participated in our survey, thank you for your feedback! We will continue to engage the community to learn more periodically and learn how Microsoft and the ecosystem of communities can address your challenges as you migrate Spring Boot apps to the cloud.