Building personalization with Orleans and Actor Modelling
summary
Project uses Orleans virtual actors with F# to model each user and content as grains: paged favorite-page grains, per-episode position grains, stateless show caches and a bloom filter for cheap existence checks. Runtime runs on Kubernetes via Docker/TeamCity/Octopus, co-hosting the Web API with silos to cut latency. Observed peaks of 2–3k internal requests/sec, hit ~1.7M active grains after tuning lifetimes, migrated ~40–50GB of state without user-visible downtime, and cut storage cost by about $100k/year by moving from Cosmos to table storage.
AI-written summary · about
chapters (42)
- 0:00Introduction
- 0:24Meet Harald
- 1:00Agenda
- 3:22Relevance
- 4:26Dynamic content
- 5:30Big ball of mud
- 6:03Personalization
- 8:24Actor Systems
- 9:44Orleans Runtime
- 12:18Actor behaviour
- 12:36Actor state injection
- 13:08Actor proxy
- 13:45Network latency
- 15:17Actor model
- 17:03Catalog
- 19:07Favorites
- 20:30Positions
- 22:04Favorite
- 23:20Bloom Filter
- 24:37State Storage
- 25:39Version State
- 26:40Pattern Matching
- 27:29Etag Caching
- 28:15Reporting
- 29:39Operations
- 30:01Docker images
- 30:42Web API
- 31:20Silo hosts
- 33:44Preproduction
- 33:58Fresh State
- 34:33Dashboard
- 35:59Grains
- 36:11Single grains
- 36:32Application Insights
- 38:26Lessons Learned
- 42:01Idempotency
- 42:47deadlock
- 44:05position grains
- 45:34logging
- 46:40direct clients
- 47:44deploy to production
- 47:58storage
related talks
25mArchitecting Web Apps - Lights, Camera, Action!
59mActors can rule your DDD world
30mBringing it all together
01h 02mBuilding that glorious monolith. And carving it too.
45mEvent-based system: Uklon practice
35mBuild Complex Domains in Rails
59mBetting on evolutionary architecture
51mPut an "Actor Model" in your House
