Sitecore is a powerful Customer experience platform used by global business to provide digital journeys to their customers. It offers enterprise level features such as personalization, user tracking/analytics, content optimization and A/B testing. I have been working with Sitecore since version 8.2 update 5 but more recently with version 9.0 update 2. My most recent major project carstore.com is developed using Sitecore.
All Sitecore developments are integrated with Unicorn which automatically converts all data to .yml files which can easily be saved in source control.
DevOps as Standard
DevOps process which includes dedicated test environments, continuous integration and automated deployments to your production environment.
Hosted in Azure
Hosted in Azure using scaled PaaS App Services and SQL Azure Databases.
All Sitecore projects are developed using the Helix principles and modulate architecture.
Cartsore.com is my most recent major project that uses Sitecore. The version it uses is 9.0 update 2. For Sitecore Development I use the solution architecture known as Helix that splits functionality into Features, Foundations and Projects. Although Helix was designed specifically for Sitecore development, it is known outside of the Sitecore community as Component-based or modular architecture. Each component such as “forms”, “FAQs”, “Error Pages” are represented as features and have their own project (*.csproj) within their respective solution folder. Foundations are classified as foundation functionalities such as “logging”, “synchronisation”, “Token Replacements”, ect. The project section is used for each individual Sitecore website. There are 63 projects in the Carstore.com Helix solution.
The solution uses Gulp tasks for builds and deployments with the task processes run using PowerShell. When the application is built, each of the 63 project’s output is copied to the centralized WebRoot. The same process is true for local development but also production environments.
I use Unicorn for content serialization. Unicorn is a utility for Sitecore that solves the issue of moving templates, renderings, and other database content items between Sitecore instances. Unicorn does this by writing serialized copies of Sitecore database items as *.yml files to disk. These serialization files are stored alongside the code in source control. I invoke Unicorn by triggering a Gulp task or from the Unicorn Web UI. I have also configured Unicorn to run from Powershell as an automated DevOps step during deployments.
Sitecore has just began supporting scaled environments using Azure PaaS (Platform As A Service) such as App Services, SQL Azure and Redis Cache. For the Carstore.com solution I setup both Content management and Content Delivery servers as dedicated App Services which are independently scaled to handle customer demand and network traffic spikes due to marketing activity. To ensure we could stage new developments before we went live with new changes, I took advantage of Deployment slots in Azure which allow the QA team to test in a separate environment that is identical to production, then once it’s received final sign off its switched to live.
Although incredibly powerful, Sitecore has a deserved reputation for being very complex to develop, correctly setup and configure, especially if you are taking full advantage of all the features and deploying to scaled Azure environments. In addition to working with Sitecore professionally for over 2 years I’m also an official Sitecore certified developer.
Sitecore Development Technologies
When developing Sitecore I use GIT for source control as its far more flexible than TFS for storing unicorn yml files. As a Sitecore development can consist of tens of thousands of files its just not feasible to use TFS.
Visual Studio Team Services in combination with GIT is an excellent tool for source control, project management and DevOps processes.
PowerShell plays a vital part for DevOps, setting up deployments to Azure as well as triggering Unicorn syncs, generating self-signed SSL certificates and for complex environment transformations. It’s also used for installing Sitecore 9 through the SIF (Sitecore Installation Framework).