1

I am in the process of trying to make the publishing process quicker and simpler for one of our customers, on their sitecore based website. Through research I stumbled upon Merge Replication which might solve some of our issues, but it introduces other issues. I need your help and guidance to figure out which way is the best!

We've got a CD & CM setup, with 1 CM server which has its own SQL instance. 2 CD servers with a SQL instance each. At the moment I have the current setup:

CM (Master-, web- and core-database) Web is shown only internally on a secure admin url for the site, this works like a preview site.

CD1 & CD2 are the servers for visiting users, these each have a publishing-target in Sitecore.

When we deploy a release: 1. Deploy new code for CM. Publish templates and potential content changes for Sitecore to Web. Verify and authenticate that everything is correct. 2. Take out CD1 of the Load Balancer, deploy new code for CD1, publish templates and potential changes to Sitecore, verify and authenticate, then put server back into the load balancer. 3. Repeat step 2 for CD2. 4. Deployment done

this process is working OK for us now, we are up and running at all time without downtime on the site.


We've got a few issues with the current setup:

  1. Our search (Elastic search) are being populated when CM publishes to Web, so atm there is an issue with elastic search potentially can have data which is not yet published to the CD servers.

  2. When publishing, the editors could forget to publish to one of the CD servers, which would cause inconsistencies between the servers, which we would like to avoid.

  3. Everything needs to be published multiple times for same environment, takes up time.

  4. Editors do not know what a CD server is, they just want to have a “preview” and “Live” publishing target.


I've looked into the Merge Replication for Sitecore, and actually also have it working in a test environment. The advantage we want from this is that we only have two publishing targets:

  1. Preview (CM server preview database)

  2. Live (CM server web database, which then gets replicated out into the CD servers web databases)

  3. The Elastic search instance will relay on data from CM’s web database, which is live data.

  4. We have can have a Elastic search instance running on preview as well.

The issue here is, that now I can't deploy only for CD1 or CD2, when doing deployment. What if I have breaking changes towards Sitecore? The site will break if I publish new breaking Sitecore items to a server which hasn't been deployed to yet?

How can I get the best of these two worlds? Any?

1 Answers1

0

Do you have an ES for each CD? If you publish data to a single CD and have a shared ES you will get inconsistency either way.

Else I would make make changes to the publish dialog where only an admin/developer could see the CD servers individually.

Example of normal user:

Preview Live

Example of admin user: Preview Live CD1 CD2

Dinirex
  • 105
  • 1
  • 10
  • I have 1 ES instance. and the minor inconsistencies that can happen here, that we'll live with. I am not familiar with the option in sitecore to have different options to publish depending on rule, is it? – Niclas Schumacher Nov 03 '17 at 14:16
  • It requires custom coding to the dialog.. You could read posts like [link](https://sitecorestuff.wordpress.com/2015/02/05/how-do-i-hide-the-publish-subitems-option-in-the-publish-dialog/) or [advanced dialog](https://mikael.com/2013/07/a-better-sitecore-publishing-dialog/) – Dinirex Nov 03 '17 at 14:35