Developer Group - Sitecore Application Lifecycle Management
1. Presented by Thomas Eldblom // Senior Solution Architect, Sitecore Australia
November 5, 2014
Sitecore Application Lifecycle Management.
A Strategy for Optimizing the Complete Sitecore Application Development and
Solution Management Lifecycle.
2. François de la Rochefoucauld (1613-1680)
“The Only Thing Constant in Life is Change”
4. The capability to integrate, coordinate and manage the different
phases of the software development process.
From development to deployment, ALM is a set of pre-defined
process and tools that include definition, design, development,
testing, deployment and management.
Throughout the ALM process, each of these steps are closely
monitored and controlled.
Application Lifecycle Management
5. CONTINUOUS
INTEGRATION
s
Why Focus on Sitecore ALM?
Developer Production
Deployment
UAT
Deployment
Integration
Version
Control
Integration 2 Integration 3
Branching StrategyHotfixes and patching
Agile Development,
Continuous Deployment
Modules,
Dependencies and
Upgrading
Configuration
V1.0 V1.1 V1.2
16. The Release Reuse Equivalency
Principle
The granule of reuse is the granule of release.
The Common Closure Principle
Classes that change together, belong together.
The Common Reuse Principle
Classes that aren’t reused together should not
be grouped together.
Principles of Package Architecture
The Acyclic Dependencies Principle
The dependencies betwen packages must not
form cycles.
The Stable Dependencies Principle
Depend in the direction of stability.
The Stable Abstractions Principle
Stable packages should be abstract
packages.
18. Establish a Domain Language with the Client
Define the Conventions to Fit Your Team and Processes
Build Features not Layers
Clear Separation of Concerns
Detectable Dependencies
Summary: Architecting your Solution
20. Design
DevelopmentQA & Test
Release
SETUP DEVELOPMENT ENVIRONMENT
MANAGE SOLUTION CONFIGURATION
MANAGE MODULE DEPENDENCIES
DEVELOP SOLUTION FILES
VERSION CONTROL AND BRANCHING
21. Bad version control strategy = Failure!
Version Control is the One Stop Shop for your entire solution
Development environments are generated from version control
Integration environments and testing originates from version control
Releases are created from version control
Don’t overcomplicate: Think about what you version, not how you do it.
Only version control changes or additions - never standard files or modules
Version control your Solution Manifest
Version Control
YOUR #1 PRIORITY
22. What does it do?
Glues your bespoke code together with modules, content, configuration etc.
What is it?
One or more files describing the complete solution setup in a structured manner.
How is it used?
Used as input to automation scripts or tools
What is the aim?
Consistently recreate any version of your solution
Solution Manifest
Because you cannot version control everything!
23. Get any version of the solution from version control
Retrieve Sitecore, modules and all other dependencies
Configure solution for the development setup
Configure IIS and other environment services
Setup a local database instance and restore test content
Build solution
Restore solution items into Sitecore
Example of what a manifest should allow you to do in development:
24. Create a manifest to help you initialize and recreate development
Force conventions by automation and manifest
Other important disciplines:
• Configuration management
• Dependency management
Always be true to your architecture and conventions
Summary: Developing your Solution
27. Be true to your architecture and conventions
Think lean and agile
Be able to recreate any version at any time
Quick deployments = higher quality
Don’t focus on tools and methodologies
Automated Testing is not a goal
Understand the platform
Quick wins to good Quality
28. Continuous Integration
What does it do?
Continuously integrates changes with the standard modules and establishes a consistent
setup for quality assurance.
What is it?
A central service supervising the version control system, automatically building, configuring
and establishing a running solution.
How is it used?
Establish environments for testing or create packages for
further processing.
What is the aim?
To be consistent and speed up processes.
30. Components of a Sitecore Solution
SITECORE INSTANCE
ITEMS
FILES
ENVIRONMENT
31. Components of a Sitecore Solution
SITECORE INSTANCE
ITEMS
FILES
ENVIRONMENT
32. Components of a Sitecore Solution
SITECORE INSTANCE
ITEMS
FILES
ENVIRONMENT
SERVER
SERVICES
CONFIGURATION
Hardware, VM,
OS
Software, IIS,
SQL Server…
Security, IIS
configuration …
33. Components of a Sitecore Solution
SITECORE INSTANCE
ITEMS
FILES
ENVIRONMENT
SERVER
SERVICES
CONFIGURATION
34. SITECORE INSTANCE
Components of a Sitecore Solution
ITEMS
ENVIRONMENT
SERVER
SERVICES
CONFIGURATION
FILES
CONFIGURATION FILES
SOLUTION MODULES
.config
.dll, .aspx,
.cshtml, .css,
database files
35. SITECORE INSTANCE
FILES
CONFIGURATION FILES
GENERAL ROLE ENVIRONMENT
Components of a Sitecore Solution
ITEMS
ENVIRONMENT
SERVER
SERVICES
CONFIGURATION
SOLUTION MODULES Connection
strings, …
CD, CM
configuration
37. SITECORE INSTANCE
Components of a Sitecore Solution
ITEMS
CONTENT
CONFIGURATION ITEMS
ENVIRONMENT
SERVER
SERVICES
CONFIGURATION
FILES
CONFIGURATION FILES
GENERAL ROLE ENVIRONMENT
Templates,
Layouts, …
SOLUTION MODULES
38. SITECORE INSTANCE
Components of a Sitecore Solution
ITEMS
CONTENT
CONFIGURATION ITEMS
ENVIRONMENT
SERVER
SERVICES
CONFIGURATION
FILES
CONFIGURATION FILES
GENERAL ROLE ENVIRONMENT
SOLUTION MODULES
In order to integrate
successfully and
consistently, you need
to control all
components.
39. Automate, Automate, Automate!
Consistency and speed is instrumental to good quality
Understand Sitecore and understand the implications in processes before
automating
Other important disciplines:
• Integration testing
• Performance and stress testing
• Branching and merging
If you are not true to conventions, you will not be able to automate!
Summary: QA and Test
42. Sitecore Development and Release Process Example
RELEASE REPOSITORY
BUILD SERVER
DEVELOPER MACHINE
DEVELOPER MACHINE
DEVELOPER MACHINES
LOCAL
DATABASE
SERVER
VERSION CONTROL
SYSTEM
MODULE REPOSITORY
BACKUP REPOSITORY But what is
a Sitecore
Release?
44. Sitecore Servers and Technologies
DELIVERY
SERVER
MANAGEMENT
SERVER
CONTENT
DATABASE
SERVER
EXPERIENCE
DATABASE
SERVER
Microsoft Windows Server
IIS
Microsoft SQL Server
SOLR
MongoDB
.NET
AGGREGATION
SERVER
PUBLISHING
SERVER
REPORTING
DATABASE
SERVER
SESSION
DATABASE
SERVER
45. Sitecore Server Roles Example
SITECORE DELIVERY SERVER SITECORE MANAGEMENT SERVER CONTENT DATABASE SERVER
46. Initial Deployment
SITECORE DELIVERY SERVER
ENVIRONMENT
SERVER
SERVICES
CONFIGURATION
FILES
SOLUTION & MODULE FILES
CONFIGURATION FILES
GENERAL ROLE ENVIRONMENT
SITECORE MANAGEMENT SERVER CONTENT DATABASE SERVER
File Install
IIS Website,
App Pool, File
Security, …IIS
VM, Windows
47. Initial Deployment
SITECORE DELIVERY SERVER
ENVIRONMENT
SERVER
SERVICES
CONFIGURATION
FILES
SOLUTION & MODULE FILES
CONFIGURATION FILES
GENERAL ROLE ENVIRONMENT
SITECORE MANAGEMENT SERVER
ITEMS
CONFIGURATION ITEMS
ENVIRONMENT
SERVER
SERVICES
CONFIGURATION
FILES
SOLUTION & MODULE FILES
CONFIGURATION FILES
GENERAL ROLE ENVIRONMENT
CONTENT DATABASE SERVER
Package Install
48. Initial Deployment
SITECORE DELIVERY SERVER
ENVIRONMENT
SERVER
SERVICES
CONFIGURATION
FILES
SOLUTION & MODULE FILES
CONFIGURATION FILES
GENERAL ROLE ENVIRONMENT
SITECORE MANAGEMENT SERVER
ITEMS
CONFIGURATION ITEMS
ENVIRONMENT
SERVER
SERVICES
CONFIGURATION
FILES
SOLUTION & MODULE FILES
CONFIGURATION FILES
GENERAL ROLE ENVIRONMENT
CONTENT DATABASE SERVER
ENVIRONMENT
SERVER
SERVICES
CONFIGURATION
SQL Server
SQL Security
ITEMS
CONTENT
Database
Restore
49. Initial Deployment
SITECORE DELIVERY SERVER
ENVIRONMENT
SERVER
SERVICES
CONFIGURATION
FILES
SOLUTION & MODULE FILES
CONFIGURATION FILES
GENERAL ROLE ENVIRONMENT
SITECORE MANAGEMENT SERVER
ITEMS
CONFIGURATION ITEMS
ENVIRONMENT
SERVER
SERVICES
CONFIGURATION
FILES
SOLUTION & MODULE FILES
CONFIGURATION FILES
GENERAL ROLE ENVIRONMENT
CONTENT DATABASE SERVER
ENVIRONMENT
SERVER
SERVICES
CONFIGURATION
ITEMS
CONTENT
In order to deploy rapidly
and consistently, you need
to control all components
across all servers
50. DEVELOPER MACHINE
DEVELOPER MACHINE
SERVERS
Sitecore Development and Release Process Example
DEPLOYMENT SERVER
ENVIRONMENT
REPOSITORY
RELEASE REPOSITORY
BUILD SERVER
DEVELOPER MACHINE
DEVELOPER MACHINE
DEVELOPER MACHINES
LOCAL
DATABASE
SERVER
VERSION CONTROL
SYSTEM
MODULE REPOSITORY
BACKUP REPOSITORY
51. PowerShell
Sitecore Development and Release Process Example
DEVELOPER MACHINE
DEVELOPER MACHINE
SERVERSDEPLOYMENT SERVER
ENVIRONMENT
REPOSITORY
RELEASE REPOSITORY
BUILD SERVER
DEVELOPER MACHINE
DEVELOPER MACHINE
DEVELOPER MACHINES
VERSION CONTROL
SYSTEM
MODULE REPOSITORY
BACKUP REPOSITORY
TEAM DEVELOPMENT
FOR SITECORE
SlowCheetah
Network
Share
Network
Share
SOLUTION MANIFEST
52. BACKUP REPOSITORYMODULE REPOSITORY
Tools and Frameworks
RELEASE REPOSITORY
DEVELOPMENT ENVIRONMENT DEPLOYMENT ENVIRONMENTBUILD ENVIRONMENT
ENVIRONMENT
REPOSITORY
VERSION CONTROL
SYSTEM
TEAM DEVELOPMENT
FOR SITECORE
Sitecore
UnicornSitecore
Instance
Manager
SlowCheetah
Sitecore
Instance
Manager
Network
Share
Network
Share
Network
Share
53. Consistency is key!
If you nail development automation and CI, deployment is easy!
Deployment is only part of the release management process
Other important disciplines:
• Release Management
• Versioning strategy
• Backup management
• Environment management
If you are not true to conventions, you will not be able to automate!
Summary: Release
We are all lazy gits! But this is not a bad thing…
Some of my most brilliant work has been done simply to avoid me having to repeat boring things again and again.
I think this is why we inherently all love the fact that DevOps
My name is…
The market changes and so will the requirements
Marketeers will always want something else or more
All marketing divisions will mature and need more tools and possibilities
We are not in the business of making turnkey solution and we are not in the business of setting up standard systems.
Everything we do is about customization and change.
The market is changing, and the customers expectations on what service you can deliver and the time to market is changing.
Meanwhile the enterprises are turning their marketing investments to larger platforms
Just because the platform is best-of-breed, the solution might not be
We are not in the business of making turnkey solution and we are not in the business of setting up standard systems.
Everything we do is about customization and change.
The market is changing, and the customers expectations on what service you can deliver and the time to market is changing.
Meanwhile the enterprises are turning their marketing investments to larger platforms
Just because the platform is best-of-breed, the solution might not be
For many years IT projects has been treated like construction projects. Start, Build, Deliver – nothing more.
Even agile methodology in SI’s and Agencies have typically been treated as a number of sprints ending with a release
The “Build and Release” culture is deeply rooted in the development community
“The only thing constant in life is change”
We know that the market is changing all the time
We know that the world of marketing and the tools and competencies are evolving
Why are we as developers often building like there is no tomorrow?
Why are many Sitecore implementation projects still acting like the up front requirements is eternal?
We need to make it possible for the platforms we build to change and evolve
We need to move from a project and delivery based approach to an agile and process based approach
We need to focus on the entire application lifecycle, and not just the build and delivery
Typical lifecycle
Whether waterfall or agile methodology
1. We all know that developing a single Sitecore solution on our own machine is typically very simple and easy. If only all processes in software development was as easy as that, right?
2. Once you start scaling to multiple developers, that requires conventions, tools and meticulous processes
3. Likewise, deploying to a single server can be a simple manual process, and there are tools in Sitecore and out there to help you
4. But once you get multiple environments and scaled setups, things like configuration management and recovery processes needs to described and planned
5. Continuous integration, unit testing and DevOps is on everybody's lips these days. In many of these processes and tasks, Sitecore will not particularly lend a hand, and you have to define the conventions and processes to make it work for you.
6. And once you bring in versioning and perhaps have dependencies to external parties integrating with your solution, things like branching and release management becomes important.
7. And if major releases are being developed and tested while you need to do patching and hotfixes on specific environments, we need to be able to recreate every version, including the associated versions of Sitecore, modules, content databases and so on. Which in other words requires dependency manager processes and conventions.
8. Finally, all this naturally needs to be covered in the agile process that you are all running with 2 week sprints. We cannot afford to waste time setting up test or development environments or got through painful minor upgrades. So we need all these processes to be fully automated and completely trustworthy.
Optimized Processes:
Focus on What Is Important.
Choosing the Right Tool for the Job.
Support Distributed and Simultaneous Teams.
Improved Quality
Decrease Chances of Manual Errors.
Make It Possible to Automate and Improve Testing.
Tracability: Reproduce and Recreate.
Greater Flexibility
Faster Time to Market
Predictability in the changes.
Faster upgrades, additions, substitutions and alterations.
We all love our power tools. Continuous Delivery, Continuous Integration and DevOps are the new shiny toys we all want to work with. We want to install those great pieces of software and watch them run. We all want unit testing because the cool guys says it what you should do.
Remember to always keep the eyes on the WHY and not the HOW. Make sure that the tools are built around the processes. If you do not implement the processes and conventions successfully, the tools will be useless.
And the key here is understanding: If the people you work with do not understand your processes or conventions or why they are needed, they are not the stupid ones! You have failed to explain it in the right manner.
(Maybe example of timesheets)
Function before Type
Lets look at an example of a typical deployment of Sitecore and investigate what is involved
In order to consistently
In order to consistently
Many processes in ALM
Conventions which works across are key
The work on culture and conventions never stops
Don’t be overly ambitious and connects with the last point:
Don’t do it because you think the tool or process is cool, do it because you have carefully considered why you want to do it. Thereby the business will buy in!