Some time ago I found this Stack Overflow question discussing multiple aspects of serving a Sitecore solution during different phases of a project life cycle. The question was pretty old but still the only answer was not as good as I know it could be. Due of the relevance of this issue without a good response, I decided to write my version of the answer.
So the question from Azeem Siddiqui starts by putting some premisses:
Our organization’s website is moving to Sitecore CMS but we are struggling with setting up the environments for Developers (4), Designers (4), QA persons (3), Authors (10-15) and Approvers (4-10) in a way where they can work independently, I know that there will be dependencies but idea is to minimize it.
Here are couple of rules:
1) Whoever is responsible for the change then they should do it everything until and unless there is any dependency.
2) If one team is working on one feature then it shouldn’t stop or effect other team’s work. For example, if QA is testing the feature then Derringers and Developers should continue their work on the same feature for new enhancements.
Common questions for those experienced with another CMS platforms and seeking to know how Sitecore works in the real life.
The Big Picture
I started my reply with a diagram illustrating a way to setup servers for a Sitecore project, allowing the team to work together without interfering each other.
How people work together?
1) Where the Designers will work? I mean where they will add their html, js and images? On which server? In Sitecore? In Source Control (TFS)?
2) How the Designers and Developers should work together? I know developers will work on their local machine’s in Sitecore. And will promote their work to Integration server but How they will get the Designers stuff? Let suppose the feature has gone into production successfully now only Graphics Design changes are required, let say font styles and some images then where Designers should make these changes? On which Server? And after that how that Sitecore instance will sync with other Sitecore instances. And for design changes I do not want developers for promoting any code or file.
Answer: Both Devs and Designers works at their local machines, using local Sitecore instances. They use TFS as the Source Control system so they can mutually integrate their work. Usually Designers works more in CSS, Javascrips, Images, Sublayouts (markups) and Developers at the code itself. We have a Continuous Integration server in place (Ex: TeamCity) deploying changes to 3 different environments – CI Server (for build healthcheck), QA Server (For QA) and Prod Server (for content edition and public access). When, for instance, a designer has to fix a layout issue, he will do that at his local machine, then commit changes to TFS. Next step, TeamCity will deploy changes to the CI server, if the build is Ok the QA person can trigger a build and test the fixes. If everything is working as expected, someone can trigger the build to the production server, and the fix goes live.
You have this second diagram showing details on how you can setup your Production server to separate Content Authoring and Content Delivery – Here is a search I found several blog posts on setting this up: sitecore content authoring delivery
How to deal with Database changes?
3) What is the safest way to sync the Sitecore environment/databases? Means whatever has been published into production website, we will need back in DEV, QA and UAT environments.
We do not want to do any manual promotion of code, html, js and image files. Is there any way to do these kind of things automatically via tool or Sitecore commands. Personally I do not like the Sitecore packages.
Answer: You need TDS (Team Development for Sitecore) as shown in the first diagram – Use this tool to serialize/deserialize items from one Sitecore instance to another. Then you can have the serialized files to TFS and share across the team and environments. The good thing is you can use TeamCity to automatically push items to CI/QA/Prod environments.
Where to find good documentation?
4) Do you know any good reference? Where I can find answers of similar questions? Any website, book, blog?
I know one document “Understanding Sitecore Deployments 6.2″ but designers part and how the different environments will be synchronized are not discussed over there.
Answer: The main source for info on Sitecore is their SDN – You can register free (or have an extended account if you own a sitecore license). Some other blogs were suggested, such as John West’s and Alex Shyba’s, as well as – why not – this humble blog I’m just starting.