developer group - sitecore application lifecycle management

58
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.

Upload: thomas-eldblom

Post on 15-Aug-2015

44 views

Category:

Documents


1 download

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.

François de la Rochefoucauld (1613-1680)

“The Only Thing Constant in Life is Change”

Delivery vs. Evolution Focused Approach

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

And remember:

It’s Not About The Tools!

IT’S ALL ABOUT PROCESSES!

AgendaRequireme

nts

Design

DevelopmentQA & Test

Release

11

Design and Architecture

SOLID Principles

http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod

Layouts

Templates

Sublayouts

.NET code CSS & Design files

Settings in Sitecore

XSLT RenderingsConfigfiles

Content structure

Building Maintainable Solutions

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

22

Development

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

28

QA & Test

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.

Reflection: What is Sitecore really?

Components of a Sitecore SolutionSITECORE INSTANCE

ITEMS

FILES

ENVIRONMENT

Components of a Sitecore SolutionSITECORE INSTANCE

ITEMS

FILES

ENVIRONMENT

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

43

Release

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?

Reflection: What is Sitecore really?

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

57

Final Comments

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

How Do You Do Sitecore?

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