Umbraco Azure Hosting setup (Or cloud setup in gen...
# help-with-umbraco
a
Hi. I would like to ask all the agencies out there: How do you host umbraco? Specifically if you have a cloud setup? At my agency we're currenly hosting all our solutions on a windows machine, for the most part utilizing SQL express for the database. We have one for dev, stage and 2 for production websites. When we're setting up websites we RDP into said machine and configure everything manually. I loathe this setup, i think it's arcane and cumbersome. Now luckly for me and my colleagues, we're forced to change hosting provider. Therefor i've been looking into Azure. I love working with it. IaC makes everything so much easier, and services like KeyVault blows our old setup of manually setting environment variables out of the water. Now i have to make the argument that this is the way to go. Sadly my team lead is very nervous with making the switch. He's afraid we will need a dedicated DevOps Team. That if anything goes wrong, we can't call a tech support etc. Basically he knows what he gets when he just RDPS into a windows machine. I think it's abit blown out of the water - I think we would have less issues with a cloud provider like azure and a easier time configuring it than we would with a IIS site on a remote machine. But then there's the question of costs. Azure pricing is not very transparent. With our old solution we had one price, which is much easier to forecast rather than x USD per cpu hour. How do you keep costs down? I would imagine for ie a DEV environment that you have one shared AppServicePlan, with X amount of AppServices. But then how about SQL server? The license is quite expensive, do you use a shared license or did you look into alternatives? for this setup i asume pretty basic CRUD umbraco sites, so propbably not alot of fancy Services Thanks a bunch! TLDR: Do you have tips on how to determine pricing and setup for x amount of umbraco solutions in the cloud
l
Hei Aleksander. ๐Ÿ™‚ When I was at an agency we lived quite well with App Services on App Service Plans. I think that's the general go-to on Azure. Those involve absolutely no VMs or RDP, integrates swell with Key Vault and works even better than "manual" IIS on Win Server if you ask me. Then you go with a SQL Server, optionally elastic pool if you have many DBs. Finally a storage account per site for media / CDN. Azure Devops pipelines have awesome features to deploy to staging and then swap with production for no downtime. The big gotcha is the IP of the ASP you end up with. It's often tied to a specific tier. S2 handles a few mid-traffic sites with no real problem. Nowadays you can even opt for a Linux ASP rather than Win Server. In any case, it pretty much boils down to how hard it is for you to use ANAME/CNAME for all domains. If you can use ANAME for the origin, then you can scale as you wish to fit your perf./economic needs.
(Thought you were norwegian from your name, but checked your linkedin and realize we've met at up to several CGs? :P)
Oh, and ASP is priced in a foreseeable way. We had up to 30 sites on one, though that can wreak a bit of havoc on the filesystem. (Prefer image cache on storage)
"x amount of umbraco solutions" is like asking how many rounds in a stadium. it's a huge "it depends" - all about traffic, cpu usage, memory usage etc. per site. "brocure sites" can exhaust the app limit of asps without noticable degradation.
a
haha yeah it's a norwegian lastname but i'm definetly danish, and yeah we've met! Okay thanks for the points, and i wholly agree that the azure interface is better than vm's and rdps, now my task is to convince my team lead the same.
and great point with the no-downtime deploys! it's something that's been bugging me for a while aswell - that when we deploy we have to take the sites down for a few minutes. Totally forgot about that!
so i'm curious: When you worked with that setup. For IE a Development site, did you have X amount of app service plans for your sites, which shared one SQL server? (Ofc optionally with elastic pools as you mentioned?)
l
Nope, all ran in slots on same machine. Don't get me wrong, we had our probs, but with newer tiers and aspnet core it shouldn't be a problem. So each site has one App Service with three slots on a shared ASP. The slots are beta, staging, production. Dev branch continuously deploys to beta slot. Main deploys to staging and waits for a manual devops approval for deployment. That gives you the option of running usync stuff and other manual steps on the staging server before swapping. Ofc. this is not supported if you run the backoffice on both slots, but we've never really had issues with it. I dunno about later, but on 8 it even did version migrations on staging w/o taking down prod slots.
("All" is a "truth with modification". [They] still have 5-6 ASPs, but 3ish host 80% of the sites. The remaining are "single [farm|server] sites" with special requirements.)
a
ah okay great point thanks for that idea, didn't think of it that way!
yeah that makes sense, often people has special needs ๐Ÿ˜„
l
TBH I believe that Umbraco Cloud looks a bit like that behind the scenes, but what do I know.
And with the new CD support it's defo a viable option IMO.
a
yeah it does indeed - i do have some insight since i used to work for umbraco, but it's all abit far away rn tbh ๐Ÿ˜› What is CD support?
Continous Development support?:P
l
Continuous Deployment. ๐Ÿ™‚
The thing that takes stuff from git and puts in production all the time.
Continuous Integration (CI / CD) is the act of always pushing to main in the pure sense.
Yet we all cheat with dev and/or feature branches.
CI/CD inherently means "always push to main and always let it go to production". Which obviously demands some dicipline, feature toggles and whatnot, but is surely doable and the most agile.
(can CI also means push to main several times a day)
s
Wait until you tell your team lead that it can run cheaper on Linux Apps as well.. ๐Ÿ˜‰ Some good points from Lars here and I think most of all, there is soooo much instrumentation on Azure now, Kudu is great for someone who misses RDP access and it's really not so difficult to manage these days. Cost is of course difficult to predict, as long as your sites are written reasonably well you shouldn't have all that much CPU cost either. I'd prove it with a few recently made sites first and build confidence. DevOps.. yeah.. maybe! Your team lead loves RDP, can't he be the DevOps person instead? Same amount of work ๐Ÿ˜… The automated deploys, once dialed in..
:chefskiss:
. It's a bit of an investment when your org is new to this stuff but honestly, you're years behind already if you're still managing your own servers.
l
I've never once missed RPD. The last time I really needed it was for deploying COM+ components. ๐Ÿ™ˆ
s
lol yeah.. My logins to Our Umbraco are hell. Give me Azure any time.
a
agreed with the years behind sentiment ๐Ÿ˜… hehe well my team lead is almost the devops guy in that regard. i guess he's afraid it's more work on azure. My POCs really seem to indicate otherwise
d
We have been using Azure Web Apps for years and it is generally very easy to maintain if you are concerned about devops you can pay around ยฃ30 per month and get support from Microsoft. Personally I really like integration with VS and VSCode which means you can create a site locally and publish it to share or without leaving the IDE
a
i guess there also is a fear that azure is more expensive - but it's hard to argue agaist since their pricing structure is abit hard to see through
l
are you saying our is hosted on a vm? ๐Ÿคญ
a
uh didn't know about the microsoft support - one argument made today was that we couldn't get ms support.
d
It's way less work than running IIS which we did for many years. And deployment slots mean no downtime moveing from Dev to staging to production
s
on 2012R2, which is EOL ๐Ÿ˜‚
a
been my experience too tbh
d
We have only needed it when clients have complex requirements
l
and here we were having a lovely discussion about CD! ๐Ÿคญ
s
Honestly, it's a learning curve. When you learn, you can't go back!
l
i've needed support a few times. but never for ASP/AS, only for VMs and VNETs
d
Oh love the click of a button CI/CD with either GitHub actions or Devops pipelines as well of course!
a
i could imagine that would be where i would meet my first challenges aswell
l
(This is where I don't tell you how much experience I have with the world-button in VS and what my most read blogpost is about)
s
You can tune it, it doesn't have to be, in fact, most websites.. honestly.. they don't do very much, they can be on very very cheap plans, especially with .NET being so performant these days. You'll have a few sites that are intense, and/or badly coded and they will cost more. Tune them, for cheaper hosting and for the environment. The cheap sites will offset the temporary extra cost anyway.
l
As I said, an S2 can run 30 sites if they don't thrash CPU or disk.
(including slots if you turn off inactives)
That's above Azure recommendations mind you.
a
That's atleast a super tangible anecdote i think i will bring to my lead, along with no-downtime deploys etc
l
I guess the summary is: - no minding OS updates - effortless secrets from keyvault (even on .net framework / v7-8) - web based terminal access for managing resources you mind - automated deploys and no-downtime swaps - scale as you need resources (mind backoffice needs to stay put on one server) - you can manage the infrastructure with infrastructure-as-code (bicep/arm) - everything is in source control (deployment and iac.) - sharable storage for media & forms (sketchy, but never had an accident) - free automated SSL certificates - predictable and "stackable" costs - ++
a
indeed. Been trying to push IaC aswell - had a feeling this morning that he was afraid it would be some esoteric scripting language he had to learn. But it was sooo easy to get into bicep. Thank you so much for the brilliant points!
l
Best of luck. ๐Ÿฑโ€๐Ÿ’ป๐Ÿ™ƒ
m
While Iโ€™m a partner and want to advocate for and push HQ as much as possibleโ€ฆ In the real world we have clients that run on fumes. Very small and very tight budgets. To even afford us, we often have to find innovative solutions. For instanceโ€”funneling Umbraco content to a static website builder. Another option, thatโ€™s been quite fun for us, is to ship our projects on a small Linux device. We can install nginx, or caddy server, an Umbraco instance, and an n8n instance, and our clients have a powerhouse suite of tools. Itโ€™s also fun for IT to receive a device from us with a note โ€œplug it inโ€. (Sarcasm) What we like personally? We like somebody else to do all the server management. Looking forward to reading through the thread here and learning more about your approaches too.
l
cheapskate! ๐Ÿ˜‚ (for sure love the environmental things going on with static generation)
d
Agreed - we have up to 20 web apps (and a few deployment slots) running on an S2 with no noticeable issues
a
Didn't know you could run multiple sites on a single appservicw๐Ÿ˜ฎ
m
Whilst talking about costs.. if only we could return to the data store not being tied to MSSQL (the large proportion of our costs are MSSQL services on Azure) (eg mySql of v4 days...) with linux hosting and mySql/mariaDb we could then run Umbraco on fumes as mentioned above, on a cheap as chips linux host. ๐Ÿ™ I think half the problem was the case sensitivity of linux, which has been addressed in the core code, so is db next? The Db layer is still abstracted away from MSSQL as a provider, otherwise we'd be using storedProcs, and leveraging more features in MSSQL rather than just executing tsql via code?
though slots are limited depending on your plan.. https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/azure-subscription-service-limits#general-limits Standard 5 slots. 20premium etc.
a
yeah being tied to MSSQL is one of the biggest drawbacks of umbraco these days imo
m
@Mike Chambers MSSQL should not have to be increasing the costs, what are you running into?
An S0 database (the cheapest option, fine for small sites) is 13,63โ‚ฌ / month.
Depending on the amount of clients you could spin up an elastic pool and put all databases in that.
We always set everything up in isolation for our clients, so they end up at around 80-90โ‚ฌ/month. (We don't do sharing on app service plans)
a
@Maarten where do you see the S0 ? If i use the pricing calculator https://azure.microsoft.com/en-us/pricing/calculator/ i do not have a s0 option. If i choose azure SQL and set this to the lowest options i get an estimate of ~400 usd. This is ofc with 730 hours of compute, but still https://cdn.discordapp.com/attachments/1212014440338432101/1212331884839698432/image.png?ex=65f1730d&is=65defe0d&hm=1bd8abed7f070d45cf6cd8da6ca2eadfea0397b4dcae8f833ba4b0a015862284&
m
Change your Purchase model to DTU
a
ah
l
To get pricing on S0, you set Purchase Model = DTU, Service Tier = Standard
a
thanks! I need to read up on the differences
m
From my experience, go for VCore if you really have read/write intensive databases (that's why it starts on a higher price as well)
Don't see myself running Umbraco on a VCore ๐Ÿ˜›
a
no that makes alot of sense
l
You get different prices for different regions too. So if your app doesn't have any data sovereignty requirements, you might be able to move it around to save a couple of extra โ‚ฌโ‚ฌ
l
Don't forget about elastic pools to share dtus between dbs as well. ๐Ÿ™ƒ
m
Yep but you need at least 7 clients to make that an improvement
Note the limits tough, and it's one per subscription. I don't have a clue if Umbraco supports schema's (than you could have multiple instances in one db, altough i don't advise this)
a
yeah that sounds abit dangerous, but great to get started
m
I've said it a few times before, but if you don't want to spend time/money and effort into setting up hosting yourself. Umbraco Cloud is a great and cost effective option ๐Ÿ˜‰ (I'm not getting paid for this)
l
it's also worth taking a look at managed hosting. UmbHost is very competitive with Azure's pricing, and it comes with a lot of benefits. Umbraco Cloud's managed hosting is good and competitive for small and large sites (less so for medium sized imo) Taking managed hosting means your devs spend more time doing software, rather than server management
a
Ah so that's why elastic pool is nice, TIL
So I could do a s0 and run a prod and test database in it
m
Nope
Elastic Pool is more expensive, and have different tiers. The cheapest elastic pool is 50 DTU and is 100โ‚ฌ+
a
Ah then no, haha
l
The tier will be "Elastic" and you choose n number of DTUs to share. 50, 100, 200 etc.
a
No I currently have 20,andseeing like 13% max usage
m
If you have 20 DTU, and currently have 1 site, scale it back to 10 ๐Ÿ™‚
l
If you set it to 100, you can set DB max to 50 so that one can't max out the capacity.
a
Cheers, thanks
Ye I guess I can try
l
And then when you have to do version cleanup or some weird heavy task you can bump it to 1000 for a few hours. ๐Ÿ™ˆ
a
Sometimes it's hard to pinpoint when doing a release with some using stuff if it's the dB or cpu having struggles
That's what I like about Azure
The control
l
You can relatively easily see that on dashboards.
a
Do you guys always add the azure analytics?
p
@User May I suggest โ€œUmbraciansโ€ instead of "guys"? We use gender inclusive language in this Discord. ๐Ÿ˜€
l
CPU Time / HTTP Queue on App Service, SPU usage on ASP, DTU usage on DB.
m
Do you mean Application Insights, then yes.
a
Sod off! ๐Ÿคฃ
l
Y'all is a good alternative. ๐Ÿ™ˆ
a
Makes me sound like a redneck
m
Yes, and don't forget the Query Store on your database to see what the top resource consuming queries are ๐Ÿ˜‰
a
Never used it.. this is a good topic ๐Ÿ˜Ž
m
As you can see hosting on Azure requires (some) knowledge, which you don't need when you go for a managed solution from Umbraco Cloud or UmbHost. And as both Umbraco Cloud and UmbHost (depending on the plans) have the benefit of scale, they can offer cheaper hosting options than you might be able to do yourself for small-scale sites.
l
Then again, the goal of devops is to not do as much ops. ๐Ÿ˜‰
m
As long as it is working there won't be any work ๐Ÿ˜›
d
There is so much 'gold' in this thread. I agree using someone like UmbHost for hosting and devops is a really good choice (I am a bit biased as I work with@AaronSadlerUK and know how good he is). However, I would love a community GitBook with the various options for hosting Umbraco on Azure. I wrote a single page for myself for Umbraco upgrades, creating new DBs and Deployment Slots: https://wholething-limited.gitbook.io/umbraco/umbraco-upgrades/upgrade-an-umbraco-site but it would be great to cover things like Key Vault and Application Insights
d
That's funny because I offered to add my Deployment Slot instructions to Docs and they said Azure specific content shouldn't be in Umbraco docs
m
The minimum recommended Azure SQL Tier is "S2", however noticeable performance improvements are seen in higher Tiers
from https://docs.umbraco.com/umbraco-cms/fundamentals/setup/server-setup/azure-web-apps#recommended-configuration I know you can get away with less.. but when you start to have multiple clients (enterprise) and geo redundancy and multiple dbs per tier (dev/staging/uat/production & loadbalanced) it all mounts up.. last month for us.. https://cdn.discordapp.com/attachments/1212014440338432101/1212345921367711744/image.png?ex=65f1801f&is=65df0b1f&hm=75877db54b95d374abac2a46f41d9a9311390e1d0a0f4b7b4b5e29a168554033&
And it's that MSSQL is always extra.. where as a linux host the monthly cost is inclusive of the DB ๐Ÿ˜‰
m
Yeah i totally agree, you might be cheaper by throwing them all in a shared VCore pool, however that's just Zone Redundant and not Geo redundant. And you're smashing all your clients together.
And you can have an reserved instance for an elastic pool (locally redundant)
s
Your link throws "Missing token query parameter"
Am I reading this thread correctly? You can host multiple sites on a single Azure Web App? You mean deploying a single project with multiple Umbraco root nodes or separate projects to a single webapp?
i
Under water an azure web service runs on a Application Server plan. A single ASP which is the thing you pay for, can in fact host multiple App Services
d
I'll correct in orignial - I tried the GitBook upgrade which seems to give an odd link: https://wholething-limited.gitbook.io/umbraco/umbraco-upgrades/upgrade-an-umbraco-site
m
so to extend AppServicePlan > AppService > deployment Slot (ms also refers to them as staging slots) so you can have multiple application in your app service, and depending on your plan can have multiple deployment slots holding applications in your appservice ๐Ÿ™‚
appservice-one.azurewebsite.net
appservice-one-slotone.azurewebsites.net
appservice-two.azurewebsite.net
appservice-two-slotone.azurewebsites.net
etc...
The staging slot has a management page just like any other App Service app. You can change the slot's configuration. To remind you that you're viewing the deployment slot, the app name is shown as /, and the app type is App Service (Slot). You can also see the slot as a separate app in your resource group, with the same designations. Select the app URL on the slot's resource page. The deployment slot has its own host name and is also a live app. https://cdn.discordapp.com/attachments/1212014440338432101/1212354630898683954/open-deployment-slot.png?ex=65f1883c&is=65df133c&hm=9e7564acb8b824c63f79e7e068c7cd494c274601fbaa9adf9eff07a45fdc0e30&
s
OK so you're deploying differnet projects to different slots. And binding different domains to each slot?
l
There is a "server farm", the ASP (Application Service Plan) that is shared. Sites have their own "App Service" hosted on the ASP. An "App Service" can have slots (we use those for beta, staging, prod). So ASP (server) > App (site) > Slot (environment)
m
you could bind custom domains.. but those are just the default azurewebsites.net domains that are a given.. https://learn.microsoft.com/en-us/azure/app-service/deploy-staging-slots?tabs=portal
They are really for zero downtime slot swapping, with warmup to push new code, but can also be hacked for other purposes.. I think you can even specify that 50% of traffic goes to prod slot and 50% goes to another slot so could almost be a simple loadbalancing ๐Ÿ˜‰
m
@Lars-Erik Out of interest what's the reasoning for having more than one slot for an app? For me I have Staging as its own web app (no slots) on the same ASP as production or separate ASP if required. Then with the Production app it has a pre production slot on it, that is the deployment target. I then swap that slot with the Production app to make the deployment live.
l
We called preprod staging, and why not toss in a beta for easy grouping? Same ASP anyway.
m
If I rephrase why use slots when creating a separate app on the asp is similar? The only difference to me is slots can be swapped and I wouldn't want a beta or alpha slot swapping with production accidentally.
l
I can ask right back. ๐Ÿ™ˆ No human ever swap. ๐Ÿ˜‰
Less ARM/bicep for slot.
a
you always used a pipeline step to swap slots?
l
i could brag so, but new stuff the last years, yes. ๐Ÿ˜›
m
Sure, but the possibility of it swapping is there, say a human does do it accidentally. There is also the chance of things being misconfigured like an app setting not set to be tied to the slot and that setting getting swapped unknowingly.
m
Don't give the human enough permissions to do it ๐Ÿ˜‰
Human should only have read permission on the entire resourcegroup, all stuff should go trough ARM/BICEP + Pipelines
l
There's a possibility of someone cancelling your subscription, deleting the resource group, corrupting the database, deploying completely broken things and more. So I deem the risk of a slot begin swapped to production by mistake a good price in order to have it all "grouped". The slot can always be swapped back.
m
From my side I am not in that ideal scenario yet as it takes time to set these things up and learn it ๐Ÿ˜… . As well as making certain that when a bicep template is ran on an established azure environment it doesn't affect what is already there in a negative way. I guess what is your advice for that (I know there is --what-if) or do we start a separate thread ๐Ÿ˜‚ ? I agree with what you ~~guys ~~ folks are saying but it only works if the templates and the pipelines are already established and good to go.
l
Incremental ARM just verifies that stuff are there. Unless you neglect to update with live changes. Most is keyvault or id references.
m
Cool thanks! Found something on it to read further. Sharing the docs post for any lurkers: https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/deployment-modes#incremental-mode
j
Resurrecting the discussion about service plan size... IME, the P series app service plans are far better suited to Umbraco than the S series as they have much faster I/O. YMMV, but in every S2 instance we've moved to P1V2 we've seen improved performance - I expect P0V3 to be similar, if not better, and Pv3 qualifies for the Azure savings plan so could work out significantly cheaper in the long run.
m
You can run your ARM/Bicep depoyments with the --whatif statement (if you're using Azure Powershell), otherwise use what-if as command line arg for the Azure CLI. This way it just shows you what it's going to create/update/delete/ignore ๐Ÿ™‚
m
There is also the memory optimized version for P Series. Lookout for the m in P1mv3. You need to create a new app service plan to see these options. https://cdn.discordapp.com/attachments/1212014440338432101/1212716411999485963/image.png?ex=65f2d92b&is=65e0642b&hm=15986816949157bb652027e6116edb61c1612419daffd94ee32bee3f02c90259&
l
You're absolutely right @Jason. Almost ashamed to have forgot. The S series is notorious for messing up media and lucene. IE - don't keep local cahes on them.
P series is the way to go.
Nevertheless we ran a bunch of sites on them mostly without incident. ๐Ÿ™ˆ
a
Good morning. Just reviving this. So yesterday we had a meeting with some azure cloud middlemen - my leads have found a cloud company which provides support for us. This support is in the form them invoicing us our azure bill, rather than we us having to add a credit card. Likewise they have a higher support tier so if we have issues we could use that support plan. Now i had hoped this meeting was a person with techinal knowledge, giving us advice on our azure setup. Instead it was more of a sales rep that adviced us to keep all clients seperated, hence sharing less resources - because we would get a kickback for provisioning more machines.. Now i'm abit lukewarm to this agreement. My higher-ups likes it because of the support level we might get, but i'm not quite sure what else the benefit would be. Now my question: Does any of you have any experience with such middlemen cloud advicers? How was it? And how about support from azure, have you ever needed it? I know it was mentioned earlier
d
Please speak with @AaronSadlerUK at UmbHost. We have worked with him whilst we managed our own Azure instances and he offers services for full or part management. There are plenty of Umbraco Azure gotchas and you really need someone who understands both.
a
Hi, Happy to have a discussion about this https://umbhost.net/hosting/azure-managed-service
a
The P0V3 with 3 year discount is a blast!
Feels like it has so much more performance
k
We use an Azure Tier-1 Cloud Service Provider for all our Azure (not just Umbraco). We can still manage everything ourselves, but to open a support ticket in Azure (for example), you need to be a CSP. We've needed that sometimes for "advanced" stuff. So if your "middleman" is a CSP, then I think you'll like it. If it's only a hosting company without tier-1 privileges, and you don't have Azure admin rights, then maybe not.
w
> your devs spend more time doing software (with Umbraco cloud) As someone who is months deep into a project hosted on Umbraco cloud who has spent more time combatting deployment and development issues than actually doing any work.. nah, imo. Any savings you make on the upfront cost are lost in the time spent dealing with issues that either wouldn't happen or would be easier to fix with your own hosting, and I'm not very impressed with the support offering either.
12 Views