developer group - sitecore application lifecycle management
TRANSCRIPT
Presented by Thomas Eldblom // Senior Solution Architect, Sitecore AustraliaNovember 5, 2014
Sitecore Application Lifecycle Management.A Strategy for Optimizing the Complete Sitecore Application Development and Solution Management Lifecycle.
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
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
Layouts
Templates
Sublayouts
.NET code CSS & Design files
Settings in Sitecore
XSLT RenderingsConfigfiles
Content structure
The Release Reuse Equivalency PrincipleThe granule of reuse is the granule of release.
The Common Closure PrincipleClasses that change together, belong together.
The Common Reuse PrincipleClasses that aren’t reused together should not be grouped together.
Principles of Package Architecture
The Acyclic Dependencies PrincipleThe dependencies betwen packages must not form cycles.
The Stable Dependencies PrincipleDepend in the direction of stability.
The Stable Abstractions Principle Stable packages should be abstract packages.
Books to read
http://www.amazon.com/Agile-Principles-Patterns-Practices-C/dp/0131857258
Agile Principles, Patterns, and Practices in C#Robert C. Martin
http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882
Clean Code: A Handbook of Agile Software CraftsmanshipRobert C. Martin
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
Requirements
Design
DevelopmentQA & Test
Release
SETUP DEVELOPMENT ENVIRONMENT
MANAGE SOLUTION CONFIGURATION
MANAGE MODULE DEPENDENCIES
DEVELOP SOLUTION FILES
VERSION CONTROL AND BRANCHING
Bad version control strategy = Failure!
Version Control is the One Stop Shop for your entire solutionDevelopment environments are generated from version controlIntegration environments and testing originates from version controlReleases 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 ControlYOUR #1 PRIORITY
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 ManifestBecause you cannot version control everything!
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:
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
Requirements
Design
DevelopmentQA & Test
Release
CONTINUOUS BUILD
INTEGRATE SOLUTION AND DEPENDENCIES
SETUP TEST ENVIRONMENT
TEST BUILD
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 methodologiesAutomated Testing is not a goal
Understand the platform
Quick wins to good Quality
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.
Components of a Sitecore SolutionSITECORE INSTANCE
ITEMS
FILES
ENVIRONMENT
SERVER
SERVICES
CONFIGURATIONHardware, VM,
OS
Software, IIS, SQL Server…
Security, IIS configuration
…
Components of a Sitecore SolutionSITECORE INSTANCE
ITEMS
FILES
ENVIRONMENT
SERVER
SERVICES
CONFIGURATION
SITECORE INSTANCE
Components of a Sitecore Solution
ITEMS
ENVIRONMENT
SERVER
SERVICES
CONFIGURATION
FILES
CONFIGURATION FILES
SOLUTION MODULES.config
.dll, .aspx, .cshtml, .css,
database files
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
SITECORE INSTANCE
FILES
CONFIGURATION FILES
GENERAL ROLE ENVIRONMENT
Components of a Sitecore Solution
ITEMS
ENVIRONMENT
SERVER
SERVICES
CONFIGURATION
SOLUTION MODULES
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
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.
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
Requirements
Design
DevelopmentQA & Test
Release
MANAGE ENVIRONMENT SERVERS
MANAGE SITECORE CONTENT
CONTINUOUS DEPLOYS
INITIAL DEPLOYS
MANAGE ENVIRONMENT CONFIGURATION
RELEASE MANAGEMENT
BUILD RELEASE
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?
Sitecore Servers and Technologies
DELIVERY SERVER
MANAGEMENTSERVER
CONTENTDATABASESERVER
EXPERIENCEDATABASESERVER
Microsoft Windows Server
IIS
Microsoft SQL Server
SOLR
MongoDB
.NET
AGGREGATIONSERVER
PUBLISHINGSERVER
REPORTINGDATABASESERVER
SESSIONDATABASESERVER
Sitecore Server Roles Example
SITECORE DELIVERY SERVER SITECORE MANAGEMENT SERVER
CONTENT DATABASE SERVER
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
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
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
CONFIGURATIONSQL Server
SQL Security
ITEMS
CONTENT
Database Restore
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
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
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
BACKUP REPOSITORYMODULE REPOSITORY
Tools and Frameworks
RELEASE REPOSITORY
DEVELOPMENT ENVIRONMENT
DEPLOYMENT ENVIRONMENT
BUILD ENVIRONMENT
ENVIRONMENT REPOSITORY
VERSION CONTROL SYSTEM
TEAM DEVELOPMENT FOR SITECORE
SitecoreUnicornSitecore
Instance Manager
SlowCheetah
SitecoreInstance Manager
Network Share
Network Share
Network Share
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
ProcessesRequireme
nts
Design
DevelopmentQA & Test
Release
MANAGE ENVIRONMENT SERVERS
MANAGE SITECORE CONTENT
CONTINUOUS DEPLOYS
INITIAL DEPLOYS
MANAGE ENVIRONMENT CONFIGURATION
RELEASE MANAGEMENT
BUILD RELEASE
CONTINUOUS BUILD
INTEGRATE SOLUTION AND DEPENDENCIES
SETUP TEST ENVIRONMENT
TEST BUILD
SETUP DEVELOPMENT ENVIRONMENT
MANAGE SOLUTION CONFIGURATION
MANAGE MODULE DEPENDENCIES
DEVELOP SOLUTION FILES
VERSION CONTROL AND BRANCHING
Work on culture and conventions.
Start from your own maturity level.
Consider the why before the how.
Application Lifecycle Management is a process.
Learn and Grow with it.
Thomas [email protected]@teldblom