Orchard Harvest 2017–Scaling Orchard
Rob King works for Bede Gaming, which specializes in providing a platform for gambling web sites. The company moved to Orchard in 2013, and has strong scalability requirements, with sites serving millions of requests per day.
One of the problems they are facing is dependency management. One of the ways they deal with that problem is that they avoid features depending on each other, but instead try to have dependencies on abstractions. Instead of having feature A depending on feature B because they have common interfaces, those interfaces are extracted into a common module, and both features are made to depend on it.
They cache layer rules to avoid going to the content manager to get get them.
The Bede web sites are typically entirely dealing with authenticated users, so caching has to implement donut caching techniques. They also use Redis for distributed output caching, plus in-memory caching.
They had an incident when they had a deadlock on scheduled tasks that caused the scheduled tasks table to fill up with millions of records. It was solved with a node-aware version of the scheduled task manager.
Being multi-node aware everywhere was key to fixing many of the problems faced.