The sildes of my presentation on the Sitecore User Group Netherlands meetup on December 7th 2016, hosted by Colours in Den Bosch, presenting and demoing the provisioning of Sitecore into Azure using Azure Web Apps. Note that these slides do not contain the demo itself. For the demo, view the recording of the presentation or read my blog post, both accessable via https://www.robhabraken.nl
3. from version 8.2 Update 1 Sitecore
will support Azure App Service Web Apps!
The current estimation is that this
update will come available early November.
After a few delays, 8.2 Update 1 was launched on December 5th
This presentation and demo is mostly based on my early access
preview, everything is rather new and we’re still learning :-)
Marketplace and ARM templates became available yesterday
4. Familiarity of
Windows
Built on .NET, Sitecore uses
the technology that your IT
department already knows.
Infinite scalability
Easily scales up and down as
demand changes.*
Rapidly deploy Sitecore on
Azure without worrying IT.
Speed to market
The only enterprise-
grade cloud
Microsoft Azure ensures that
Sitecore® Experience
Database™ is secure.
Always on
Never miss a beat; always
be there for your customers.
Interoperability
Integrates seamlessly with
your existing back-end
systems and marketing
investments.
Accident protection
Reliable and redundant copies of your
data and automatic failover protection.
Pay-as-you-go
Only pay for the power and
capacity you’re using.*
*Customers will need to ensure the proper number of content delivery
servers from Sitecore to meet scaling requirements.
5. Virtual Machines Cloud Services Web Apps
Azure hosting options
Control Support of legacy apps Ease of management Agility
• Web Apps is the new PaaS
standard with more agility &
easier to manage
• Web Apps were previously
marketed as a SaaS solution,
but is now considered to be
PaaS
• Sitecore is using additional
SaaS services to complete the
installation
Azure Module Sitecore 8.2-1
6. • Cloud Services had the Azure Module (now deprecated), but
required a lot of custom configurations and additional work in
your solution
• It is more work to get Sitecore 8.2.1 up and running locally then
deploying it to the Cloud in Azure Web Apps
• Sitecore now provides boilerplate provisioning scripts for all
different seats (xP1, xP2, xM1etc.) and also gives sizing advices
for all services and instances
7. • Custom deployment
• Deployment takes 20 ~ 45
minutes per instance
• No automatic scaling without third
party services
• Doesn’t support all modules
(WFFM, EXM)
• Cumbersome maintenance
• Out of the box provisioning &
default deployment techniques
• Deploy once per server type
• Scaling is an easy native Azure
feature
• Will (eventually) support all
Sitecore modules
• Very easy to maintain & monitor
Cloud Services Web Apps
8. • Custom deployment
• Deployment takes 20 ~ 45
minutes per instance
• No automatic scaling without third
party services
• Doesn’t support all modules
(WFFM, EXM)
• Cumbersome maintenance
• Out of the box provisioning &
default deployment techniques
• Deploy once per server type
• Scaling is an easy native Azure
feature
• Will (eventually) support all
Sitecore modules
• Very easy to maintain & monitor
Cloud Services Web Apps
11. Web Apps
Separate Web Apps to host the web
site roles (CM, CD, Processing etc).
Each Web App is placed in its own
App Service Plan to enable it to scale
separately.
Azure Search
Sitecore uses Azure Search as its
default search engine.
Azure Search is a fully managed
search-as-a-service that offers
scalable full-text search.
Application Insights
Used for all Health Monitoring
needs, like searching for all Sitecore
logs, performance counters &
custom telemetry.
No local log files anymore!
Azure SQL
Sitecore uses Azure SQL to store all
of its content and analytics
databases. Databases can be split
across management and delivery
database servers.
mongoDB
The collection database (MongoDB)
is the primary storage for all
analytics information and the
registry of contacts and engagement
automation states.
Use a VM hosting mongoDB or use
mLab.
Azure Redis Cache
Sitecore uses Azure Redis Cache as
its default session state backend,
used to store information from
active visitors to be used by the
content delivery and personalization
process.
14. • Per instance
group you can
manually scale
out already
deployed
instances (no
extra deploy
required)
• No config diffs
between
instances
possible
15. • Scale on metrics
using a defined
min & max
amount of
instances
• Always deploy to
a single instance
in an empty
staging slot and
scale out
afterwards
16. • You can scale up
instance groups
simply by clicking
the desired plan
18. • Azure Marketplace
• Point and click deployment of vanilla Sitecore environment
• No technical skills required
• BYOL only (Bring your own license), you cannot buy via Marketplace
• ARM Templates & Web Deploy packages
• PowerShell based deployment of vanilla or customized Sitecore
environment
• Technical skills required
• Both: deploy customizations overtop
19. • ARM (Azure Resource Manager) templates are an
Azure standard using JSON
• Delivered by Sitecore as a starting point for your own custom
provisioning
• Enables you to define one or more Azure resources including
dependencies between deployed resources
• Can be used for initial provision or as continuous deployment
• Use Web Deploy and DACPAC packages to setup site &
databases
21. • A set of modules that provide cmdlets to manage Azure
• Used to create, test, deploy, and manage solutions and services
• Offers same tasks as the Azure Portal, such as creating and
configuring cloud services, virtual machines, virtual networks,
and web apps.
• Addition: This week Sitecore released an Azure Toolkit with
Sitecore CmdLets to provision environments & create WDPs
22. • Use the PowerShellGet module https://www.powershellgallery.com/
• Set-ExecutionPolicy -ExecutionPolicy AllSigned
• More info on https://azure.microsoft.com/en-
us/documentation/articles/powershell-install-configure/
• And simply run the following commands:
# Install the Azure Resource Manager modules from the PowerShell Gallery
Install-Module AzureRM
# Install the Azure Service Management module from the PowerShell Gallery
Install-Module Azure
23. • Inject your mongoDB connection strings into the ARM template
parameter file
• Enter a username and a password for your SQL Azure databases
• Point the PowerShell script delivered by Sitecore to the correct ARM
template and its parameter file
• Enter a
• name for your resource group
• the location you want to provision Sitecore in
• your Azure Subscription ID
• Run the PowerShell script
25. • I have shown you a straight forward deployment directly from
Visual Studio – in a real production scenario you would involve
Continuous Integration tooling like TeamCity, VSTS, Octopus
Deploy, but that is out of scope of this demo
• If you would create a WDP package and store that, you would
have a nice recovery plan, together with the ARM scripts you
can automatically re-provision and deploy your whole
environment
26.
27.
28. • Only use geo-replication if you are concerned about an Azure
Data Center going offline – default uptime is very high
• You can use all integrations separately & in combination with
on premise too (like AI, Search, Redis, SQL)
• Or you can use your own alternative of any of these
integrations by patching them in the corresponding config (you
don’t have to use them) – like Solr instead of Azure Search
• Consumption based licensing is recommended for moving to
Azure Apps
• Staging slots do not count in the server based license model
29. • Web Apps has a max of 8 cores & 14 Gigs of RAM
• Azure Search has a limit of 1000 fields per index
• Azure SQL has a limit of 1TB per database
• Check limitations of required Azure resources upfront
• You might end up having to use an IaaS equivalent
30. • Entire architecture should be stateless
• Cannot install additional software on a server
• No access to registry
• Limited .NET Framework Drawing APIs
• Shared disk among all App Service Plan instances
31. • Web Apps
• Application Insights
• Azure Search
• Azure SQL
• Azure Redis Cache
• mongoDB
• Traffic Manager
Standard S2
Standard
Standard S1
Standard S2
Standard C1
Use service like mLab
Default
34. • Blog on Azure Cloud Services – deprecated!
http://sitecore.robhabraken.nl/index.php/2229/sitecore-azure/
• First blog of my series on Azure Web Apps
http://sitecore.robhabraken.nl/index.php/2407/an-introduction-
to-sitecore-on-azure-web-apps/
35. • Sitecore 8.2.1 on Web Apps blog post about all I’ve shown here
(early December)
• The Ultimate Continuous Delivery for Sitecore Web Apps
• Building and setting up a showcase development environment
with fellow Sitecore devs, which we will share in the community
36. • Azure Marketplace
https://azure.microsoft.com/en-us/marketplace/
• ARM Templates
https://azure.microsoft.com/en-
us/documentation/articles/resource-group-authoring-
templates/
• Web Deploy packages
https://www.iis.net/learn/publish/using-web-
deploy/introduction-to-web-deploy
40. • Azure Redis limitations
https://azure.microsoft.com/en-us/pricing/details/cache/
• App Insights limitations
https://azure.microsoft.com/en-us/documentation/articles/app-
insights-pricing/#limits-summary
• Azure Products availability by region
https://azure.microsoft.com/en-us/regions/services/
41. • Introduction to Remote Debugging on Azure Web Sites
https://azure.microsoft.com/en-us/blog/introduction-to-remote-
debugging-on-azure-web-sites/
• Troubleshoot a web app in Azure App Service using Visual Studio
https://docs.microsoft.com/en-us/azure/app-service-web/web-sites-
dotnet-troubleshoot-visual-studio#remotedebug
• Debugging an Azure cloud service or virtual machine in Visual Studio
https://docs.microsoft.com/en-us/azure/vs-azure-tools-debug-
cloud-services-virtual-machines#debug-a-cloud-service-in-azure
42. • Set up staging environments for web apps in Azure App Service
https://azure.microsoft.com/en-
us/documentation/articles/web-sites-staged-publishing/
• Azure Web App sandbox
https://github.com/projectkudu/kudu/wiki/Azure-Web-App-
sandbox