Cloud, Azure, Amazon (and other cloud providers) … words we can hear again and again. Who is not in cloud cannot publish fancy PRs about “Hey, we are in the cloud! We are cool!”.
Sitecore cannot stay out of this, and also provides support for Azure for last 5 years. And we will look into that in few articles.
If we will speak about Cloud and Sitecore, there are two most important terms – IaaS and PaaS.
IaaS aka Infrastructure-As-A-Service was called server hosting before cloudy times. It is nothing else than virtual server hosting in cloud. You don’t need to care about hardware, management, virtualization. You don’t need to have server house and all these toys. After one, two clicks you have provisioned virtual machine with configured operation system. Everything else is on your own – you must care about OS updates, system configuration, application installation and so on.
PaaS aka Platform-As-A-Service was called web hosting. And brings big move in cloud owner and customer responsibilities. Owner of cloud now manages not only “physical” part of hosting, but is also responsible for OS configuration and many other tasks. Our (customer) responsibility begins at copying of our website (or other application) and its configuration.
At first sight it can look that to utilize all of these fancy features we don’t need any specific support. What is Sitecore app? Just.. web app. So, can we simply deploy our Sitecore app to our new IaaS virtual machine or PaaS service, and … am I in cloud (and can call PR department)?
Yes, and no – on IaaS this scenario is typical for last years and many implementations just use IaaS as server hosting to host servers without utilizing any other cloud features. Why not, it is IaaS, and we have everything under our control, but when we move to PaaS, completely new world opens for us (and many doors closes for us) – we can use PaaS SQL Databases for storing data, we can use Application Insights for monitoring our application and analyzing its performance, there is Redis cache for sharing of session state, Azure Search for indexing and crawling our website, automatic scaling for higher performance, slot deployment, and… And we need support for that.
What I will get in PaaS (and IaaS)
|Application hosting||Azure Virtual Machine||Azure Web App|
|Deployment||Standard deployment – SIM, or manual||Azure ARM templates, Azure marketplace|
|SQL server||Standalone SQL Server||Azure SQL Server|
|Analytics data||Standalone Mongo DB||Standalone Mongo DB|
|Search server||Sitecore Search (Lucene, SOLR)||Azure Search|
|Session data||InProc, Session Server, …||Redis cache|
|Scaling model||Virtual machine scale sets||Azure Web App scaling|
|Application monitoring||Performance Counters||Application Insights|
For nearly every key feature in Sitecore, we have Azure PaaS alternative we could use.
Azure Web App – is fully managed compute platform optimized for web hosting. Key features for us includes easy scalability based on current load of application, support for multiple frameworks and technologies (not only .NET, but also PHP, Java and others), deployment integration with TFS/VSTS and support for slot deployment.
Azure marketplace – involves many pre-created deployments for our needs, including images for Sitecore deployment and additional modules. You don’t need any higher knowledge of ARM templates to use them. It is just set of wizard pages with configuration values like SQL Server credentials and MongoDB connection strings.
Azure ARM templates – allows scripted and customized deployments. It expects that you have advanced knowledge of ARM template syntax (and PowerShell).
Azure Search – provides Search-As-A-Service cloud solution which can be used in place of SOLR or Lucene search in Sitecore.
Application Insights – cloud “replacement” for Performance Counters known from Windows OS. You can monitor, analyze and tune your application with help of Application Insights. It is not limited to just web server, there is possible to monitor also dependent parts, like SQL databases. When integrated with Sitecore, brings possibility to monitor many of internal performance counters, like caching or rendering performance counters.
MongoDB – unfortunately, the MongoDB is currently only missing feature of Azure, and there is necessary to use some external MongoDB PaaS service.
Next time, we will look on … How to install Sitecore in Azure.