In this session you will learn about how companies ranging from the Fortune 500 to brand new startups are changing the way the build .NET applications to leverage the very latest offerings from Microsoft and the .NET open source community.
You'll learn how and why companies are moving their applications onto .NET Core; rearchitecting them to use Akka.NET for fault tolerance, scalability, and the ability to respond to customers in real-time; containerizing them with Docker; putting everything together using Kubernetes for orchestration on-premise or on the cloud with Azure Kubernetes Services.
This session will provide an overview of how all of these technologies fit together and why companies are adopting them.
• You’re responsible for the consistency of
• State has to be moved between nodes
during deployments, scaling, and recovery
• Deployment tools need to allow for
movement of state at deploy-time.
Actors Simplify State
• Actors are serial message processors –
state can’t be modified concurrently.
• State is always shared via passing
immutable messages, thus no side effects.
• Actors can be easily partitioned into
hierarchies of entities.
• IActorRef, the actor reference, is location
transparent. Messages can be shared
across network boundaries automatically.
State Distribution, Scaling,
and Fault Tolerance
Highly Available State with
Each node is its
State Distribution Techniques
• Consistent hash routing
– All events with same entity ID (hash range)
end up in same server
– Uses consistent hashing, but smarter
handling of partition hand-offs
• Writable Replication
– Have state written to multiple places in
network at same time
guarantee maximum of 1
instance of entity actor across
• Ubiquitous – runs on-
premise, on the cloud,
• Robust deployment
models – including
handling for stateful
• Rich ecosystem.
Why Azure Kubernetes
• Takes only a few
minutes to setup.
• Integrates well with
• Great environment for
Kubernetes Core Concepts
• K8s is an “orchestration” platform – networks
multiple container hosts together into unified
• Applications are deployed to the K8s cluster –
K8s then orchestrates the instantiation of
containers across hosts.
• Applications define via configuration:
– Which parts can be exposed publicly and how.
– How different parts of application can be deployed and
K8s Key Terms (for
• “Pod” – represents a single application unit
of execution. Consists of 1 or more Docker
• “Stateful set” – a deployment group of
identical pods working together as a
• “Service” – defines how a stateful set
exposes itself to other services within K8s
and Akka.NET cluster.
Akka.Cluster K8s Methodology
• All applications are deployed as stateful
– State is fundamental to how Akka.Cluster
• All internal Akka.Cluster functionality is
exposed as “ClusterIp” services
• External / public functionality can exposed
as a “LoadBalancer” service or otherwise
• Petabridge.Cmd used for node exits
• Deployments / rollbacks performed by