Is Spring Boot Dying?
Java developers have been leveraging the Spring framework for decades to write enterprise grade applications. Through an emphasis on dependency injection and abstraction, Spring has allowed devs to quickly bootstrap applications and focus on business logic rather than reinventing wheels.
Spring Boot has accelerated the popularity of Spring by simplifying the deployment process even further. By handling configuration and embedding web servers out of the box, Spring Boot gives developers even more time back.
Despite the framework's robust community and wide adoption, the advent of cloud computing and "serverless" architecture has some questioning the continued use of something like Spring Boot. After all, if cloud functions allow us to write code in a serverless environment then who really cares about an embedded web server?
In this article, we explore such questions and analyze the benefits of using something like Spring Boot in todays serverless ecosystem.
Is Spring Boot losing popularity?
Technology moves really fast, making it hard to gauge if something like Spring Boot is losing popularity. We can take hints from trends in Google searches and GitHub to get a better idea.
Looking at the following google trends search paints an interesting picture...
Notice how this Google Trends search conveys the interest of the search term "Spring Boot" over the past 5 years. While we certainly see ups and downs in the popularity, you'll notice there isn't any dramatic drop off at the end. This implies Spring Boot is still alive and well based on the fact that it's search hasn't tailed off.
With that said, Google trends can be misleading. Evaluating things like GitHub trends can be more revealing as we see what repos developers are forking / starring.
At the time of this writing, the xkcoding / spring-boot demo is showing as the 8th most trending Java repo on Github. With over 10k forks and 30k stars it seems that the Java community is still digging Spring Boot.
Talking with software engineers can also shed light on the situation. As a senior software engineer with over 15 years experience, I can safely say Spring Boot is still thriving (especially in enterprise environments). Big companies across different industries use Spring including large financial institutions, Netflix, LinkedIn, Uber, Zillow, etc.
I've personally used Spring Boot at EVERY single dev job I've had including gigs at international banks and publicly traded companies. Larger organizations love Java because it is safe, robust, and tested.
While newer technologies surrounding Node, Elixir, Rust, etc. are always being adopted, the Java ecosystem is heavily relied on. Many legacy projects are written in Java. And I haven't come across a Java application that isn't using the Spring framework.
Does Spring Boot have a future?
Short answer, yes. Spring Boot will remain relevant even with the increased emphasis on cloud computing. Through projects like Spring Cloud (built on top of Spring Boot), developers can easily implement design patterns that cater to distributed systems. Things like distributed sessions, configuration management, load balancing, etc. can be easily bootstrapped to applications thanks to Spring Cloud.
Applications written in Spring Boot also play well with containerization. You can easily run Spring Boot applications inside Docker containers and deploy them to cloud environments using things like AWS Fargate and Elastic Kubernetes service.
What is replacing Spring Boot?
There's a growing camp of people that believe cloud functions are replacing Spring Boot. Cloud functions strip away the configuration and hosting nightmares for developers by allowing them to focus solely on writing code.
For example, if you want to expose an API endpoint that saves user information to a database you can simply write the logic in a AWS lambda function and configure an endpoint to trigger the logic within AWS. No need to deploy and manage some containerized solution like Spring Boot.
Despite the convenience, this approach does have its pitfalls. With convenience, you sacrifice flexibility as the cloud providers control the runtime environment. State management, resource limits, cold starts, vendor lock-in are all issues experienced with a serverless approach.
Spring Boot and Java aren't going anywhere. There's nothing stopping you from using Java and the Spring Boot ecosystem in a cloud environment and these are perfectly acceptable ways of developing applications in today's world.
While it's important to explore alternative languages and frameworks that may better suit your specific needs, theres no reason why you can't host your solution in the cloud using Spring Boot.