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.