Kind reader, perhaps a small introduction might just suit this blogpost perfectly. What exactly is Azure and the cloud as a whole? I know that for most of you readers, the following information is nothing more than a lesson in history and may even very well be within your set of active knowledge. Worst case, you can skip it altogether and jump right into the next paragraph.
So, what is Microsoft Azure?
Not so long ago, and here and there the following scenario still stands, a typical website or application was hosted on internally hosted machines per company. Big companies tend to have centralized IT departments and data centers to secure and manage their IT infrastructure through meticulously defined processes and monitoring. Smaller companies need to fend for themselves while making due with the tools and budgets available to provide the best server maintenance as possible. And typically, web servers are not exactly put at the top of the priority list.
In both cases, the IT department is tasked with the painstaking task of maintaining servers to have up to date software and hardware. This often makes IT a liability or blocking factor for continuous business development.
Enter Cloud based platforms such as Azure. The idea behind these platforms is simple enough; Move the overhead and workload of the IT departments from inside of the (often departmental) companies and outsource them to specialized data centers. When talking about cloud, 3 acronyms come into play; IaaS, PaaS and SaaS. These cloud models are explained below by highlighting the differences between what you manage and what is managed for you.
I will not go into any more detail on what Microsoft Azure has to offer. If you need more information, I advise to read their documentation on https://docs.microsoft.com/en-us/azure/ and any other resource available online.
Now that we have set the stage on Azure it is time to give some history and evolution on how Sitecore has been reaching out to Microsoft to incorporate this way of managing your IT services.
Sitecore and SaaS
Software as a Service takes all the previous mentioned things to an even higher level. You basically subscribe to a specific product that runs on Azure and simply use it.
Sitecore has no SaaS solution or offering. But if they did, it would behave (kind of) like this: you subscribe to a Sitecore SaaS and choose your type of solution (for example a CM with two CD’s) and you would start developing, content creation and what more directly on that platform. Without doing deploys or module installations. On top of that, the SaaS solution would allow you to opt-in or out of specific functionalities and modules and would ensure that you (and any SaaS user) are always on the latest version of the platform.
But just to be clear; Sitecore has (at the moment of writing) no solution for SaaS, nor have they shown any interest in the creation of such a solution.
Sitecore and IaaS
Since Infrastructure as a Service gives you the same access as you would have on any on premise machines, there is little to no difference for the hosting of your application environment. This implies that it is generally beneficial to move into Azure hosting as it gives flexibility for machine scaling as well as a pricing that is based on the actual server usage.
Sitecore and PaaS
The story becomes entirely different once you move into Platform as a Service. In a side by side comparison, obviously PaaS would win over IaaS anytime. As it makes an abstract of all layers of your hosting environments except for your own application and data. However, that same abstraction obviously removes some flexibility that we have become accustomed to when using on premise or IaaS. Since Microsoft is in charge of the runtime, OS and middleware, any changes and settings that get changed outside of your dedicated application and data environment are reset whenever Microsoft performs an update or reboot of the system.
A number of solutions exist for Sitecore and PaaS and there is quite some history around them.
The PaaS Hybrid solution
It might be good to briefly touch on this solution before we dive into the other solutions that are available. Hybrid means that the different Sitecore roles are placed on different cloud models. Generally the CM (content management) environment is placed on IaaS whereas the CD (content delivery) environments are hosted in PaaS. The means as to how the deployments, provisioning and configurations can be handled are described by Sitecore in more detail.
The Sitecore Azure module
On December 2011 – Sitecore released a first version of their Azure module. This module was to be installed as any Sitecore module into your internal Content Management environment combined with a Sitecore Azure environment file. It offered the following Azure capabilities: Cloud Service, Storage Service, SQL Databases Service, Traffic Manager Service, and Cache Service.
For more information go here: https://sdn.sitecore.net/upload/sdn5/products/azure/110/getting_started_with_sitecore_azure_110-a4.pdf
Through the interface, a number of hosting locations allowed for the creation of an Azure Content Delivery Environment:
The overall idea behind this module was sane, but it came with some overall flaws and early product problems. First off, not all existing modules were supported by the Azure PaaS model. And furthermore, even newly created modules were not guaranteed to be PaaS enabled.
You can check the entire list here: https://kb.sitecore.net/articles/880886
Another problem was that the module had some issues with SQL Azure, especially when upgrading and deploying.
A number of issues have been listed here: https://doc.sitecore.net/cloud/81/azure/using_sitecore_azure/troubleshooting_sitecore_azure ...as this list is quite extensive, I chose not to go into detail on this.
Bottomline: Great idea but not to good in real life projects that need to run really smooth and have error-free deployments
So, even though this approach to PaaS seems like a sure win, keep in mind that to any solution there still is an amount of effort that needs to be performed. And certain implementations and modules will simply not yet be suited for the PaaS architecture. That simply is the tradeoff between self-managed and provided services.
Sitecore with pure PaaS
Sitecore has now opened up a new chapter by introducing Microsoft Azure’s PaaS solution with Web Apps. As this is a venture the stepped in to together with Microsoft, you can expect to see a whole lot of high-value seminars and webinars coming your way on this topic.
What is so different and what does this offer?
- No longer restricted to a number of predefined configurations
- Full flexibility to use ARM templates to provision the environments of your choice
- Fast and Easy deployment through web deploy with
- Based on Azure best practices allowing for flexibility and ease of scaling
- Development improvements through streamlined deployments, remote debugging and advanced application insights
Ideally, as is the idea with any and all of the Azure solutions, this should over time not only reduce your overall development cost but also reduce your hosting cost. Opening more budget to analyze and develop all those features requested by the business department.
For more specific information on the Sitecore cloud solution, go here: https://doc.sitecore.net/cloud
And a fantastic document by Pieter Brinkman on the benefits listed above, with more detail on the solution and Web Apps right here: https://www.sitecore.net/en/company/blog/489/five-reasons-why-microsoft-azure-web-apps-and-sitecore-are-a-match-made-in-heaven-4415
Want to know how to go forward from here and use the ARM templates? Then head on over to the getting started section here: http://www.sitecore.net/getting-started/deployment/sitecore-on-azure
As this is a new solution, there is still a steep learning curve. And yes, you will need to know more on Azure then we used to know before. But that it turn will give more flexibility and ability to manage that same cloud environment.
However, some things still need some clarifications I guess:
- How will licensing keep up with this? If I don’t have a Consumption based license, will I be able to use this?
- A number of possible solutions still exist on where configurations per environment should be stored. It is good that multiple solutions exist rather than being unable to perform that task, but it would be even better if only a single solution was preferred and put forward as best-practice.
- The sample ARM templates still need to be expanded on to cover heavier topologies. As this approach will become more globally adopted and more knowledge gets retained, this will go away
- A number of solutions are still not able to run in the PaaS solution:
It is good to see that Sitecore and Microsoft are working together so closely both from a development and architectural point of view. This synergy will really help to reach out into the future and serve faster, more scalable top of the line enterprise solutions.