In my humble opinion "Deployment" is one of the key stumbling blocks for any [junior] developer trying a new technology. To that end I've started something of a tradition of _starting_ any new learnings by checking if I can deploy it. Something in the back of my mind goes "What's the point if I can't share it?" (though that may say more about my own need for validation than anything else!)
That brings us to Umbraco CMS, veritable darling of the .NET dev world (or at least highly recommended by devs I would highly recommend). Having moved over from a Django / Mezzanine world, with a touch more experience as a developer, I've made a promise to myself that I was going to fully commit to this technology, and even write ACTUAL content for an ACTUAL blog. New Year's Resolution maybe? Always think the best ones of them start in February anyway, being elevated by the pile of already-broken goals (though to be fair if anyone's got a 2023 resolution more detailed than "get through the year while being able to afford electricity" then you're a braver soul than I).
The fact that you're able to read these here words means that I have been successful in deploying "something". However, that "something" was definitely wrought with difficulties, and in future posts (and with more understanding) would like to write more about the process as a whole.
I guess now is as good a time as any to introduce this blog, as, unlike most things I do in my life, this will have Focus, and that Focus will be - Umbraco! While it feels suitably meta to be writing a blog about Umbraco IN Umbraco, the purpose is to:
- Help me solidify my own learning (i.e. learning through explaining, my pedagogical approach of preference)
- Help other new developers with some of the basic pitfalls that might discourage them or scare them away
- Help the Umbraco team understand the perspective of new developers because they a) absolutely listen and b) absolutely care
I will readily admit that the majority of these blog posts, especially at the beginning, will be primarily negative. I'm more likely to highlight the problems then celebrate the triumphs (though I'll readily take my proverbial hat off when the moment doth arise). However, I want to be as clear as a crystal could ever aspire to be that the focus is on helpful, constructive criticism instead of unjustified excrement hurling [https://www.parliament.uk/visiting/visiting-and-tours/watch-committees-and-debates/prime-ministers-questions/]. Having spent *very* little time with Umbraco so far I am absolutely sold on their self-proclaimed label as "The Friendly CMS". Every member of the community that I have interacted with so far has upheld this mantra throughout and so it would be abhorrent to consider that anything posted on this blog is a direct criticism of any individual - the focus is on open, honest sharing of what will primarily be my frustrations and difficulties with the goal to smooth out the edges for others following in my footsteps.
Ready? Ok - Deployment.
I'm going to write much more on this after I've worked through the process a number of times, but suffice it to say I found deploying an Umbraco CMS site to a server with a public endpoint to be relatively difficult. Having managed it I'm still not entirely sure I understand how, or why other methods failed - all I know is that they did, but that this works, and that's good and odd and needs further investigation.
Here are the headline reasons I found deployment difficult:
Lack of robust documentation
I found it remarkably difficult to find a straightforward "here are all the steps" required tutorial. The closest I could find was cobbling together the relevant parts from the "Server setup" guide (https://docs.umbraco.com/umbraco-cms/fundamentals/setup/server-setup). While I understand that everyone's set-up will be different, I would still have asked for a more comprehensive deployment "skeleton" which you adjust accordingly. I would also run into error messages which only told me to look in the log files (which at the time didn't appear to exist - again, might be my inexperience, but still). However, Googling for answers was further compounded by…
Now, at present I'm not completely sure that I understand what Umbraco Deploy does (though I'm sure it does it brilliantly) - I didn't look into it properly because a quick scan showed me that it cost money and I, a bootstrapping person who lives in the UK (see above comment re electricity prices), am immediately ignoring anything with a pound sign. However, the point is that having a product called "Umbraco Deploy", while clearly named to describe what it does, further obfuscated being able to find online documentation pertaining to "Deploying Umbraco". Speaking of pound signs…
I found it pretty difficult to work out what web hosting would be the most appropriate fit for a solo developer's blog. I didn't feel that the Umbraco docs really represented the options thoroughly (aside from Umbraco Cloud, which we'll come to next), especially for a newer, less experienced developer just looking to dip their toes in. Ultimately a friend of mine actually offered up some space on a server they were renting out (which is where this site currently sits, thanks Carl!) and I did find that the free tier of Azure's App Service does run Umbraco just fine (here's an example ). However, this information wasn't readily available and would have certainly put me off trying. However, a weird point to mention would be…
So Umbraco Cloud looks INCREDIBLE. It handles all your deployment woes in a managed capacity, hosted on Microsoft Azure, and sorts out the various Azure resources required for making your site extensible, scalable, available and everything elseable. It even seems to have Umbraco Deploy built in. However, it does so at a starting price of around £32 per month at time of writing - which may be *perfect* for an SME but entirely inappropriate for my use case. Just to highlight, from a quick glance over the features I can entirely understand that price point - it's just not feasible for a solo dev trying something out (yes there's a 14 day trial but, since I'm going to be having *maybe* an hour every couple of days after work, that's going to vanish very quickly).
So I guess here would be my initial, entirely rough suggestions:
- Improve documentation to more fully support the deployment process (and the docs are open source so even I could help with that, pending actual knowledge…)
- Look into a "solo dev" tiering of Umbraco Cloud which scales it back as little as possible
- Provide suggestions for recommended hosting partners for small projects
I'm going to spend more time trying out deployment methods and writing up a few "here are some common mistakes" (working title "A Catalogue Of Errors"). Personally I'm just thrilled that this site is actually up and alive!
As a final thought I wanted to highlight my positive intentions through these more negative points. Umbraco seems absolutely FAB and so I'd like to do what I can to support it and its users.
What do you think? Let me know on Twitter (@jacksorjacksor) or email ([email protected]).