Sitecore license is instance based. In a scaling enterprise environment with DR and HA capability, normally there are multiple CM, CD and Processing servers cross data centres, either active or hot standby(passive mode). We must license each Sitecore instance in each environment. To host multiple websites, it is almost impossible to host one website per instance, which will double or triple the number of licenses required.
Sitecore platform is designed to manage multiple logic websites in a single instance. What does it mean to interpret development and staging environment? What is the impact to business?
Single Code Base, One Instance, Same Application Pool
Based on this, all websites, applications and components built within Sitecore are developed in single code base and hosted on one instance managed by same application pool. I have a previous post about how multisites solutioned in Sitecore.
There are also many articles described the challenges imposed by IIS(app pool, SSL certificate, Robots.txt, etc.). For example John West, Sitecore Multisite, Part 1: IIS Challenges
Here I mainly summarised the challenges and impacts to development and business operation, also the measures we came up as guidline.
|Development Flexibility||Single code base requires developers to work with shared libraries between various projects. It is not flexible for developers to apply new or upgrade technology libraries||•Assess the architecture solution before project starts
•Rule of KISS. Develop applications based on existing libraries unless necessary
|System Evolvability||Certain application technology evolving may require common library upgrade which result non-related applications re-factory||•Assess the necessary of the upgrade
•Re-factory the applications necessarily
|Production Maintainability||•Any functional update to any site will reset the app pool which will cause all sites restart
•Any content publish to any site will clear the html cache of all sites
|•Increase CD nodes in production environment to separate sites by group in different hosting server instances.
•Schedule different release or publishing time frame