Actor Model. Concurrency That Feels Like Home


Details
Abstract:
The emergence of the Microservices Architectural style is nearing the end of its hype cycle and will soon be a common part of the enterprise landscape. Along with this, the number of actively used programming languages has risen significantly and will continue to.
HTTP/REST and messaging like AMQP or JMS are the default communication channels between services. Each service is typically implemented in a sequential programming language that allows for concurrency and parallelism via threads, locks or other primitives. These add complexity and introduce the dangers of race conditions, deadlocks, memory management hell among others. Parallelization may even fail to deliver the promise of increased performance. When scaling beyond one machine becomes inevitable, the thread abstraction breaks down, and separate code has to be written to enable communication between machines.
As distributed computing has become the norm, systems are expected to be reactive. The Reactive Manifesto (http://reactivemanifesto.org) defines the properties of reactive systems, concluding that these must be message driven in order to be responsive, resilient and elastic.
The Actor Model is a model of computation where an Actor is the unit of concurrent computation. Systems are built out of Actors that communicate via messages, regardless of whether these are within the same process, or distributed across the Internet, thus, unifying concurrency, parallelism and distribution.
There are languages, where the Actor Model is the primary model of computation, such as Erlang, Elixir and Pony. Although these have demonstrable strengths, Akka has emerged for the JVM world, with Scala being its primary language, allowing existing Java libraries to be reused. There is, however, a considerable amount of Java teams and developers not willing to switch languages or bound by other constraints. The vlingo/platform (https://github.com/vlingo, https://vlingo.io) enables developers to leverage hard-won Java skills to build type-safe Actor-based systems with no new syntax to learn. This delivers close to POJO designs, but with emphasis on fluent and explicit business models. A positive aspect of starting with an Actor Model framework in the language of one's choice is that reading or writing software against other Actor Model implementations in other languages, such as Pony, becomes easier, as the paradigm is language-independent.
Bio:
Dmitry Ledentsov is a software enthusiast from childhood, and likes to use the right tools for the right job. Thus, he has broad interests in the world of software. Seeing the pains that multi-threading and shared-state-based systems create led him to the Actor Model as defined by Carl Hewitt. Dmitry believes that a lot of accidental complexity can be eliminated with the Actor Model, reducing stress for software professionals and software users.


Actor Model. Concurrency That Feels Like Home