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.
5. Real-time Application
Challenges
• You’re responsible for the consistency of
your state.
• State has to be moved between nodes
during deployments, scaling, and recovery
from failures.
• Deployment tools need to allow for
movement of state at deploy-time.
14. Actors Simplify State
Management
• 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.
20. State Distribution Techniques
• Consistent hash routing
– All events with same entity ID (hash range)
end up in same server
• Akka.Cluster.Sharding
– Uses consistent hashing, but smarter
handling of partition hand-offs
• Writable Replication
(Akka.DistributedData)
– Have state written to multiple places in
network at same time
38. Why Kubernetes?
• Ubiquitous – runs on-
premise, on the cloud,
etc…
• Robust deployment
models – including
handling for stateful
apps.
• Rich ecosystem.
39. Why Azure Kubernetes
Service?
• Takes only a few
minutes to setup.
• Integrates well with
Azure DevOps.
• Great environment for
learning K8s.
40. Kubernetes Core Concepts
• K8s is an “orchestration” platform – networks
multiple container hosts together into unified
abstraction.
• 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
managed.
43. K8s Key Terms (for
Akka.Cluster)
• “Pod” – represents a single application unit
of execution. Consists of 1 or more Docker
container.
• “Stateful set” – a deployment group of
identical pods working together as a
stateful service.
• “Service” – defines how a stateful set
exposes itself to other services within K8s
and Akka.NET cluster.
44.
45. Akka.Cluster K8s Methodology
• All applications are deployed as stateful
sets
– State is fundamental to how Akka.Cluster
works
• 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