Sitecore and cloud – Iaas, PaaS (Part I)

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.

This article is part of series of articles. To read other parts, you could use following links:
Part 1 (Sitecore and Azure introduction)
Part 2 (Installation prerequisities)
Part 3 (Installation)

Basic theory

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)

Feature IaaS PaaS
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.

One thought on “Sitecore and cloud – Iaas, PaaS (Part I)”

Leave a Reply

Your email address will not be published. Required fields are marked *