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.
Last Year's Tracks
Monday, 5 March
-
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.
-
Security: Red XOR Blue Team
Security from the defender's AND the attacker's point of view
-
Microservices/ Serverless: Patterns and Practices
Stories of success and failure building modern service and function-based applications, including event sourcing, reactive, decomposition, & more.
-
Stream Processing in the Modern Age
Compelling applications of stream processing & recent advances in the field
-
DevEx: The Next Evolution of DevOps
Removing friction from the developer experience.
-
Modern CS in the Real World
Applied trends in Computer Science that are likely to affect Software Engineers today.
-
Speaker AMAs (Ask Me Anything)
Tuesday, 6 March
-
Next Gen Banking: It’s not all Blockchains and ICOs
Great technologies like Blockchain, smartphones and biometrics must not be limited to just faster banking, but better banking.
-
Observability: Logging, Alerting and Tracing
Observability in modern large distributed computer systems
-
Building Great Engineering Cultures & Organizations
Stories of cultural change in organizations
-
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.
-
The Practice & Frontiers of AI
Learn about machine learning in practice and on the horizon
-
JavaScript and Beyond: The Future of the Frontend
Exploring the great frontend frameworks that make JavaScript so popular and theg JavaScript-based languages revolutionising frontend development.
-
Speaker AMAs (Ask Me Anything)
Wednesday, 7 March
-
Distributed Stateful Systems
Architecting and leveraging NoSQL revisitied
-
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
-
Architecting for Failure
If you're not architecting for failure you're heading for failure
-
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.
-
Tech Ethics in Action
Learning from the experiences of real-world companies driving technology decisions from ethics as much as technology.
-
Bare Knuckle Performance
Killing latency and getting the most out of your hardware
-
Speaker AMAs (Ask Me Anything)