If you are developing something that has the potential to explode in usage, you are going to need to be able to scale your backend when your business takes off. It does not matter if it is an IoT device, a smartphone app, an Alexa skill, or a video game. If Amdahl’s law teaches us anything, it is that to do so successfully, you are going to need high degrees of parallelization.
Akka.NET, and its implementation of the actor model, promise you just that: highly parallelizable code that scales beautifully as machines are added to the cluster. But there are more advantages than just scaling. Actor models can make your backend very robust, because of their self-healing nature. The code is also easy to reason about, and easy to test.
But the patterns for designing such a system are different from what you might be used to writing object-oriented code. And there are a few pitfalls that you might want to avoid altogether.
During this workshop, you will build your own backend for an IoT scenario. We will be dealing with the meter readings coming from an electricity meter. We will build an end-to-end system from data ingestion, over shaping data, cleaning data, storing it, generating alerts under certain conditions to finally displaying everything in a web portal. You will not need any prior knowledge about Akka.NET to attend this workshop. All the required concepts are handled during the course.
Everything you learn will be just as valuable in building other types of backend systems. The IoT scenario merely serves as an example to help us understand these key concepts.
During this workshop, you will learn about:
• The Akka.NET actor model
• Using Akka.Remoting to send messages to your ActorSystem
• Designing an actor hierarchy without bottlenecks
• Data normalization techniques and what they can do for your codebase
• Using Akka.Persistence to recover state
• Designing for recovery:
o Using supervision
o Restarting the actor system
• Common Actor design patterns
• An introduction to Akka.Cluster
To attend this workshop, you should be a developer with:
• Working knowledge of the C# programming language
• An understanding of basic threading concepts
• An understanding of LINQ
• A basic knowledge of how to use a SQL Server database from code
You will spend a lot of time coding during this workshop. I will present concepts for the whole class, which you will then apply in code on your own. This workshop will be very hands-on. If you prefer watching slide decks for most of the day, this workshop might not be for you.