Where does Azure Spring Application Enterprise (ASAE) fit in?
Azure Spring Application Enterprise (ASAE) is a fully managed environment for hosting your Spring Boot App with simple, intuitive hooks into other Azure services (such as cache, DB, object storage, etc). If you are building or managing some of the 58% of production Java apps using Spring I would highly recommend finding out more about ASAE and how it can help you.
Over the last five and half years of deploying production Spring code, I have seen a few deployment patterns. I will briefly highlight the main three, the biggest pros and cons, and where ASAE fits into this picture.
The most basic solution is to deploy your app to a “JVM near you”. This could be some server you have on hand that’s running Nginx / apache or in more advanced cases in a Docker container. Pros: you have complete control. Cons: you have to create everything yourself, from networking, logging, dashboards, APM, environment promotion…
2. App Engine
This would be using a ready-to-go deployment engine from any major cloud (e.g. Google App Engine, AWS Beanstalk, Azure Container Apps). This will give you a basic CLI, and some guarantees about networking and performance, the basic ability to externalize your configs. But you will be limited in your feature set and ability to manage and deploy complex apps. You have limited control over your app as well as limited tools to enable advanced capabilities. Good if you have a basic app with few tentacles into external services and limited usage.
3. Pivotal Cloud Foundry
My first experience deploying Spring Boot apps was using Pivotal Cloud Foundry (now Tanzu Labs). This was a fully managed PAAS solution. The pros are easy to see, it just works. You can do a simple cf push, specify a buildpack, and manifests with dependent services and it takes care of it all behind the scenes. It has hooks into various clouds and internally to deploy whatever services and service bindings for the rest. As long as your buildpack is enabled you can be confident your app will work anywhere. The biggest downside is around maintenance and overhead, managing a PCF foundation is a lot of ops overhead and where we were we had 6 regions * 3 environments = 18 foundations to manage, patch, and secure. I know, I know there are more pros and cons. Including the go-router being a single point of failure and the ability to “auto-scale” your apps/foundation. This is not an in-depth comparison of options. If you would like to chat further please feel free to reach out or comment!
Where does Azure Spring Apps fit in?
Azure Spring Apps is the next evolution to PCF. Where PCF requires you to manage the infrastructure as a PAAS, Azure Spring Apps will manage that for you. It has direct hooks into Azure ecosystem to easily use infrastructure that has been provisioned throughout your cloud environment. Since ASA sits on top of Kubernetes it has fantastic options for auto-scaling making it a great choice for dynamic microservices. It has out-of-the-box capabilities for logging, application performance monitoring, dashboards, alerting, and more. It has a simple CLI to deploy apps, manual and automated auto-scaling. As administrators, you don’t have to worry about infrastructure, but still have control over build-packs, instance sizing, and quotas to limit potential cost (a big advantage over Kubernetes). The biggest downside is that you are tied into Azure.
- ASAE allows you to ship faster.
- Deploy and manage Spring and polyglot applications (buildpacks not just for Spring, but also NodeJS, Python, Go, and .NET Core)
- Effortless routing (leveraging spring cloud gateway and API Portal)
- Flexible and configurable VMWare Tanzu Components
2. Fully integrate into Azure and Java ecosystem
- Expanding capabilities
- Service Connector
- Zero-trust secure network
- Secrete management: Key-vault
- Easy authentication hooks using Azure AD, social media, or SSO
- End-to-end monitoring
- End-to-end automation (easy hooks with CI/CD e.g. Azure DevOps)
- Spring announcement of Azure Spring Apps
- Learn using an MS Learn module or self-paced workshop on GitHub
- Deploy Fitness Store Spring Boot apps to Azure
- Deploy Animal Rescue Spring Boot apps to Azure
- Learn more about implementing solutions on Azure Spring Apps
- Deploy Spring Boot applications by leveraging enterprise best practices – Azure Spring Apps Reference Architecture
- Migrate your Spring Boot, Spring Cloud, and Tomcat applications to Azure Spring Apps
- Wire Spring applications to interact with Azure services
 https://snyk.io/jvm-ecosystem-report-2021/ Industry report showing that 58% of deployed apps leveraged Spring Boot.