IoT 'Megaservices' - High Throughput Microservices with Akka
Build Fast, Efficient Digital Twins for IoT Devices
Um, did we just say ‘megaservice’?
Yes, but we mean it literally—a megaservice is a high-throughput microservice that is capable of processing up to 1 million logical operations per second (LOPS). This lofty goal is what the future may hold for Tesla, Eero, Vivint, and others that use Akka to scale their IoT platforms to previously unfathomable heights–without being bogged down by continuous trips to a database. So how can we make this happen?
In this interactive presentation by Hugh McKee (@mckeeh3), Developer Advocate at Lightbend, we share our experiences helping our clients create a system architecture that can support high throughput megaservices. We’ll do that using a demo designed to push cloud service providers like Amazon and Google to their limits. Using sample code that you can later run on your own machine, we’ll look at:
- Modeling real-life digital twins for hundreds of thousands of IoT devices in the field, looking into how these megaservices are implemented in Akka.
- Visualizing Akka Actors–which represent IoT digital twins–in a “crop circle” formation that represents a complete distributed Reactive application, and watching at messages are processed across Akka Cluster nodes using cluster sharding.
Since we’re looking at IoT here, we’ll look at how our systems see things at the individual device/entity level, the individual microservice and domain, and also the 30,000 foot view (literally) where millions of actors, each representing a stateful digital twin of a single device, comfortably sit in memory on just a few gigabytes of RAM.
From there, what will it look like when we start to scale things out? Where do we run into bottlenecks in a low-latency distributed system using Event Sourcing and CQRS to manage telemetry from millions of devices in milliseconds? How do we ensure that Akka doesn’t overload other components in the system, namely databases?