Presentation: Actors or Not: Async Event Architectures
Share this on:
Abstract
With more and more companies adopting microservices and service-oriented architectures, it becomes clear that the HTTP/RPC synchronous communication (while great) is not always the best option for every use case.
In this presentation, I discuss two approaches to an asynchronous event-based architecture. The first is a "classic" style protocol (Python services driven by callbacks with decorators communicating using a messaging layer) that we've been implementing at Demonware (Activision) for Call of Duty back-end services. The second is an actor-based approach (Scala/Akka based microservices communicating using a messaging layer and a centralized router) in place at Bench Accounting.
Both systems, while event based, take different approaches to building asynchronous, reactive applications. This talk explores the benefits, challenges, and lessons learned architecting both Actor and Non-Actor systems.
What is the focus of your work today?
I work on a large-scale data pipeline at Activision. We consume various telemetry information from Call of Duty games. Currently I'm mostly focused on ingestion and stream processing.
Actually, stream processing is a pretty big area of interest for me recently and I'm trying to learn and absorb as much available information as possible. My background in event-driven systems really helps here.
What’s the motivation for this talk?
I'm constantly amazed how elegant event-driven systems can be: low coupling, expressive failure handling, location transparency... And still, we're so used to building synchronous request/response services. I think that ~90% of all inter-service communication can be made asynchronous. I'm excited to share my knowledge and convince people to try.
How would you describe the persona and level of the target audience?
My talk is deeply technical, but also a little bit inspirational (I hope). It should be good food for thought for any engineer who tried (our just planning to) building service-oriented architectures and faced with brutal reality - anything can fail, timeout or be overloaded. Asynchronous events also become really important when you deal with a large number of microservices.
What do you want “that” persona to walk away from your talk knowing that they might not have known 50 minutes before?
Aside from all the technical details, "Don't afraid to experiment" and "It really depends" are my favourite messages. It's a known fact that asynchronous event architectures have been implemented in many companies and they can be a great fit for a lot of use-cases. But you'll never know unless you try. You probably won't even need to use a new language or framework. Actors are great, but asynchronous operations are getting more and more common nowadays. Learn how to use them.
What trend in the next 12 months would you recommend an early adopter/early majority SWE to pay particular attention to?
Serverless is a pretty popular topic right now and a lot of serverless functionality is event-driven. I think in future we will see even more structure and standards about the event-based communication between serverless functions.
Another interesting topic is stream processing. Modern stream processing frameworks can implement a lot of use-cases historically typical for services-oriented architectures. And the event-based communication plays a very important role in this.
Similar Talks
Tracks
-
Microservices/ Serverless: Patterns and Practices
Stories of success and failure building modern service and function-based applications, including event sourcing, reactive, decomposition, & more.
-
Distributed Stateful Systems
Architecting and leveraging NoSQL revisitied
-
Evolving Java and the JVM: Mobile, Micro and Modular
Although the Java language is holding strong as a developer favourite, new languages and paradigms are being embraced on JVM.
-
The Practice & Frontiers of AI
Learn about machine learning in practice and on the horizon
-
Operating Systems: LinuxKit, Unikernels, & Beyond
Applied, practical, & real-world deep-dive into industry adoption of OS, containers and virtualisation, including Linux on Windows, LinuxKit, and Unikernels
-
Stream Processing in the Modern Age
Compelling applications of stream processing & recent advances in the field
-
Leading Edge Backend Languages
Code the future! How cutting-edge programming languages and their more-established forerunners can help solve today and tomorrow’s server-side technical problems.
-
Modern CS in the Real World
Applied trends in Computer Science that are likely to affect Software Engineers today.
-
DevEx: The Next Evolution of DevOps
Removing friction from the developer experience.
-
Bare Knuckle Performance
Killing latency and getting the most out of your hardware
-
Tech Ethics in Action
Learning from the experiences of real-world companies driving technology decisions from ethics as much as technology.
-
Security: Red XOR Blue Team
Security from the defender's AND the attacker's point of view
-
Architecting for Failure
If you're not architecting for failure you're heading for failure
-
Architectures You've Always Wondered About
Topics like next-gen architecture mixed with applied use cases found in today's large-scale systems, self-driving cars, network routing, scale, robotics, cloud deployments, and more.
-
Observability: Logging, Alerting and Tracing
Observability in modern large distributed computer systems
-
Speaker AMAs (Ask Me Anything)
-
Building Great Engineering Cultures & Organizations
Stories of cultural change in organizations
-
Speaker AMAs (Ask Me Anything)