10 Considerations for a
Successful Sitecore Azure
Implementation
A Step-by-Step Guide
infrastructure often remains underutilized for a considerable amount of time both before and after the launch. This happens largely because servers and other hardware must be estimated well before a project kicks off. Such estimation is seldom accurate, causing IT and managers to request more resources than they need, since getting additional resources in the future could take time. In addition, problems can arise if resources don’t scale well with the surge of requests as an application gains popularity.
Cost and Maintenance Challenge
Obtaining infrastructure for your web site or enterprise solution comes with an expensive price tag. Capital investment can easily imbalance the project and program budgets. Additional IT expertise needs to be staffed for ongoing maintenance if there aren’t enough resources to support project needs. IT staff in large enterprises is often overloaded, and depending on internal priorities, your project may not get the attention it requires.
Moving your Sitecore-based web application or enterprise solution to the cloud offers a faster deployment option without the need
Abstract
Sitecore Azure is an implementation of Sitecore, one of the most advanced and powerful content management systems (CMS) available in the market, running on Windows Azure, a popular and flexible cloud computing platform from Microsoft. It is a PaaS (Platform as a Service) offering with an emphasis on managing the application and not the infrastructure. It is different from running Sitecore on other cloud platforms, where virtual machines running the Sitecore application need to be managed. Think of Sitecore Azure as “Sitecore as a Service,” where you retain a high level of control of the application and
the building blocks it rests upon, while other lower level details are managed for you. The commonality between Sitecore Azure and Sitecore running on cloud platforms other than Windows Azure is that on-premises servers are no longer required for hosting Sitecore applications.
Step 1:
Build a Compelling Case for the
Cloud
Why the cloud instead of on-premises infrastructure, especially when on-premises applications worked just fine for years?
Infrastructure Challenge
As mentioned, Sitecore is one of the most exceptional content management systems available today, powering more than 32,000 websites. The software was recently awarded the 2013 People’s Choice Award by CMS Critic, named a leader in the WCM space by Gartner and called a “Strong Performer” in the Digital Customer Experience category by Forrester Research. Moving your Sitecore-based web application or enterprise solution to the cloud allows for quick deployment, without the need to invest time and money to set up an enterprise grade infrastructure. Due to its initial cost, procuring the necessary infrastructure within a large organization remains a challenge, and requests must frequently go through several stages of approval before servers and software are acquired and the network is configured. Beyond the initial procurement challenge,
Author
Parshva Vora is a solution architect in Perficient’s Sitecore practice. He has more than a decade of experience building large-scale enterprise solutions, public-facing web sites, and collaborative portal and software products using various Microsoft technologies. He also enjoys coding in ruby, python and objective.
Get budget approval for
servers and softwares Obtain and set up servers and other hardware
Procure/hire human resources for initial set up and maintenance
to set up an enterprise-grade infrastructure. With your application running in the cloud, the cost can be greatly reduced by provisioning necessary infrastructure on demand and keeping minimal IT staff onsite to maintain your application. In an agile business environment, effective utilization of resources and greater flexibility are needed for an enterprise to remain competitive in comparison with the cloud. With Sitecore Azure, an enterprise can focus on the application (and its data) rather than the infrastructure it runs on.
Step 2:
Review IaaS (Infrastructure as
a Service) and Sitecore
As the name implies, you don’t own the infrastructure, but instead you rent it. Unlike on-premises hardware, overall capacity can be augmented dynamically by spawning new instances (usually virtual machines) on demand. Moreover, most service providers have a “pay as you go” billing model (i.e. you pay only for the time the infrastructure is used, thus saving your organization in operating expenses). Windows Azure, Amazon EC2, and Google AppEngine are major IaaS providers, although there are many other players in the market.
Sitecore is hardware agnostic and can be installed and run on virtual machines hosted with any IaaS provider as long as hosting
environment requirements are met. For example, Windows Azure and other major IaaS providers offer an ability to create a virtual machine on demand using one of the standard available images or your own disk image.
While IaaS seems like an attractive option, you are still responsible for patching, installing updates and maintaining virtual machines. Though this approach provides a significant cost savings when compared to on-premises hosting (or private hosting), an enterprise still needs in-house expertise to maintain the infrastructure it doesn’t own, and thus incurs the operating costs associated with it.
Step 3:
Opt for Sitecore Azure Edition:
A Platform as a Service (PaaS) Solution
Wouldn’t it be nice if you were responsible for maintaining only your application –rolling out application updates and fixing bugs, without losing the flexibility and high-level control? Everything else, including installing operating system patches and other maintenance chores, would be taken care of by the service provider, allowing you to focus solely on the application and data that is created and consumed. This is precisely what Sitecore Azure offers through Windows Azure cloud services, a PaaS offering from Microsoft. It allows you to run both Sitecore CMS and DMS in Windows Azure.Because instances can be added as demand rises and removed when it cools off, an application should not store its state on the instances. State data can be serialized to database or other storage, and it can be cached outside instances to improve performance. Sitecore Azure is the clear leader in the PaaS segment. At this time, there is no other major player with a similar offering. Although still in beta, Amazon’s PaaS solution, known as Elastic Beanstalk (EB), allows you to package your deployable .NET code and publish it to the cloud. Behind the scenes, it provisions appropriate instances (virtual machines) on EC2 to run deployed application. Sitecore Azure is a true PaaS solution, enabling you to deploy and maintain your Sitecore solution with a single click through a familiar graphical interface.
Understanding Sitecore Azure Hosting Costs
Sitecore Azure is a free extension to Sitecore CMS. However, Sitecore CMS licenses are still needed for cloud service instances, similar to servers on-premises. Apart from licensing cost, there are additional operating costs associated with Sitecore Azure, typically billed monthly, and dependent upon the usage of various Windows Azure components such as roles, instances and storage.
Subscription Options
Sitecore Azure Subscription: Sitecore installations are managed
by automated Sitecore features. Your existing Windows Azure subscription can be converted into a Sitecore subscription.
Windows Azure Subscription: You can choose to subscribe to
Windows Azure and manage Sitecore on your own. However, you can still use Sitecore Azure development and deployment tools.
Step 5:
Explore Deployment Options in
Sitecore Azure
Like an on-premises Sitecore CMS installation, in Sitecore Azure there can be separate farms for content editing and content delivery, or everything can be served from a single farm. You can set up several* content delivery farms that’ll significantly enhance the throughput of your Sitecore application. Here are possible
deployment topologies:
On-premises Content Editing: Content delivery from the cloud
Content is authored and edited in a controlled and secure
environment, typically in a corporate network. It is then pushed and published to one or more content delivery farms from where it is conveyed to users.
Live Mode: Content editing and delivery from the same farm in the cloud
Newly authored content and changes made to content are instantly visible to the user. It may not be the best way to publish content though, as both editing and delivery are carried out through the same farm.
Editing and Delivery from Different Farms in the Cloud
Step 4:
Decide if Sitecore Azure is the
Right Choice for You
Sitecore Azure is a great choice, as it brings down the initial investment cost to zero and greatly reduces your operating cost. However, the decision to move to the cloud shouldn’t be solely based on cost. You must consider application requirements as well as other factors detailed below.
• Regulatory Compliance: Make sure your Sitecore Azure
implementation complies with regulatory requirements. For example, compliance related to storing sensitive personal information and processing data within certain geographies can be met by choosing an appropriate data center to host virtual instances.
• Scalability: Having a scalable application that can meet high
demand during certain timeframes is critical for driving your business. Sitecore Azure provides the best
possible scalability. Additional instances can be added near real-time to meet increased demand. The elasticity isn’t expensive either. For example, it typically costs less than $10 to run a large VM for a day.
• Availability: Windows Azure provides the
best possible availability. Your application can be ensured up to 99.9% availability. With Sitecore Azure, you can set up multiple content delivery farms, and in case of a failure of particular farm, requests are redirected to other farms using Windows Azure Traffic Manager.
• Application Lifespan: Applications with
relatively short life spans such as campaigns, tournaments and other seasonal websites are better served through Sitecore Azure. You can go live quickly without setting up the infrastructure, and a site can be taken down without worrying of resource reallocation when its purpose has been served.
• Integration with On-premises Applications: Does your
Sitecore solution exchange data with other on-premises applications? If so, you should consider the communication patterns between them. Making an on-premises application running in a corporate network available to Sitecore Azure in the cloud can potentially raise security concerns. Service bus relays can be used to allow on-premises applications behind the firewall to communicate securely with Sitecore Azure
• Security: Running Sitecore in Windows Azure is as secure
as running it on servers in DMZ (perimeter network) of your enterprise.
• Monitoring: You can monitor the computational and storage
usage. Windows Azure restarts the instance automatically in case it fails.
The content editing farm is separate from one or more delivery farms, and both editing and delivery are handled in the cloud. All you need is on-premises development environment and Windows Azure emulator for local testing.
Step 6:
Understand How Sitecore DMS
Scales with Windows Azure
Scalability Challenge
Traditionally, ASP.NET applications, including Sitecore, relied on in-memory session state management, making it trivial to configure an on-premises load balancer for sticky sessions. Like the web, Windows Azure is stateless by design, and this helps it utilize its
resources uniformly. To scale out an application to multiple instances and farms, session data of an application must be stored outside server memory so that it is accessible by every instance. Once session state information is managed outside the server memory, called shared state, the application can scale truly across farms and geographies.
Sitecore DMS wasn’t supported in earlier versions of Sitecore Azure, as DMS relied on in-memory state. Sitecore Azure module 3.0 supports DMS, and, after applying hotfix, module 2.0 now supports it as well. To obtain a hotfix, you will need to contact Sitecore. So what are the options for storing shared state data for a Sitecore Azure solution?
• Database: Application state can be stored either in a Windows
Azure SQL Database, which requires a subscription, or SQL server installed on a virtual machine. Keep in mind that accessing data this way is much slower than from server memory.
• Windows Azure Storage: Application state can be saved to
Tables (Windows Storage Table, not to be confused with table in SQL Server or relational database). Tables allows you to store data as a collection of key-value properties and data retrieval is faster than database.
• Windows Azure Cache: Windows Azure provides two
types of caches that your application can use: managed and unmanaged. Shared caching service, which is near retirement, and Windows Azure cache service are managed cache, while in-role cache is unmanaged cache. In-role cache can be shared by multiple instances within a web role. Such cache is called co-located role cache. If one or more instances within a role are dedicated for caching then it is called dedicated role cache.
Scaling Sitecore CMS in Windows Azure
You can scale out Windows Azure components to improve the throughput of your application.
• Scaling Computational Load: You can add more instances
to web roles to scale out computational load of your application.
• Scaling State: More web roles can be added along with
in-role cache (co-located or dedicated) to scale out application state.
• Scaling Database Throughput: More content delivery
farms can be added (as shown in third deployment topology earlier) to scale database throughput of your application.
• Scaling Analytics: Having multiple content delivery farms
can greatly improve application throughput, and responses are quicker as requests are being served from the nearest farm. However, it also means that analytics data is scattered across farms and needs to be consolidate manually. Alternatively, all content delivery farms can be configured to gather analytics data at single location. For example, an application served through three farms, one in Europe and two in the United States (one being on the East Coast and another on the West Coast), can be configured to store analytics in one single farm – perhaps a farm on the East Coast of the U.S.
SHARED StAtE MAnAGEMEnt OPtIOnS
Database Windows Azure Storage Windows Azure Cache
• Windows Azure SQL Database or SQL Server installed on virtual machine in Azure. • Much slower retrival as compared to in-memory state data. • Application state saved in property bag of key-value pairs. • Most cost-effective way of storing and retrieving state data. • Windows Azure cache can be managed and self-managed. Self managed cache is in-role.
• Fastest and very exspensive. Only frequently accessed data or state info. should be stored here.
Step 7:
Integrate Sitecore Azure with
Salesforce.com
Salesforce.com (SFDC) doesn’t really need an introduction. It has become the powerful tool of choice for most enterprises’ sales departments due to the flexibility it offers. If your company’s public-facing website is powered by Sitecore CMS, and a tool of choice for employees in your organization is Salesforce.com, wouldn’t it be nice to share intelligence and analytics gathered by Sitecore with Salesforce.com, turning a casual visit into a lead? Wouldn’t it help your sales team to better understand customers’ behavior and buying patterns? You can essentially drive Salesforce.com through your public-facing website. Similarly, showing information stored in Salesforce.com on to a Sitecore website, or utilizing it to personalize the content, can result in a richer experience for website visitors. Empowering visitors to search documents and information stored within SFDC or to view SFDC reports can help your sales department stay focused by not requiring them to manage content through Sitecore CMS.
With the content and website managed by Sitecore Azure, CRM data in SFDC, and an effective utilization of Sitecore analytics data by SFDC, you can take your business to a completely different level. A third-party tool called S4S*(Sitecore for Salesforce), by Sitecore partner FuseIT, supports bi-directional communication.
Step 8:
Explore Big Data and HDInsight
(Hadoop as a Service)
You’ve heard of Big Data. Think of it as a mix of structured and unstructured data in bulk that is difficult to process with conventional techniques. Big Data is popular for two reasons:
1. It is amazingly cheap to store large volume of data
2. It is economical to leverage the computing power of the cloud to analyze this data
Big Data, if collected up front with the right goals in mind, can prove extremely powerful and can drive recommendation engines, marketing strategies and business decisions. However, the velocity, volume and variety of this data can be daunting, and the value of such data can be nil if intelligence is not mined in the correct manner.
Hadoop is an Apache open source project that analyzes Big Data using famous MapReduce algorithms. Windows Azure offers Hadoop as a service, known as HDInsight. HDInsight allows you to build Hadoop clusters on demand within minutes, which can then be taken down when no longer required. HDInsight supports Hive, a SQL like query engine that assists with data summarization and ad-hoc querying, and Pig, which is dataflow language support. Analytics gathered by Sitecore, in conjunction with other collected data, is analyzed by HDInsight to drive personalized experience
and business data. Depending upon what you want to do with the analytics data, you may need to write custom lower level map reduce jobs. Alternatively, you may use an HDInsight portal to issue Hive or Pig queries that handle compilation, packaging and auto start of a Hadoop job for you.
With support for Hadoop built in, and tooling provided by Windows Azure, it is extremely easy to leverage the power of big data for your Sitecore Azure application.
Step 9:
Leverage Multi-tenancy in
Sitecore Azure
A multi-tenant solution or application is designed for multiple sets of audiences (each set of audience is called a tenant) and serves the distinct needs of each tenant, typically coupled with a unique user experience. Sitecore Azure PaaS capabilities can be leveraged to host a multi-tenant solution for your organization, or a subscription based SaaS solution, where each subscriber can be an individual, an employee or customer of a subscriber organization.
Isolation is a key consideration for multi-tenant applications. An application should execute for each tenant in such a way as if the tenant is the exclusive consumer of the application. In fact, execution for one tenant must not have access to the data of other tenants and it should execute within its memory space. Moreover, high usage of resources by one tenant shouldn’t affect the
performance of other tenants. In other words, each tenant is capable of scaling out when needed without affecting scalability. In Sitecore Azure, isolation can be achieved in multiple ways at multiple levels. For example, data for each tenant can be stored in a separate database, or different tables within the database can be used to achieve the isolation.
A higher level of logical isolation can be achieved by holding data for multiple tenants in the same table, with additional tenant information stored in each row, so an application accesses only tenant specific data. However, the last storage can affect the performance of other tenants if a few tenants are experiencing high load. Isolation is important, as is the security, cost and performance. Having separate databases and instances for each tenant is going to be more expensive, so isolation and cost, depending upon requirements of an application, needs to be balanced.
Your Sitecore Azure solution is comprised of several elements such as farms, instances, storage and cache. Each element can be scaled out individually to meet needs and demand. Usually you start with a few instances and then provision additional instances later. An instance can host multiple tenants or each tenant can run on its own instance. Running separate instances for each tenant helps to achieve physical isolation at an application level. As suggested earlier, caching can also be added to improve throughput and scalability of the application.
Step 10:
Use an Emulator when
Developing and Testing with Sitecore
Azure
Development Challenge
Be it your test environment or development environment, you are charged for everything that is run in Windows Azure, so it is certainly not cost-effective for carrying out development and testing activities. Even if cost is not a concern, deployments are time consuming. Behind the scenes, Sitecore packages everything and converts information into a format suitable to Windows Azure SQL database, and deploys it for you. This can easily take 15-20 minutes.
Windows Azure provides an emulator, which is free to use and faster to work with. Sitecore Azure comes with tools that also work with the emulator.
Limitations
There are a few ‘soft’ technical limits worth considering before moving to Sitecore Azure.
• Sitecore Azure permits only one content editing farm in the cloud. The rest of the farms are content delivery farms and there can be as many as 99 content delivery farms in a single implementation.
• SQL Azure database (Sitecore Azure uses SQL Azure) can grow up to 150GB in size. More data can be accommodated by adding additional databases. There can be up to 149 SQL databases in each database server for SQL Azure.
Conclusion
As a PaaS solution, infrastructure and operating system upgrades are part of the services Sitecore Azure provides. However, it is more than just managed infrastructure. Designing your applications to run on Sitecore Azure require them to be developed with the cloud in mind. It is recommended that you thoroughly assess the impact before deciding to move your application to Sitecore Azure. Transitioning an on-premises application to Sitecore Azure may force it to be recalibrated or even revamped before it can run in a managed environment. This can mean additional development and testing, but
is worth the effort, as responding to increases in demand becomes a matter of adding virtual instances and content delivery farms. Scaling an application to any number of users, in any geography, when needed has never been this easy or economical.
References
• Apache Hadoop website. 16 Oct. 2013. Web. <http://hadoop. apache.org/>.
• Aponovich, David and Powers, Stephen. “Forrester Wave: Web Content Management for Digital Customer Experience, Q2 2013.” Sitecore website. 8 Apr. 2013. Web. <http:// www.sitecore.net/Resources/Analyst-Reports/Forrester-Wave-2013.aspx>.
• HDInsight Service. Windows Azure website. Web. 1 Nov. 2013. <http://www.windowsazure.com/en-us/services/ hdinsight/>.
• Iwan, Emily. “Sitecore Named a Leader in Gartner’s 2013 Web Content Management Magic Quadrant for Fourth Consecutive Year.” Sitecore website. 1 Aug. 2013.Web. <http://www. sitecore.net/Company/News/Press-releases/2013/08/ Sitecore-Named-a-Leader-in-Gartner-MQ-2013.aspx>. • Iwan, Emily. “Sitecore Wins CMS Critic’s People’s Choice
Award for Best Enterprise CMS.” Sitecore website. 18 Oct. 2013. Web. <http://www.sitecore.net/Company/News/Press-releases/2013/10/CMSCritic-Peoples-Choice.aspx>. • Sitecore for Salesforce Connector. FuseIT website. Web. 1
Nov. 2013. <http://www.fuseit.com/Solutions/S4S.aspx>. • Terkaly, Bruno and Villalobos, Ricardo. “Hadoop and
HDInsight: Big Data in Windows Azure.” Windows Azure Insider, MSDN Magazine. Sept. 2013. Web. <http://msdn. microsoft.com/en-us/magazine/dn385705.aspx>. • Vora, Parshva. “Integrate Your Salesforce.com
Implementation into Sitecore CMS.” Perficient website. 22 Aug. 2013. Web. <http://blogs.perficient.com/ microsoft/2013/08/integrate-your-salesforce-com-implementation-into-sitecore-cms/#more-19341>.
• Windows Azure Pricing. Windows Azure website. Web. 1 Nov. 2013. <https://www.windowsazure.com/en-us/pricing/>. • Windows Azure Service Bus. Windows Azure website. Web. 1
Nov. 2013. <https://www.windowsazure.com/en-us/services/ messaging/>.
About Perficient
Perficient, Inc. is a leading information technology consulting firm providing business-driven technology solutions to Global 2000 and other large enterprise clients throughout North America. If you would like more information about the topics discussed in this white paper please feel free to contact the author or send an email to [email protected].
Global Headquarters • 520 Maryville Center Drive • Suite 400 • St. Louis, MO 63141 • Perficient.com
SUBSCRIBE TO PERFICIENT BLOGS ONLINEPerficient.com/Thought-Leadership
BECOME A FAN OF PERFICIENT ON FACEBOOK
Facebook.com/Perficient
FOLLOW PERFICIENT ON TWITTER
Twitter.com/Perficient
DOWNLOAD PERFICIENT WHITE PAPERS
Perficient.com/WhitePapers
Copyright © 2007-2013 Perficient, Inc. All rights reserved. This material is or contains Proprietary Information, Confidential Information and/or Trade Secrets of Perficient, Inc. Disclosure to third parties and or any person not authorized by Perficient, Inc. is prohibited. Use may be subject to applicable non-disclosure agreements. Any distribution or use of this material in whole or in part without the prior written approval of Perficient, Inc. is prohibited and will be subject to legal action.