LibrarySites.Banner

Separating Content Management from Content Delivery with the Sitecore ASP.NET CMS

This blog post describes some of the advantages and disadvantages of separating the content management (CM) environment from the content delivery (CD) environment using the Sitecore ASP.NET web Content Management System. For more information about these topics, see the resources linked at the bottom of this page.

By default, each Sitecore instance provides both content management (CM, for CMS users to maintain the managed sites) and content delivery (CD, for visitors to those managed sites). You can separate the CM and CD facilities into separate environments, typically involving separate servers.

I believe that the advantages of separating the content management environment from the content delivery environment strongly outweigh the disadvantages, and I always recommend this approach. One of the most significant disadvantages to separation of CM and CD environments may be cost. Because separation requires multiple Sitecore instances, and you must license each instance, separating increases Sitecore licensing costs. While you could install both instances on a single physical server, many of the advantages of separation come from using separate servers. In fact, multiple instances on a single server consume more resources than a single instance, including memory and network capacity, since each instance loads some amount of the same data from the database. For these reasons, separation typically increases hardware costs as well. An additional cost involves the administration of these systems, as well as licensing of Windows and other software on these systems. Separation of environments does not require additional database servers or even databases, though these provide additional benefits that you should consider as well.

Separating CM and CD environments has at least the following advantages:

  • Scalability: You can load-balance the CD environment without load-balancing the CM environment, which can lead to more efficient use of hardware. You can load-balance the CD environment without load-balancing the CM environment, which can lead to more efficient use of hardware.
  • Performance (closely related to scalability): By adding hardware and separating the CM load from the CD load, you typically increase the performance and capacity of each environment. Because the CM environment loads multiple versions in multiple languages, you might want more memory for CM, while you might want more CPU processing power in to service page requests in CD. In the CD environment, you can improve performance further by disabling features specific to CM.
  • Security: If an attacker compromises the CD environment, they have not compromised the CM environment, and you can use that CM environment to recreate the CD environment (for example, to publish to a new publishing target database). The attacker cannot access the Master database, which may contain versions or items not yet intended for publication (for example, a press release detailing financial results) or never intended for publication (for example, functionality specific to CM), and cannot write to that database. You can separate the security database used for site visitors from the security database used for CMS users. A CD environment may not have access to as many internal applications (LDAP, CRM, internal databases, etc.) as the content delivery environment.
  • Administration: You can host the CD environment externally, or at least in a perimeter network (DMZ), and host the CM environment internally. You can deploy updates that restart ASP.NET to the CM environment without interrupting the CD environment. A CM component that consumes considerable CPU or memory CM functionality, or a memory leak not deployed to the CD environment does not affect that environment. For reliability, you can use SQL for session management in the CD environment, while using InProc for performance in the CM environment. You can debug issues in the CM environment without affecting the CD environment.

You can achieve some of these goals by load-balancing environments that host both CM and CD on a single group of servers, but for example you do not achieve the security advantages with that approach.

If you know of additional factors to consider when deciding whether to separate the content management environment from the content delivery environment, please comment on this blog post.

Resources