Typesafe, provider of a platform for building “Reactive” systems and the company behind Play Framework, Akka and Scala, today announced the results of its survey profiling Reactive adoption in the enterprise.
Key findings of the survey indicate that Reactive system adoption is going mainstream. Indeed, 77 percent of respondents said they are already going Reactive to some degree, with 43 percent researching and prototyping Reactive systems and 34 percent building and deploying systems to production. A further 80 percent said they believe that most successful enterprises will have adopted Reactive systems by 2018.
Jamie Allen, senior director of Global Services at Typesafe, said “Reactive Applications” and “Reactive Systems,” terms that can be used interchangeably, represent the ideals captured in the Reactive Manifesto.
Hardware keeps getting smaller, more powerful and more distributed, he said. To keep up with growing system complexity, “Reactive Applications” are defined by the most important characteristics for applications that participate in this new world of multicore, cloud, mobile and Web-scale systems, Allen added. The Reactive Manifesto describes Reactive Systems as embodying four tenets: Responsive, Resilient, Elastic and Message Driven.
“Reactive is the school of developer thought that takes on some of the hairiest challenges related to isolation, dealing with failure of systems in the face of huge user load or device data (IoT scenarios), notions of ‘state’ and mutability,” Allen told eWEEK. “There are also a lot of intersections between Reactive Applications and Functional Programming direction that have become very popular in Scala—and Java 8, which has also taken a more functional approach to application development.
The survey also showed that Reactive adoption is being driven by two key technology trends: microservices and fast data. Also, microservices and fast data users are rallying around a preferred group of tools and technologies, the survey indicated.
Microservices is a software architecture in which complex applications are composed of small, independent processes communicating with each other using language-agnostic APIs. Unlike its sibling big data—which is typically data at rest—fast data is data in motion; it is real-time data not yet stored as big data.
Tony Baer, principal analyst at Ovum, said, “Fast data is not a monolithic technology or solution. Instead, it comprises a spectrum of technologies leveraging high-performance, multi-core processing, often in conjunction with silicon-based storage where price points are becoming more affordable.”
Rather than acting on data at rest, modern software increasingly operates on data in near real time, Allen said.
“This is especially true with IoT and mobile apps,” he added in an interview. “Consequently, big data is becoming less important than fast data for many companies. As computing systems embrace data in motion, traditional batch architectures are evolving to stream-based architectures. In these systems, live data is captured, processed, and used to modify behavior with response times of seconds or less. There is major business value in sub-second response times to changing information. Think about 10 years ago when you didn’t have a critical piece of market information until the day after it happened—now, think about getting that critical piece of information as it’s happening. This is going to create a lot of value for companies. After all, fast data is critical to fast knowledge, and businesses want knowledge as quickly as possible.”
With the four tenets Reactive systems differ from traditional systems. In traditional enterprise Java apps, services are written in a monolithic way, resulting in strong coupling between the components in the service and between services, Allen said. A system with the services tangled and dependent is harder to write, understand, test, evolve, upgrade and operate independently. The strong coupling can also lead to cascading failures, where one failing service can take down the entire system, instead of allowing you to deal with the failure in isolation, he added.
Typesafe Survey Shows Latest ‘Reactive’ Developer Trends
However, Reactive applications, by contrast, are asynchronous and loosely coupled by default, where services are isolated and adhere to the single responsibility principle, Allen said.
“By having a simple contract that a service lives up to, it can more reliably handle that one thing,” he said. “Relying on simple protocols makes the services easier to compose and to keep isolated from each other—which makes them easier to write, understand, maintain, deploy and upgrade. It is important to avoid direct communication but instead utilize message passing, so that the work can be performed by any node in your deployment footprint, and then optimize for locality to avoid performance costs. Small services with high integrity and cohesion that you can compose, but still manage in isolation—that’s the vision and spirit of Reactive.”
To keep up with growing system complexity, Typesafe co-founder and CTO Jonas Bonér spearheaded the Reactive Manifesto in 2013, defining how to architect Reactive applications.
“A lot of companies have been doing Reactive without calling it ‘Reactive’ for quite some time, in the same way companies did Agile software development before it was called ‘Agile,'” Bonér said in a statement. “But defining a vocabulary around the principles has made it easier for developers and architects to talk about and communicate the benefits of this architecture trend with their business counterparts. This survey is an important snapshot into the technologies and approaches that are being using to develop Reactive systems.”
The Typesafe survey showed that Scala and Java 8 are the preferred languages for developers adopting microservices-based architectures (MSA). In addition to Scala and Java 8, the survey indicated there is a group of tools and technologies that are significantly in use among MSA adopters, including Akka, Amazon EC2, Apache Cassandra, Docker, Apache Kafka, Apache Mesos, Play Framework and Apache Spark.
To facilitate the development of Reactive systems, Typesafe offers its Reactive Platform, which includes Scala, Play Framework and Akka. Scala is an elegant and concise programming language that integrates both functional and object-oriented paradigms. Scala makes it easy to avoid shared state, so that computation can be readily distributed across cores on a multicore server and across servers in a data center. This makes Scala an especially good match for modern multicore CPUs and distributed cloud-computing workloads that help avoid concurrency and promote more parallelized implementations, which is critical at scale.
The Play Framework is a core offering of the Typesafe Reactive Platform. It’s a Web application framework, written in Scala and Java, that simplifies iterative, Reactive application development. Play is a clean alternative to the legacy enterprise Java stacks. It focuses on developer productivity, modern Web and mobile applications, and predictable, minimal resource consumption—CPU, memory, threads—resulting in highly performant, highly scalable applications, Allen said.
And Akka is a toolkit and runtime for building highly concurrent, distributed, resilient, message-driven applications on the Java Virtual Machine. Akka decouples business logic from low-level mechanisms such as threads, locks and non-blocking I/O, and liberates developers from the challenges of managing the state and location of services, he said.
More than 3,000 people took the Typesafe survey, with respondents drawn from a mix of Typesafe community forums, O’Reilly Media newsletter recipients, readers of TheServerSide.com and Voxxed.com, and other social media and community channels. The full results of the “Going Reactive 2016” report are available here.