[SOLVED]Azure: "Scalable Umbraco CMS web app" w se...
# help-with-umbraco
j
More of a curiosity than anything - I found this article on the MS Learn Azure docs about separating frontend and admin onto two hosted instances - is that still a utilised model? Are there any articles/blog posts about how you set that up? Is it useful? Just hadn't seen it before! https://learn.microsoft.com/en-us/azure/architecture/web-apps/hosting-applications/medium-umbraco-web-app
s
It is useful for load balanced scenarios, I don't know about the docs Microsoft made, but we have our own https://docs.umbraco.com/umbraco-cms/fundamentals/setup/server-setup/load-balancing
Ps. Not for the faint of heart, loads of moving parts and not much fun to manage. Luckily we're working on getting this set up on Umbraco Cloud so it will "just work" when you need load balancing. 😅
j
Tak!
m
"not much fun to manage" - no no its part of the fun 😄
And the newer the umbraco version the nicer easier it is
s
Different strokes for different folks, for sure 😛
k
We always use separate Azure web apps for editing and delivery. But. Redis for session hasn't worked for a long time becuase of the Redis session state provider. Or maybe someone has fixed it. And Umbraco doesn't (or didn't?) support both instances in the same Azure Plan (i.e. IIS) so we had to replace something there (the Azure Plan ID was used as the Umbraco instance ID iirc).
j
Ooof, and don't put your output cache in Redis.
o
What you friends 😀 suggest as an azure service for output caching?
j
Front Door in Azure, CloudFlare or similar If you are caching output then it really should be done in front of the app and not inside it - it's better for separation of concerns and overall performance. If you need to cache in-app, then make the caching part of the app, it's super easy in ASP.NET core to add service-level caching and avoid all those unnecessary calls to Redis.
o
Thanks Jason. I'll be checking Azure Front Door to see if it can help improving in a project I'm starting.
k
Yeah, the ASP.NET Redis Output Cache provider I don't think has worked either for a while, just like the Session provider. The whole "ASP.NET Output Donut Caching vs Donut Hole Caching" debacle I'd rather not revisit. 🙂
We haven't actually tried scaling out Umbraco delivery nodes horizontally in Azure Web Apps. Has anyone done that? I mean multi-instance Umbraco delivery nodes, i.e., 1 editing installation and many public installations managed by Azure.
Does separating editing and delivery still require writing code in Umbraco 12? I.e., implementing your own
IServerRoleAccessor
. Feels like the typical scenario should have built-in implementations.
j
Yeah, we run a number of scaled setups and they work fine. The docs for this are now accurate and, like they say, it's usually fine without any custom code, however in some circumstances it's safer to manually elect the publishing server (n.b. that has actually always been the case). https://docs.umbraco.com/umbraco-cms/fundamentals/setup/server-setup/load-balancing That said, I think that using blob storage for the ImageSharp cache is actually worse for performance on a scaled Azure Web App instances.
o
The setup described in those docs are exactly how we host most of our client sites, (1 private editing app, 2 public front ends under Azure Application Gateway). We haven't had any major issues since the v8 main dom lock stuff, V10+ has been really smooth sailing so far! 😄 Also, I agree with Jason about adding some code to manually elect the publishing server, I usually just add an app setting to distinguish.
9 Views