Closed ceefour closed 7 years ago
Thank you for the very detailed enhancement request. What you're proposing here is outside of the scope of Spring Boot, but is exactly the sort of thing that's being tackled by Spring Cloud Function that you have linked to above. For the record, here are its goals at stated in its README:
Any lower-level goals that require changes in Spring Boot will be handled on a case-by-case basis when they're identified by the SCF team.
/cc @dsyer @markfisher
@ceefour let's keep the conversation in the issue you've opened in the project @wilkinsona referenced (I can see you've copy/pasted that content anyway).
I'd like to propose support for AWS Lambda / API Gateway deployment (and other cloud providers). Specifically, in order to do this there are incremental enhancements needed, each one builds upon previous:
A standard Spring Boot way and best practices to deploy arbitrary event processing on AWS Lambda, similar to Spring Cloud Function
A standard Spring Boot way to serve Servlet applications on AWS Lambda and API Gateway, using aws-serverless-java-container-spring made by @SAPessi of AWSLabs
spring-boot-starter-tomcat
, but now you havesprint-boot-starter-aws-serverless
Extend support for serving Spring MVC controllers.
Abstraction / expand support beyond AWS, i.e. Azure, GCP, IBM OpenWhisk. I suggest collaborating with Serverless Framework
Tooling to help local development. For example
@Serverless
annotation, if given, will enable checks during local development to detect restricted features in serverless environment and give WARN or even ERROR log or throw exception.Helpful extras to help Spring app developers deploy Spring Boot/MVC apps to cloud function providers. To illustrate the kind of extras possible, allow me to quote Zappa's feature list:
In the past, Java EE (and still to some extent Spring Boot) has been regarded to some people as hard to develop, hard to deploy, hard to maintain (DevOps, scaling, etc.), and expensive to operate (requiring servers etc.) Spring Boot is making it easy to develop. And Kotlin and upcoming Java 9 also makes the entire Spring Boot experience pleasant.
If Spring Boot apps can be deployed to cloud function provider like AWS Lambda, that means app developers gain benefits such as easy deployment, automatic scalability, zero maintenance, stability, less vendor lock-in (i.e. Spring Boot app can be moved from AWS Lambda to OpenWhisk and vice versa). This will make Spring Boot much more attractive and increase adoption.
I sincerely hope that this enhancement proposal can be considered. You guys rock. Thank you! :)