Presentation: Actors or Not: Async Event Architectures

Track: Architectures You've Always Wondered About

Location: Fleming, 3rd flr.

Duration: 2:55pm - 3:45pm

Day of week: Tuesday

Level: Intermediate - Advanced

Share this on:


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.

Speaker: Yaroslav Tkachenko

Sr Software Engineer @Demonware building Activision's Call of Duty

Yaroslav Tkachenko is a software engineer interested in distributed systems, microservices, functional programming, modern cloud infrastructure and DevOps practices. Currently Yaroslav is a Senior Software Engineer at Demonware (Activision), working on a large-scale data pipeline. Prior to joining Demonware Yaroslav held various leadership roles in multiple startups. He was responsible for designing, developing, delivering and maintaining platform services and cloud infrastructure for mission critical systems.

Find Yaroslav Tkachenko at