I really like what Spring Boot and Spring Cloud has done for building microservices. I have been a Spring developer for a long-time and when I first tried Spring Boot, I was blown away with how much it simplified day-to-day development of JSON/REST based services. Its well thought out use of annotations for doing common tasks like route declaration and JSON serialization make it extremely easy to get started. I can get a deployable microservice written in under 5 minutes. Now, I will qualify that in saying it will be a helloworld microservice. Spring Boot helps keep the "framework" out of my way while writing code.
Microservice-based architectures are extremely powerful because they focus on building small, independent services using industry-accepted practices (eg. REST and JSON). However, because a microservice-based architecture is a distributed architecture it has a tradeoff in terms of complexity. With a distributed application you need things like a configuration management service, service-discovery, intelligent routing. Spring Cloud really takes together a large collection of independent services (e.g. Netflix, HashiCorp, etc...) and provides simple wrappers to get those services up and running quickly. Thats huge early on in a project because trying to add these features later after there are a large number of services in place is very difficult and time-consuming.
Both Spring Boot and Spring Cloud based what I call the "carnell monkey test." I consider myself a pretty average developer and if a "monkey like me" can get the framework up and running, that is usually the sign of a good framework. With Spring Boot and Spring Cloud this was the case.
As for Play and the other frameworks. I have not done anything with Play or Struts (in a long time). My opinion on frameworks is that you have to use the one that fits the context that you are working in. That being said, the great thing about a microservices architecture is that it gives you the flexibility to try out new technologies. In the past, you had to make a big bet when picking the technology you were going to write your application in. With the small size of microservices, you can "hedge" your bet by taking a new technology and writing a single service with it and see if the technology will work for your team.
For the product my division works on, PureCloud we have 200 services written in Java, Node.js, Clojure, Python, Go and I think some Scala. We are constantly evolving and learning what frameworks and languages work best for us.
I hope that answered your question.
John Carnell - Senior Engineer, Genesys PureCloud Division
Author of Spring Microservices in Action
We should throw him a surprise party. It will cheer him up. We can use this tiny ad:
Building a Better World in your Backyard by Paul Wheaton and Shawn Klassen-Koop