When should you use Umbraco as a Service?
Yesterday I had a great day in Manchester with Niels Hartvig (Mr Umbraco himself) and Kristina Konopka (the Gold Partner manager at Umbraco) and even managed to gatecrash the Umbraco as a Service road show held at the ever generous Building Blocks (who previously have hosted the Manchester Umbraco meetup too).
Niels is doing a road show to show off first hand what Umbraco as a Service is all about, how much it has moved on and how to get started. I’ve been following the progress of Umbraco as a Service for several years now since I saw Paul Sterling demo the first iteration at Code Garden back in 2012 ish. It is fair to say it has come a long, long way since that first demo so much so that I tweeted this yesterday after the demo:
If you are not following me by the way you should be! ;)
This got a few folks asking questions about what convinced me or gave me that “light bulb moment” where I “got it” so I thought I’d write a longer response which is the one you are reading :)
Right, I’m going to assume you’ve at least heard of Umbraco as a Service, if not head over to here and have a read first. Now with that done here is my very short summary of it as I understand it:
Every website needs a server to run on and a database to talk to, setting this up can be a sticking point for some and a drain on resources for others.
UaaS’s aim is to be a super quick and easy way to get started with Umbraco and tick the “oooh what about hosting?” query off the todo list asap.
Under the hood it uses Microsoft’s Azure hosting infrastructure and the BEST of it too, as Microsoft are a partner. Like any service you sign up, hand over your credit card details and then get stuck in. You can have a (empty) site up and running in less than 5 minutes. Then you can start doing your Umbraco magic and focus on the build.
That is it in paragraph. If you use Umbraco a lot you might not see what the fuss is about, you could probably get a site running on your own host in about the same time I imagine. But UaaS gives you more than just a quick site setup.
Other goodies worth a mention that you get included are:
A dev and live environment so you can develop on one and have the client add content to the other.
Decent merging tools (Imagine Courier that works) that can handle 99% of cases
The initially terrifying thought of “Automatic upgrades” - only patch releases are automatic and these “shouldn’t” break anything. Minor and Major releases you have to manually initiate via a button click in the UaaS portal and you can roll back from them if it all goes wrong.
The ability to download the site via Git and the Content via the back office and run it locally
Chat window for instant help from the UaaS support crew (I’m assuming within office hours but who’s office hours? This is after all a global business)
Support for enabling edge cases if needed (hosting 2Gb of media on a shared blob storage for instance instead of the standard method) although further fees may apply if you are using up Azure resources.
Now, I’m quite up front that I was a little dubious about UaaS and it was only really this last month that I’ve been coming around to the idea. I’m not really their target market, we tend to work on a handful of big sites each year rather than knocking out 6 small sites a month like some, so I have just been watching from the sidelines. In the last month I’ve seen two really good solid demo’s of it (at the awesome uWestFest keynote in San Diego and in Manchester yesterday) and I’ve had lots of 1-to-1 time with Niels and others at HQ to get a feel for it and run my “what about this” questions at them. I guess you might at least have had some of the same queries yourself about the whole setup so I’ll try to act as your “man on the scene” and give my take on why it is worth a look and when.
How to “Get It” about UaaS
“Getting it” with Umbraco as a Service is really easy once you understand that it is not a solution for all builds. Chance are you might come up with a build that is just not a good fit. The danger is you assume HQ are trying to build a solution for everything but they aren’t as that would be madness (we’ve burnt that card with V5 remember, they learnt from that one...big time).
So the only question you need to ask yourself to know if it is suitable for your build is:
“Am I going to be doing some crazy ass shit with this build?”
If you answer “yes” then you probably want to roll your own hosting setup, if you are smart enough to be doing “crazy ass shit” (CAS for short) then you should have no issue in rolling your own hosting, heck you probably already have some if you fall into that bracket, well done you! Have a biscuit.
If you answer “no” or “erm...not yet but maybe in the future” then you are safe to give UaaS a go. That “maybe in the future” CAS you mentioned might never come up and if it does UaaS doesn’t lock you in, you can pull the site down local (even the DB) and then host it anywhere you like with your awesome existing hosting knowledge.
UaaS is NOT a solution to every possible way of building Umbraco sites. It is not a magic bullet. Its a 80% solution in that it is built to suit 80% of the Umbraco builds out there. So don’t try to shoehorn in your build to it if it is not suitable. Stop when you feel resistance...that to me was the boundary I needed to see the use of UaaS and when I should/could use it. Until I got that I just saw it as a solution that was not going to work as I mostly do CAS.
To clarify what CAS might be is hard, as we all have different opinions of what CAS might be. You will probably know in your heart of hearts but as a guide I can say it is NOT any of theses things:
Custom database tables - totally do able with UaaS
Running a rather large site - UaaS sites can get pretty big and handle it no problem, how big is big is hard to say but if you are worried about the size of your site then you might be trying to do CAS so contact Umbraco first.
Custom DLL magic - you can obviously include your own code and DLL’s, that’s not CAS that just development right?
Calling out to API’s - sure just don’t go all CAS about it, clean up after yourself like you would any other hosting environment
Lots of media - to a point sure, as mentioned above if you need a shared media folder/blob storage (to save you having to pull all that media down to develop locally) then that can be arranged just get in touch with Umbraco.
Oooh it might get a lot of traffic - no problem you are using the BEST hardware Azure has, its the secret stuff that us normal folks don’t normally get apparently. As a results they can handle a lot of traffic. If you think you need multiple servers and all that stuff from the off then guess what...you are in CAS land, this is not the hosting solution you are looking for...move along.
If you have to ask “yeah but can it push to multiple instances on different domains with shared content that can be hidden depending on an LDAP authentication service talking via EDI messages…” type queries then chances are you are into CAS territory. But if not then the answer is probably “yes, it can do that”.
"Yeah but what about..."
Stuff you need to know as I understand it (this might be wrong/change) and I’ve numbered them so you can comment/refer to them if need be:
You control what content goes up to live and when (manually select the content and queue it up to deploy)
You can edit content and features in either DEV or LIVE...eeek! Don’t worry this is handled by the other stuff below
Content and features can be deployed to/from DEV and LIVE environments separately which I thought was a cool feature. This prevents dummy test content going up to LIVE by mistake.
Deploying features to LIVE from DEV is an all or nothing option, you can’t cherry pick individual doc type mods to deploy (I’ve another blog post about a tidy way around that coming soon)
Content from LIVE pulled to DEV will out trump any content on DEV and overwrite it.
Functionality and doc type changes pushed from DEV out trump any changes on LIVE. So if someone has been messing with doctypes on LIVE they will get overwritten (Morten @ HQ is the master for this stuff).
At anytime you can take a fresh copy of LIVE down to DEV and any functionality changes on DEV are kept, this allows you to quickly get a fresh copy of the content and media of the site for instance so your new feature is working with up to date real data which makes your testing better.
Under the hood a lot of the merge magic is handled by Git (a popular source control system). If you can use Git then you can develop stuff locally and check it in and it will get up to DEV. Its expected that you work on a local copy of the DB and not connect to the DEV DB. This is “easy” to do as when you pull the site from Git you can also get an up to date SQL CE database, this uses some new code magic to load up the database with the content. This might be a bottleneck if you have a tonne of content but then you are in CAS land again.
Doctype definitions etc. are still stored in the DB but also serialised to disc so they can be sourced controlled. Pretty cool and one of the dream items from Code First land...ahhh remember those days?
Members aren’t sync’ed between DEV and LIVE which makes sense but might make “real” testing harder.
Minor/Major upgrades are triggered by you and are done onto Dev first so you can test. Only if you then deploy from DEV to LIVE will that upgrade go live.
No Remote Desktop Access at all, best you can do is use Microsoft’s command line tool called Kudu, its sort of a mix between SSH and Powershell by the look, hopefully a bit easier to use than both of them :)
You can have custom “baseline” builds to spawn a new site from, think of these as turbo charged start kits of your own making. Probably the most talked about area at the roadshow
Updates to a baseline build can be pushed out to any child builds spawned from it (like upgrades you have to manually initiate this step per site for safety).
Right the other “what about this situation…” queries you might have:
How many baselines can I have - Each baseline build counts as one of your sites so it costs another 89Euros to have it floating around (hey, relax, it is using up resources after all). So you need to allow for that. You might be able to get done what you need via a Package instead but you don’t get all the goodness of Baseline builds.
Can we share baselines/sell them? - Maybe in the future, right now though its a no. Baselines are private.
What if I have a merge conflict in Git? - Pull it local and resolve it like you would normally. If it is a normal build and you are not doing CAS then you should never need to do this. Umbraco does some magic to limit conflicts as best it can according to Morten @ HQ.
How many users can I have? - As many as you like, seems you can invite folks by email but it looks like it is on a per site level. Would be nice to be able to just “invite the team” via a button/default. You can invite clients or outsourced help though per project this way.
Can two devs work on the same page at the same time - yes, but you “might” cause a merge conflict (if you both changed a property alias name for instance).
What if it goes down? - Hosting does go down, you and about a million other sites on Azure will be down too, what can you do?
Is there an SLA? - Yes and its good enough and had lots of 9’s in it. Umbraco should have details
That covers the obvious questions you might have. If you have others I’d suggest you get yourself off to one of the UaaS roadshows or catch one of their webinars that they do every now and then or just get in touch with Umbraco and ask. All I ask is you share what you find :)
Take some of what I say above with a pinch of salt, this is info I’ve gained from just asking questions on the spot so it might not be 100% right or might change but it should be in the right direction at least.
The short version is Umbraco want this to work, they want it to be helpful and they want you to use it if it is suitable.
The cynic in you would say “of course they do they want my money!” and you’d be 100% right, of course they do, that is how this totally free CMS that gives you a career is partly funded.Gold partners, like us here at Offroadcode, fund another chunk of it (you owe me a beer btw) and training fills the rest so get over it and take another look.
To their credit they have held it back and iterated over it, polished it and honed it to get it in the best state they can before offering it up to us. It is now a very polished product and worthy of being on the options list for your next build. Assuming of course you are not doing CAS. If in doubt ask them, they are super keen to hear your thoughts and iron out any issue BUT there is a line where it won’t be a good fit, knowing about the line for me was the Aha! moment as to why it is a great product. Constraints allow you to build awesome things, as long as your site is within UaaS’s constraints then it should fly!
Thanks for reading, tap me up on twitter if you have a query/correction.