new continous delivery: tales from...
TRANSCRIPT
CONTINOUS DELIVERY: TALES FROM WINDOWSLAND
Rachel Laycock (@rachellaycock) ThoughtWorks!
Wednesday, 2 October 13
Johannesburg
Leeds
Wednesday, 2 October 13
Just use linux...
Wednesday, 2 October 13
Continuous Delivery
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Wednesday, 2 October 13
releasing frequently
John Allspaw: “Ops Metametrics” http://slidesha.re/dsSZIr
feedback from usersreduce risk of release
Wednesday, 2 October 13
releasing frequentlyfeedback from usersreduce risk of releasereal project progress
Wednesday, 2 October 13
CD is BIG!
Organisational Alignment
Release Management
Architecture Quality Assurance
Continuous Integration
Configuration Management
Data Management
Environments & Deployment
Wednesday, 2 October 13
• Build
• Deploy
• Provisioning Environments
We will talk about...
Wednesday, 2 October 13
Build and Deployment Pipeline
Here Be Dragons!
You are a pretty rubbish dragon slayer
Wednesday, 2 October 13
Build
Wednesday, 2 October 13
basic deployment pipeline
Artifact repository
Source code
Commit stage
CompileCommit tests
AssembleCode analysis
reportsbinariesmetadata
Acceptance stage
Configure environmentDeploy binaries
Smoke testAcceptance tests
Capacity stage
Configure environmentDeploy binaries
Smoke testRun capacity tests
UAT
Configure environmentDeploy binaries
Smoke test
Env & app
config
reportsmetadatabinaries
Production
Configure environmentDeploy binaries
Smoke test
Env & app
config
binariesreportsmetadata
Operationsperform
push-buttonreleases
TestersSelf-servicedeploymentsDevelopers
See code metricsand test failures
Version control
Commit
Wednesday, 2 October 13
Story time
Wednesday, 2 October 13
Team Build:
SCM:Server side merging & no local commits
difficult to adjust build step definitions
no pipeline support
A little story about TFS...
Wednesday, 2 October 13
Compile and unit test
XML == Yuk!
Wednesday, 2 October 13
PowerShell
PSake
Compile and unit test
Code == yay!
Wednesday, 2 October 13
Package
Wednesday, 2 October 13
Deployment
Provisioning boxes
Database migrations
deployments
Wednesday, 2 October 13
Build and Deployment Pipeline
Wednesday, 2 October 13
basic deployment pipeline
Artifact repository
Source code
Commit stage
CompileCommit tests
AssembleCode analysis
reportsbinariesmetadata
Acceptance stage
Configure environmentDeploy binaries
Smoke testAcceptance tests
Capacity stage
Configure environmentDeploy binaries
Smoke testRun capacity tests
UAT
Configure environmentDeploy binaries
Smoke test
Env & app
config
reportsmetadatabinaries
Production
Configure environmentDeploy binaries
Smoke test
Env & app
config
binariesreportsmetadata
Operationsperform
push-buttonreleases
TestersSelf-servicedeploymentsDevelopers
See code metricsand test failures
Version control
Deploy
Wednesday, 2 October 13
• New Kids on the Block!
• MSDeploy
• PowerShell
DeploymentXML == Yuk!
Code == yay!
Tools == yay!
Wednesday, 2 October 13
• cmd line - c’mon!
• One way to package to rule them all!
• So I have to install and configure this through the GUI?
• Package installs - where are you?
Deployment Pain
Wednesday, 2 October 13
• SQL Server & logic in your stored procedures
MOAR PAIN
Provisioning boxes
Database migrations
deployments
Wednesday, 2 October 13
Provision Environments
Provisioning boxes
Database migrations
deployments
Wednesday, 2 October 13
Snowflake serverWednesday, 2 October 13
Story time
Wednesday, 2 October 13
Build and Deployment Pipeline
Wednesday, 2 October 13
basic deployment pipeline
Artifact repository
Source code
Commit stage
CompileCommit tests
AssembleCode analysis
reportsbinariesmetadata
Acceptance stage
Configure environmentDeploy binaries
Smoke testAcceptance tests
Capacity stage
Configure environmentDeploy binaries
Smoke testRun capacity tests
UAT
Configure environmentDeploy binaries
Smoke test
Env & app
config
reportsmetadatabinaries
Production
Configure environmentDeploy binaries
Smoke test
Env & app
config
binariesreportsmetadata
Operationsperform
push-buttonreleases
TestersSelf-servicedeploymentsDevelopers
See code metricsand test failures
Version control
Provision
Environment
Wednesday, 2 October 13
Virtual Machine ImagesDevelopment
Visual StudioSQL Server.NET 4GIT
CI
Go.NET 4GIT
Prod-like
.NET 4SQL Server3rd Party software
Wednesday, 2 October 13
most real systems will be heterogeneous
great for creating production-like test envs, highly parallel testing
cloud is great for utility computing and scaling on demand
use virtualization with Puppet, Chef & PowerShell
virtualization
Wednesday, 2 October 13
Infrastructure as Code
Wednesday, 2 October 13
It looks like you are trying to configure
some servers...
• Proprietary Software
• Remoting• Windows Versions
• Registries
Infrastructure Pain
• Windows Updates
• ISO’s
• CostWednesday, 2 October 13
• Contribute to OpenSource ALT.NET projects
• Don’t be afraid of non-ms tools
• Leverage existing languages
• Just do it!
Now it’s your turn...
Wednesday, 2 October 13
• Maybe we can self select away from proprietary software...
• It can only get better...
• New tools all the time
• Figuring out a problem is the first step to fixing it
Happy endings?
Wednesday, 2 October 13
Questions?
Wednesday, 2 October 13
Resources
• Continuous Delivery, Dave Farley & Jez Humble
• Continuous Integration, Paul Duvall
• Beautiful Builds, Roy Osherove
• Release IT, Michael Nygard
Wednesday, 2 October 13