Friday 7 October 2016

Sitecore Solution Production Deployment






In this blog will share with you my experience with the architecture design and deployment configuration for a recent project I worked on. My project version is sitecore 8.1 update 3.

Basically my site implementation is completed and want to prepare the environments architecture so will go throw these in details as follows:



  • Development, Staging and production.
  • Configuring connection strings.
  • Enabling/disabling files.
  • Update configuration files content
  • Session State configuration
  • Search Indexes configuration
  • Remove/Restrict access to Sitecore client on CDs servers
  • Setting solr memory size



How is my environment distribution?
 


My environment consist of the following:

  • Development environment: developers use this environment on their local workstations to implement different solution functionalities.
  • Staging environment: This environment used for QA and customer testing and validating different site functionalities, and will be the source from which we take patches to production environment.
  • Production environment: this environment is the live site environment, once changes pushed pr deployed to this environment it will be live. 

What is my production environment consist of?
 
My production environment consist of the following servers:
  • Database Server
  • Mongo Database Server
  •  SOLR Server
  • Content Management Server
  • Content Delivery Server 1
  • Content Delivery Server 2

Following screen shot provide you with more clear vision about the production environment that I’m using and which I will explain its configuration in details through this post.




How to configure CM/CD environment?


In this section will walk you through the required steps to configure your CM/CD environment based on Sitecore documentation, in a side note you should know that there is a couple of ways to setup a CM/CD environment.


What are the required connection strings for each server?


As example you don’t need the master or the reporting database in your content delivery site, you will not have sitecore client access there!, Sitecore provide a detailed table with the required databases for CM, CD, Processing and reporting servers.

Following link provide the details to complete this step:


Enabling/Disabling Configuration Files?


You should know that there are some configuration files that you don’t need to be there on the content delivery server, Sitecore provide us with an excel sheet that contains all the files that should be enabled disabled on bother CM and CD servers.


Client on the following link (https://doc.sitecore.net//~/media/901A89FDE2D24DC5BD72BDF839275291.ashx?la=en) to download the excel file.


Any Configuration Files To Update?

Sitecore also provided a list of configuration files like scalability setting configuration files, analytics configuration files and others that should be update in your content management system, click here (https://doc.sitecore.net/sitecore_experience_platform/81/setting_up__maintaining/xdb/configuring_servers/configure_a_content_delivery_server#_Changes_to_configuration_1) to check the list.

What about session configuration?


In sitecore there are specific configuration related sessions, there are InProc and OutProc session state in addition to shared and private session state, Martina Welader (https://twitter.com/mhwelander) wrote an detail blog post talking about different sessions configuration that would be helpful to read.click here to check “https://mhwelander.net/2016/05/19/lets-talk-about-session-state/“

So in my case I did the following to configure:
  •  In my content management server I kept the default configuration for the session which should be InProc ( the session will be saved in server memory ) and private.
  • In my CD1 and CD2 servers I change the session configuration to be shared and outProc, which mean I want the same user to be identified in both server as one session not two, also to be able to make this happen you need to set your session configuration to be outProc which mean the session information will be saved in database ( MongoDB or SQL ) in my case I used MongoDB. 

Following link from sitecore documentation will show you exactly how to do that:

 
Any special configuration for my Indexes?

Yes, Sitecore provide a list of update strategies that upi can use to maintain your search indexes, following are the index strategies that you can use:
  • RebuildAfterFullPublish
  • OnPublishEndAsync
  •  IntervalAsynchronous
  • Synchronous
  • RemoteRebuild
  • TimedIndexRefresh
  • Manual

Follow this link to check all the details about the sitecore index update strategies.

Should sitecore client be accessible from CM or CD?

The answer is no, you should prevent sitecore client access from your content delivery servers, only allow that from your content management servers.

Basically you need to restrict IIS access for some folder and pages under your sitecore site in your content delivery servers, check the following


Should I increase the SOLR Bitnami allocated memory?

Sitecore MVP Ahmed Okour (https://twitter.com/aokour86) wrote a good blog post talking about specific list that you should for your SOLR production environment, one of these point that you should increase the allocated memory for your SOLR instance as 1 GB as minimum and 8 GB as maximum.

Following link will provide a detailed steps to follow:
http://www.sitecorecoding.com/2015/08/solr-with-sitecore-checklist.html

Hope the above will help, please comment or contact me for any questions or notes.

4 comments:

Unknown said...

"Nice and good article.. it is very useful for me to learn and understand easily.. thanks for sharing your valuable information and time.. please keep updating.php jobs in hyderabad.
"

Anonymous said...

Hi ,

I have one question i am using mongo db for session in sitecore production environment ,where i have to create collection for session what will be the structure for collection session.

Mohammed Syam said...

Hi, nothing is needed from your end, you just apply the required configuration like session connection string in the connectionstrings.config file and other session configuration and sitecore will do the rest.

swapna said...

EXCELLENT .....
Thanks for your sharing this blog, I really appreciate this article....sitecore online training

Post a Comment