Should I move from Umbraco 8 Cloud to AWS Cloud?
5 reasons why, 5 reasons why not
After being early adopters of Umbraco 8 on Umbraco Cloud we had some mixed experiences with the service. As do many people — it’s a new service & it has many good points as well as some downsides. After a settling in period we decided to migrate over to AWS Cloud for a period to see how the pros & cons lined up for operating in a maintained cloud environment or maintaining our own cloud environment.
This article will outline some of the main pros & cons of each approach together with a short guide on how to set up an Umbraco Cloud website & also how to migrate an Umbraco Cloud website over to AWS.
Why Umbraco Cloud?
For an easy life 90%+ of the time!
1. Easy deployment pipeline
Moving code & content between development & live servers is really very smooth. I outlined some of my early adopter thoughts on Umbraco Cloud earlier in the year & followed it up after some experience. Moving content & code is great most of the time. Some of the workarounds are a bit crufty like “touching” user data files to encourage them not to merge conflict. And subsequently I found out that there are occasions when there is no workaround…
2. Auto updates & upgrades
Umbraco as a managed service is well thought through & point releases happening without client intervention is a neat trick even if it does stop unscrupulous agencies charging for upgrades!
3. Really simple setup
I was really happy with the quick setup, the number of times I’ve come unstuck when the database doesn’t properly initialize when using install-package UmbracoCms from the package manager. Umbraco Cloud setup especially with Umbraco 8 is really slick and nicely documented.
4. Cost effective
At less than $20 per month for a working, managed, hosted, cloud website this is a real bargain.
5. Managed service
The Umbraco Cloud service is managed so you don’t need to know how the server is patched or be an expert in Azure to understand file structures and scaling (we’ll come to that in a minute). At it’s core is an excellent engine that saves tons of time & works more than 90% of the time. For sites without expert developers readily available this really should be the default Umbraco build option. No patching or upgrading, no problem?
Why AWS Cloud? Or Azure or GCP or whatever?
The essence of why AWS for me starts and ends with your level of expertise. You can easily substitute Azure for AWS — I’ve built Umbraco on Azure a few times and it’s all good — but I’ve got a couple of AWS certifications so I’m more comfortable in those terms. I guess the question is really at the margin, when stuff goes wrong. Are you better off having a managed service with people on call to sort out the tech or can you sort it out in-house and get the benefits of the layers of flexibility an alternative cloud host would offer?
1. Custom environment for specific business use cases
While Umbraco Cloud is perfect for a simple website if you need to stretch to use additional services then you are probably better off in a more flexible environment. You can directly access the server with AWS rather than using the Kudu tool on Umbraco Cloud & obviously you have the freedom to install stuff.
2. Control of timing of updates
While having Umbraco handle the updates to its core services automatically (on Tuesdays) is helpful, it is not helpful if this then introduces a breaking change. We had a problem with Form Pre-Values working on 8.1.3 before being broken on 8.1.4 — with no planned resolution.
3. Rollback options
There are no Umbraco Cloud version rollback options, so if a point release breaks something there is no real fix & to be honest breaking changes can’t be properly planned from the client side. It seems better to test for yourself if 8.1.4 is ready for your production website & if it isn’t you don’t install it.
4. Scale horizontally
The Umbraco Cloud is hosted in Azure West Europe, so obviously there may be a latency issue elsewhere and does not currently support either load balancing or auto-scaling. There is an option for dedicated worker resources, which sounds like you can scale up, but there is a resilience issue baked in.
5. Access to full Sql Server
Umbraco cloud runs on Sql Server CE which is fast approaching end of life — moving to a full featured Sql Server seems a good idea.
Moving from Umbraco Cloud to AWS Cloud
Assuming you have an EC2 server setup with IIS & so on & using standard Visual Studio (not Code).
I created a new Web Application using the same pattern that Umbraco uses in its Visual Studio guide .
Initially I went with a Website project for the .Web project & a class library for the .Core project with a post build event copying the .Core DLLs into the .Web bin directory. But changed this to the .Web project being a web app that referenced the .Core project.
I then did a bit of git init to setup a repo for both projects (previously the .Core project & the .Web project were distinct repos one in BitBucket one in Umbraco Cloud)
Copy the Umbraco Cloud code into the new, empty web app.
Delete Umbraco Deploy stuff from the App Plugins directory — basically we got rid of everything in App_Plugins/Deploy, as well as Config/UmbracoDeploy.Settings.Config and Config/UmbracoDeploy.config
Convert the App_Data\Umbraco.sdf file into a Sql Server database. I used the instructions found on codeshare.co.uk and used the CompactView tool mentioned to export the sdf file into a full Sql Server setup script.
I moved the media into a Virtual Directory folder on the EC2 server
I then excluded various folders from Visual Studio: App_Code, App_Data, aspnet_client, bin, data, Media, node_modules, obj
After that it was a case of deploying the .Web project to the live server (we used TeamCity for some CI/CD process)
Have you had thoughts about whether Umbraco Cloud or AWS Cloud is best for Umbraco? I’d love to hear your thoughts.