~/talk

Building personalization with Orleans and Actor Modelling

Talkat NDC Oslo 2019 · 2019-06-17..06-21· [frontend-architecture]
slides:none on file

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

  1. 0:00Introduction
  2. 0:24Meet Harald
  3. 1:00Agenda
  4. 3:22Relevance
  5. 4:26Dynamic content
  6. 5:30Big ball of mud
  7. 6:03Personalization
  8. 8:24Actor Systems
  9. 9:44Orleans Runtime
  10. 12:18Actor behaviour
  11. 12:36Actor state injection
  12. 13:08Actor proxy
  13. 13:45Network latency
  14. 15:17Actor model
  15. 17:03Catalog
  16. 19:07Favorites
  17. 20:30Positions
  18. 22:04Favorite
  19. 23:20Bloom Filter
  20. 24:37State Storage
  21. 25:39Version State
  22. 26:40Pattern Matching
  23. 27:29Etag Caching
  24. 28:15Reporting
  25. 29:39Operations
  26. 30:01Docker images
  27. 30:42Web API
  28. 31:20Silo hosts
  29. 33:44Preproduction
  30. 33:58Fresh State
  31. 34:33Dashboard
  32. 35:59Grains
  33. 36:11Single grains
  34. 36:32Application Insights
  35. 38:26Lessons Learned
  36. 42:01Idempotency
  37. 42:47deadlock
  38. 44:05position grains
  39. 45:34logging
  40. 46:40direct clients
  41. 47:44deploy to production
  42. 47:58storage
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.