Lightbend surveyed over 2100 JVM (Java and Scala) developers to study:
- Correlations between development trends and IT infrastructure trends.
- How organizations are modernizing their applications.
- Real production usage breakdowns of emerging technologies.
The full report entitled “Enterprise Development Trends 2016: Cloud, Container, and Microservices Insights from 2100 JVM Developers” examined the main drivers behind the shift from building applications with heavyweight J2EE servers to microservices and lightweight containers.
As shown below, developers that participated in the survey represented a diverse range of companies:
The survey revealed three main findings:
- Microservices and fast data are driving major application modernization efforts.
- Lightweight containers are democratizing infrastructure and challenging Java EE application servers.
- Benefits of portability and flexibility are driving the “cloud native” agenda.
Today’s distributed services, designed for unprecedented heavy volume and data, are relying on reactive systems that are more flexible, loosely coupled, and scalable.
This shift towards reactive systems is explained in the Reactive Manifesto:
These changes are happening because application requirements have changed dramatically in recent years. Only a few years ago a large application had tens of servers, seconds of response time, hours of offline maintenance and gigabytes of data. Today applications are deployed on everything from mobile devices to cloud-based clusters running thousands of multi-core processors. Users expect millisecond response times and 100% uptime. Data is measured in Petabytes. Today's demands are simply not met by yesterday’s software architectures.
Frequent release cycles are key in maintaining demand for continuous data. As stated in the report:
If you’re still releasing software every 12-18 months, you might as well go back to the Waterfall model.
Microservices and Fast Data
Today’s enterprise applications are designed with a focus on real-time data and streaming. Microservices, a relatively new trend in applications development, evolved from Service-Oriented Architecture. As defined in the report:
10 years ago, service-oriented architecture (SOA) embodied many of the same principles as microservices, and had great promise for the design of interfaces and decomposing applications. But where SOA failed was the lack of emphasis on the infrastructure. Microservices are being widely adopted today because in addition to service isolation it embodies deployment and lifecycle concerns that were never adequately handled by SOA.
Matt Brasier, principal consultant at C2B2, posted late last year on the debate concerning microservices versus SOA:
Both SOA and microservices are the same set of principles, applied at different layers of the organisation.
The very existence of microservices comes down to the success of SOA principles.
The real answer to SOA vs microservices is that both are appropriate for different solutions, but as there are a lot more applications being produced than enterprise architectures, the chances are that a microservice framework is a better fit for your project than an ESB.
Steve Millidge, founder and director of Payara and C2B2, stated:
Microservices isn't different from SOA. It's still about SOA.
Despite this, the survey results demonstrates an increasing trend in organizations migrating to microservices as shown below:
Late last year, this increasing trend of microservices had been predicted and earlier this year, InfoQ discussed, in part, “that 2016 would be the year of Java EE microservices.”
Survey results show that frameworks such as, Apache Spark, Apache Kafka, and Akka, designed to meet the demand of continuous data, were the more popular choices as shown below:
While the increasing trend to microservices looks promising, one of the key takeaways with microservices in Lightbend’s report states:
Microservices Seem Easier to Operate, But Are They Really?> — For companies actually running microservices in production, the immaturity of operations tools spiked as a concern for 34% (compared to 22% of total survey responses who cited immaturity of operations tools as a challenge for microservices).
InfoQ discussed lessons learned from the seven microservices antipatterns. Daniel Bryant, Chief Scientist at OpenCredo, discussed the seven deadly sins of microservices and how to avoid them. In this Basho blog, Sean Kelly covered some microservices fallacies as a guide to determine the feasibility of migrating to microservices. And Alex Zhitnitsky takes a “down-to-earth view at frameworks...to actually implement microservices and see what they’re all about” in this OverOps blog. The frameworks discussed were Java EE, Lightbend’s Lagom, Pivotal’s Spring Boot, Dropwizard, and Spotify’s Apollo.
Lightweight Containers
Lightweight containers are building momentum as developers “are looking at containers as that great hope for infrastructure portability that they’ve been chasing for a long time.” As shown below, while 30% of respondents experimenting with containers, 22% are using containers in production and another 22% are piloting them.
Survey results show that containers such as Docker/Docker SWARM, Kubernetes, and Marathon (a container orchestration platform for Mesos and DC/OS) were the more popular choices as shown below:
Docker has close to 50 customers that include ADP, PayPal, Uber, Lyft, and Merck. Kubernetes has almost 20 customers that include SAP, Ancestry, and eBay.
One of the Lightbend report’s key takeaways regarding containers states:
Developers Think Containers Have a Huge Potential to Disrupt the JVM Landscape — 57% of respondents said containers will disrupt the JVM landscape, 32% were not quite sure yet, while only 11% thought containers were mostly hype.
Charles Babcock, editor-at-large, cloud at InformationWeek discusses the nine essentials you need to know about containers.
Conclusion
Other key takeaways from Lightbend’s report include:
- Scala developers are ahead of Java developers in adoption to microservices and lightweight containers:
- Microservices are being used in production by 42% of Scala developers compared to 28% of Java developers.
- Containers are being used in production by 31% of Scala developers compared to 21% of Java developers.
- Developers in smaller companies (1-200 employees) have a higher influence on technology decisions than with larger companies.
- Containers are a more likely choice for writing IoT applications.