Sitecore 9 Architecture Scalability

Sitecore 9 Architecture Scalability

Dec 15, 2017
Prasanth Nittala

The initial release of Sitecore 9 has brought a number of improvements to its architecture.  Along with everyone else, I’ve been working to fully understand these changes. With Sitecore 9, there are numerous components and databases — and it’s really helpful to see the connections between them. Sitecore provides a few diagrams in their documentation, but I still had questions about the connections between Sitecore roles, Sitecore databases, and xConnect Components, so I created the diagram below. Before viewing the diagram, it is good to understand the different Roles, xConnect Components, and Databases that are involved:

Sitecore Roles: Content Delivery, Content Management, Processing, Reporting servers

xConnect Components: Search API, Collection API, Marketing Operations API, Marketing Reporting API, Reference Data API, Search Indexer Job, Marketing Engine Job

Databases: Core, Master, Web, Experience Forms, Reporting, Processing.Pools, Processing.Tasks, Reference Data, Marketing Automation, ShardMapManager, Shard0, Shard1

Please note that the diagram shows which components can be scaled horizontally. I did not include the database scalability options — I assumed it to be a “highly available” database whether it exists on a single server or multiple database servers with separation or replication.

Sitecore 9 Architecture Scalability Diagram

As you can see in the diagram, you can have the following:

  • Multiple Content Delivery servers
  • Multiple Content Managment servers
  • Multiple Processing servers
  • Multiple Reporting servers
  • Multiple Solr servers
  • Multiple xConnect Search API servers
  • Multiple xConnect Collection API servers
  • Multiple xConnect Marketing Automation Operations API servers
  • Multiple xConnect Marketing Automation Reporting API servers
  • Multiple xConnect Reference Data service API servers
  • Multiple xConnect Marketing Engine Jobs

Additionally, if you need your client devices be able to push data to xConnect, you may need to provide a intermediary trusted API layer that takes the data from client devices and then pushes it to xConnect layer, thereby avoiding the need to install the client certificates on client devices. You can scale each of these components individually to suit your application needs. This provides a highly scalable Sitecore 9 architecture. I hope you find it helpful, and feel free to comment and let me know if there is anything misrepresented in here.