SlideShare a Scribd company logo
1 of 40
Download to read offline
Practical continuous
deployment
Who Am I?
• Steve Smith!
• An Atlassian for 7+ years!
• Original company sysadmin!
• Developer for last 4 years!
• Not a professional speaker
What I’ve been up to…
• Last 6 months converting our internal
systems to continuous delivery and
continuous deployment.
What I’ve been up to…
• Last 6 months converting our internal
systems to continuous delivery and
continuous deployment.!
• Why 6 months? Because of some
interesting organisational issues.
“Deployment”?
“Delivery”?
• Continuous integration is continuous,
automated build and test.!
• Continuous delivery is the next obvious
step; be continuously release-ready.!
• Continuous deployment is the final step,
the continuous delivery of software to
production.
“Deployment”?
“Delivery”?
• In practice there’s a continuous spectrum
of options, each organisation has
different needs and constraints.!
• Constant QA is the common theme.
Why Continuous
deployment?
• We want to release features, not “what
ever happens to be done”!
• Automation: Releasing is hard,
automation makes it repeatable!
• Remove organisational bottlenecks to
releases
Stakeholder benefits
• To customers: You’ll get your feature
faster!!
• To management: You’ll get results faster
and clearer progress.!
• To devs: No more death-marches, maddashes, clean-up after releases.!
• To admins: You know what change broke
the system!
So how do you actually
do it?
• Continuous deployment guides tend to
focus on the high-level philosophy!
• But how do you actually get a feature
from a customer request to your servers?
So how do you actually
do it?
• None of the following is Atlassian specific.!
• But Atlassian tools do have some cool
integrations.
Segue: Development
workflow
• Continuous deployment implies a clearer
development process.!
• You need to know what is going out when
you release, not a dump of the current
state.!
• Hence release by feature
tl;dr: Development
• Track your feature requests in a bug
tracker!
• Branch on each feature, automatically
test!
• Pull requests for code-review/merge!
• Automatic release to staging on each
merge!
• Promote from staging to production
Step 1: Track your
requests
• Each feature/update request should have
a unique ID.!
• This allows tracking the state of a feature
from request to deployment.!
• Bug-trackers are a good choice for this.
Step 2: Work on this
feature in a branch
• Create a branch for just this feature!
• Name it after the feature request!
• Jira/Stash integration will do this!
• The branch will be merged when
complete!
• You need a sane version control system!
• We use git, Mercurial is good too
Step 3: Automatically
test the branch
• Run a continuous integration tool that will
automatically run tests against the
branch.!
• Features may not be merged until all
tests are passing.!
• Stash has some features to support
this.
Step 4: Code review
• No code may be merged to the release
branch until reviewed by other members
of the team.!
• Team members have a responsibility to
ensure quality.
Step 4: Code review
Step 5: Merge and
release
• Once all reviews and tests are passed
them merge to release branch!
• At this point we have a separate Bamboo
plan that performs a full release.
Step 6: Deploy to
staging
• Allows testing of more advanced
interactions and against production
samples.!
• More testing can occur at this point,
including testing by humans.
Step 7: Release to
production
• Valid staging builds may be promoted up
to production.
Practical issue
• How do you actually get releases onto
your staging and production servers?!
• AKA “the last-mile problem”
Last mile
Last mile
• Puppet/chef are not appropriate!
• .. if timing is critical!
• .. if cross-host coordination required
Last mile
• Roll your own!
• Bamboo SSH plugin + bash scripting!
• Number of existing automation solutions!
• func, capistrano, SaltStack, Ansible,
mcollective, Fabric…
Last mile
• Bamboo agent per-node!
• SSH not required!
• Works for simple (single node) apps!
• Coordination is tricky
Last mile
• Agent-based frameworks!
• Powerful and flexible!
• Can parallelise deployments!
• Requires setup on all nodes!
• If you already have it setup then use it
Last mile
• SSH scripting!
• Requires management of SSH keys on
agent!
• Bamboo SSH plugin!
• Scripting (Bash, Python, Ruby, etc.)!
• Automation frameworks (Ansible,
SaltStack, Func, Fabric)
Last mile
• Our solution!
• Ansible for automation (explicit support
for load-balancer integration)!
• Minimal requirements, SSH+Python!
• Bamboo pulls Ansible directly from their
source repository!
• Ansible playbooks checking into git
Segue: “Continuous
downtime”?
• So if you’re doing all these releases, what
about uptime?!
• For public-facing service clustering/HA is
important.!
• Ideally you should be able to automate
cluster configuration as part of the
deployment
Practical issue
• How do you manage what has been
released, and to where?!
• How do you control who performs
deployments?
Bamboo deployment
environments
• The release build plan can be associated
with certain environments!
• Normal ones are dev, staging (QA) and
production
Bamboo deployment
environments
Bamboo deployment
environments
• Environment has tasks, like a build plan!
• Tasks perform the actual deployment!
• Environments have permissions, limiting
who may perform deployments!
• Generates releases, which are deployed!
• Has some nice integrations…
Bamboo deployment
release
Bamboo deployment
JIRA integration
Procedural issues
• What about SoX, PCI, SEC
requirements?!
• Who is allowed to do releases?!
• Who signs off?
Procedural issues
• Our solution - separate the infrastructure!
• Dedicated Bamboo server for business
software!
• Dedicated agents for building!
• Separate, dedicated agents for
deployment
Procedural issues
• Access controls!
• Build team/admins control the server!
• Business analysts define features!
• Devs code, review, merge and release!
• Features pushed to staging for BA
review!
• BAs can promote releases to production
Questions?
Steve Smith
@tarkasteve
ssmith@atlassian.com

More Related Content

What's hot

Atlassian Roadshow 2016 - DevOps Session
Atlassian Roadshow 2016 - DevOps SessionAtlassian Roadshow 2016 - DevOps Session
Atlassian Roadshow 2016 - DevOps SessionSourcesense
 
Jenkins2: How Jenkins 2 works and how to automate it
Jenkins2: How Jenkins 2 works and how to automate itJenkins2: How Jenkins 2 works and how to automate it
Jenkins2: How Jenkins 2 works and how to automate itCamilo Ribeiro
 
Dynamic bpm design by doing lightning talk
Dynamic bpm design by doing lightning talkDynamic bpm design by doing lightning talk
Dynamic bpm design by doing lightning talkITD Systems
 
Apply chat automation today - work smarter tomorrow
Apply chat automation today - work smarter tomorrowApply chat automation today - work smarter tomorrow
Apply chat automation today - work smarter tomorrowJaap Brasser
 
20161103 Serverless Italy Meetup
20161103   Serverless Italy Meetup20161103   Serverless Italy Meetup
20161103 Serverless Italy MeetupLuca Bianchi
 
Git Ready! Workflows
Git Ready! WorkflowsGit Ready! Workflows
Git Ready! WorkflowsAtlassian
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Hannes Lowette
 
I Don't Test Often ...
I Don't Test Often ...I Don't Test Often ...
I Don't Test Often ...Gareth Bowles
 
Android Continuous Integration and Automation - Enrique Lopez Manas, Sixt
Android Continuous Integration and Automation - Enrique Lopez Manas, SixtAndroid Continuous Integration and Automation - Enrique Lopez Manas, Sixt
Android Continuous Integration and Automation - Enrique Lopez Manas, SixtDroidConTLV
 
Secure your environment by automation
Secure your environment by automationSecure your environment by automation
Secure your environment by automationJaap Brasser
 
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...DevConFu
 
Continuous delivery of your legacy application
Continuous delivery of your legacy applicationContinuous delivery of your legacy application
Continuous delivery of your legacy applicationColdFusionConference
 
The Rounds Project: Growing from thousands to millions - Berry Ventura & Yoah...
The Rounds Project: Growing from thousands to millions - Berry Ventura & Yoah...The Rounds Project: Growing from thousands to millions - Berry Ventura & Yoah...
The Rounds Project: Growing from thousands to millions - Berry Ventura & Yoah...DroidConTLV
 
#ITsubbotnik Spring 2017: Andriy Filatov "Ансамбль солёных поваров: сравнивае...
#ITsubbotnik Spring 2017: Andriy Filatov "Ансамбль солёных поваров: сравнивае...#ITsubbotnik Spring 2017: Andriy Filatov "Ансамбль солёных поваров: сравнивае...
#ITsubbotnik Spring 2017: Andriy Filatov "Ансамбль солёных поваров: сравнивае...epamspb
 
Continuous integration & deployment
Continuous integration & deploymentContinuous integration & deployment
Continuous integration & deploymentAlan Harper
 
Validating latest changes with XCI
Validating latest changes with XCIValidating latest changes with XCI
Validating latest changes with XCIVictor Morales
 

What's hot (20)

Atlassian Roadshow 2016 - DevOps Session
Atlassian Roadshow 2016 - DevOps SessionAtlassian Roadshow 2016 - DevOps Session
Atlassian Roadshow 2016 - DevOps Session
 
Jenkins2: How Jenkins 2 works and how to automate it
Jenkins2: How Jenkins 2 works and how to automate itJenkins2: How Jenkins 2 works and how to automate it
Jenkins2: How Jenkins 2 works and how to automate it
 
Dynamic bpm design by doing lightning talk
Dynamic bpm design by doing lightning talkDynamic bpm design by doing lightning talk
Dynamic bpm design by doing lightning talk
 
Apply chat automation today - work smarter tomorrow
Apply chat automation today - work smarter tomorrowApply chat automation today - work smarter tomorrow
Apply chat automation today - work smarter tomorrow
 
20161103 Serverless Italy Meetup
20161103   Serverless Italy Meetup20161103   Serverless Italy Meetup
20161103 Serverless Italy Meetup
 
Git Ready! Workflows
Git Ready! WorkflowsGit Ready! Workflows
Git Ready! Workflows
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
 
I Don't Test Often ...
I Don't Test Often ...I Don't Test Often ...
I Don't Test Often ...
 
Android Continuous Integration and Automation - Enrique Lopez Manas, Sixt
Android Continuous Integration and Automation - Enrique Lopez Manas, SixtAndroid Continuous Integration and Automation - Enrique Lopez Manas, Sixt
Android Continuous Integration and Automation - Enrique Lopez Manas, Sixt
 
Secure your environment by automation
Secure your environment by automationSecure your environment by automation
Secure your environment by automation
 
Jenkins CI in Action
Jenkins CI in ActionJenkins CI in Action
Jenkins CI in Action
 
Git branching model
Git branching modelGit branching model
Git branching model
 
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
 
Continuous delivery of your legacy application
Continuous delivery of your legacy applicationContinuous delivery of your legacy application
Continuous delivery of your legacy application
 
The Rounds Project: Growing from thousands to millions - Berry Ventura & Yoah...
The Rounds Project: Growing from thousands to millions - Berry Ventura & Yoah...The Rounds Project: Growing from thousands to millions - Berry Ventura & Yoah...
The Rounds Project: Growing from thousands to millions - Berry Ventura & Yoah...
 
#ITsubbotnik Spring 2017: Andriy Filatov "Ансамбль солёных поваров: сравнивае...
#ITsubbotnik Spring 2017: Andriy Filatov "Ансамбль солёных поваров: сравнивае...#ITsubbotnik Spring 2017: Andriy Filatov "Ансамбль солёных поваров: сравнивае...
#ITsubbotnik Spring 2017: Andriy Filatov "Ансамбль солёных поваров: сравнивае...
 
JustLetMeCode-Final
JustLetMeCode-FinalJustLetMeCode-Final
JustLetMeCode-Final
 
Continuous integration & deployment
Continuous integration & deploymentContinuous integration & deployment
Continuous integration & deployment
 
Validating latest changes with XCI
Validating latest changes with XCIValidating latest changes with XCI
Validating latest changes with XCI
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 

Viewers also liked

Implementation of the Continuous Integration based on Atlassian Bamboo
 Implementation of the Continuous Integration based on Atlassian Bamboo Implementation of the Continuous Integration based on Atlassian Bamboo
Implementation of the Continuous Integration based on Atlassian BambooАнете Аннемария
 
Atlassian Bamboo Feature Overview
Atlassian Bamboo Feature OverviewAtlassian Bamboo Feature Overview
Atlassian Bamboo Feature OverviewJim Bethancourt
 
Continuous integration using atlassian bamboo
Continuous integration using atlassian bambooContinuous integration using atlassian bamboo
Continuous integration using atlassian bambooAlexander Masalov
 
DevOps Powered by Splunk
DevOps Powered by SplunkDevOps Powered by Splunk
DevOps Powered by SplunkSplunk
 
The Road to Continuous Delivery at Perforce
The Road to Continuous Delivery at PerforceThe Road to Continuous Delivery at Perforce
The Road to Continuous Delivery at PerforcePerforce
 
Bamboo Continuous Integration Server - Brief
Bamboo Continuous Integration Server - BriefBamboo Continuous Integration Server - Brief
Bamboo Continuous Integration Server - BriefEllen Feaheny
 
Continuous integration using Bamboo
Continuous integration using BambooContinuous integration using Bamboo
Continuous integration using BambooTudor Hornai
 
Continuous delivery with Jenkins Enterprise and Deployit
Continuous delivery with Jenkins Enterprise and DeployitContinuous delivery with Jenkins Enterprise and Deployit
Continuous delivery with Jenkins Enterprise and DeployitXebiaLabs
 
DevOps and Splunk
DevOps and SplunkDevOps and Splunk
DevOps and SplunkSplunk
 
Implementing blue-green deployment with Atlassian Bamboo
Implementing blue-green deployment with Atlassian BambooImplementing blue-green deployment with Atlassian Bamboo
Implementing blue-green deployment with Atlassian BambooDave Clark
 
Using Git and BitBucket
Using Git and BitBucketUsing Git and BitBucket
Using Git and BitBucketMedhat Dawoud
 
London Atlassian User Group - February 2014
London Atlassian User Group - February 2014London Atlassian User Group - February 2014
London Atlassian User Group - February 2014Steve Smith
 
Code Collaboration With Git & Stash (and Bamboo)
Code Collaboration With Git & Stash (and Bamboo)Code Collaboration With Git & Stash (and Bamboo)
Code Collaboration With Git & Stash (and Bamboo)Sven Peters
 
Revolutionizing Enterprise Software Development through Continuous Delivery &...
Revolutionizing Enterprise Software Development through Continuous Delivery &...Revolutionizing Enterprise Software Development through Continuous Delivery &...
Revolutionizing Enterprise Software Development through Continuous Delivery &...People10 Technosoft Private Limited
 
Continuous Deployment with Bamboo and Deployit
Continuous Deployment with Bamboo and DeployitContinuous Deployment with Bamboo and Deployit
Continuous Deployment with Bamboo and DeployitXebiaLabs
 
An introduction to Atlassian Bitbucket Pipelines
An introduction to Atlassian Bitbucket PipelinesAn introduction to Atlassian Bitbucket Pipelines
An introduction to Atlassian Bitbucket PipelinesDave Clark
 
DevOps 101 - IBM Impact 2014
DevOps 101 - IBM Impact 2014 DevOps 101 - IBM Impact 2014
DevOps 101 - IBM Impact 2014 Sanjeev Sharma
 
Example of recruitment ads
Example of recruitment adsExample of recruitment ads
Example of recruitment adsAmbreen Sualeh
 
Packer, where DevOps begins
Packer, where DevOps beginsPacker, where DevOps begins
Packer, where DevOps beginsJeff Hung
 

Viewers also liked (20)

Implementation of the Continuous Integration based on Atlassian Bamboo
 Implementation of the Continuous Integration based on Atlassian Bamboo Implementation of the Continuous Integration based on Atlassian Bamboo
Implementation of the Continuous Integration based on Atlassian Bamboo
 
Atlassian Bamboo Feature Overview
Atlassian Bamboo Feature OverviewAtlassian Bamboo Feature Overview
Atlassian Bamboo Feature Overview
 
Continuous integration using atlassian bamboo
Continuous integration using atlassian bambooContinuous integration using atlassian bamboo
Continuous integration using atlassian bamboo
 
DevOps Powered by Splunk
DevOps Powered by SplunkDevOps Powered by Splunk
DevOps Powered by Splunk
 
Developing a Lync Deployment Plan
Developing a Lync Deployment PlanDeveloping a Lync Deployment Plan
Developing a Lync Deployment Plan
 
The Road to Continuous Delivery at Perforce
The Road to Continuous Delivery at PerforceThe Road to Continuous Delivery at Perforce
The Road to Continuous Delivery at Perforce
 
Bamboo Continuous Integration Server - Brief
Bamboo Continuous Integration Server - BriefBamboo Continuous Integration Server - Brief
Bamboo Continuous Integration Server - Brief
 
Continuous integration using Bamboo
Continuous integration using BambooContinuous integration using Bamboo
Continuous integration using Bamboo
 
Continuous delivery with Jenkins Enterprise and Deployit
Continuous delivery with Jenkins Enterprise and DeployitContinuous delivery with Jenkins Enterprise and Deployit
Continuous delivery with Jenkins Enterprise and Deployit
 
DevOps and Splunk
DevOps and SplunkDevOps and Splunk
DevOps and Splunk
 
Implementing blue-green deployment with Atlassian Bamboo
Implementing blue-green deployment with Atlassian BambooImplementing blue-green deployment with Atlassian Bamboo
Implementing blue-green deployment with Atlassian Bamboo
 
Using Git and BitBucket
Using Git and BitBucketUsing Git and BitBucket
Using Git and BitBucket
 
London Atlassian User Group - February 2014
London Atlassian User Group - February 2014London Atlassian User Group - February 2014
London Atlassian User Group - February 2014
 
Code Collaboration With Git & Stash (and Bamboo)
Code Collaboration With Git & Stash (and Bamboo)Code Collaboration With Git & Stash (and Bamboo)
Code Collaboration With Git & Stash (and Bamboo)
 
Revolutionizing Enterprise Software Development through Continuous Delivery &...
Revolutionizing Enterprise Software Development through Continuous Delivery &...Revolutionizing Enterprise Software Development through Continuous Delivery &...
Revolutionizing Enterprise Software Development through Continuous Delivery &...
 
Continuous Deployment with Bamboo and Deployit
Continuous Deployment with Bamboo and DeployitContinuous Deployment with Bamboo and Deployit
Continuous Deployment with Bamboo and Deployit
 
An introduction to Atlassian Bitbucket Pipelines
An introduction to Atlassian Bitbucket PipelinesAn introduction to Atlassian Bitbucket Pipelines
An introduction to Atlassian Bitbucket Pipelines
 
DevOps 101 - IBM Impact 2014
DevOps 101 - IBM Impact 2014 DevOps 101 - IBM Impact 2014
DevOps 101 - IBM Impact 2014
 
Example of recruitment ads
Example of recruitment adsExample of recruitment ads
Example of recruitment ads
 
Packer, where DevOps begins
Packer, where DevOps beginsPacker, where DevOps begins
Packer, where DevOps begins
 

Similar to Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014

Continuous Integration
Continuous IntegrationContinuous Integration
Continuous IntegrationXPDays
 
Continuous Delivery with NetflixOSS
Continuous Delivery with NetflixOSSContinuous Delivery with NetflixOSS
Continuous Delivery with NetflixOSSDaniel Woods
 
Automate Everything! (No stress development/Tallinn)
Automate Everything! (No stress development/Tallinn)Automate Everything! (No stress development/Tallinn)
Automate Everything! (No stress development/Tallinn)Arto Santala
 
DevOps: Automate all the things
DevOps: Automate all the thingsDevOps: Automate all the things
DevOps: Automate all the thingsMat Mannion
 
Infrastructure as Code Patterns
Infrastructure as Code PatternsInfrastructure as Code Patterns
Infrastructure as Code PatternsKris Buytaert
 
stackconf 2022: Infrastructure Automation (anti) patterns
stackconf 2022: Infrastructure Automation (anti) patternsstackconf 2022: Infrastructure Automation (anti) patterns
stackconf 2022: Infrastructure Automation (anti) patternsNETWAYS
 
FUG Agile software engineering practices
FUG Agile software engineering practicesFUG Agile software engineering practices
FUG Agile software engineering practicesSerena Software
 
Continuous Updating with VersionEye at code.talks 2014
Continuous Updating with VersionEye at code.talks 2014Continuous Updating with VersionEye at code.talks 2014
Continuous Updating with VersionEye at code.talks 2014Robert Reiz
 
Continuous integration, delivery & deployment
Continuous integration,  delivery & deploymentContinuous integration,  delivery & deployment
Continuous integration, delivery & deploymentMartijn van der Kamp
 
Microservices: The Best Practices
Microservices: The Best PracticesMicroservices: The Best Practices
Microservices: The Best PracticesPavel Mička
 
Building High Quality Android Applications
Building High Quality Android ApplicationsBuilding High Quality Android Applications
Building High Quality Android ApplicationsLeif Janzik
 
Expose Yourself! How to Leverage Plugin Extensibility to Delight your Users, ...
Expose Yourself! How to Leverage Plugin Extensibility to Delight your Users, ...Expose Yourself! How to Leverage Plugin Extensibility to Delight your Users, ...
Expose Yourself! How to Leverage Plugin Extensibility to Delight your Users, ...Atlassian
 
BOSE - Josh Steckler - Automating Automation: Build environments, on-demand
BOSE - Josh Steckler - Automating Automation: Build environments, on-demandBOSE - Josh Steckler - Automating Automation: Build environments, on-demand
BOSE - Josh Steckler - Automating Automation: Build environments, on-demandDevOps Enterprise Summit
 
Why your company loves to welcome change but sucks at accommodating it
Why your company loves to welcome change but sucks at accommodating itWhy your company loves to welcome change but sucks at accommodating it
Why your company loves to welcome change but sucks at accommodating itFarooq Ali
 
Jose Luis Soria - XP2014 - Designing a Release Pipeline
Jose Luis Soria - XP2014 - Designing a Release PipelineJose Luis Soria - XP2014 - Designing a Release Pipeline
Jose Luis Soria - XP2014 - Designing a Release PipelineJose Luis Soria
 
I don't always test...but when I do I test in production - Gareth Bowles
I don't always test...but when I do I test in production - Gareth BowlesI don't always test...but when I do I test in production - Gareth Bowles
I don't always test...but when I do I test in production - Gareth BowlesQA or the Highway
 
Continuous Delivery: releasing Better and Faster at Dashlane
Continuous Delivery: releasing Better and Faster at DashlaneContinuous Delivery: releasing Better and Faster at Dashlane
Continuous Delivery: releasing Better and Faster at DashlaneDashlane
 
Testing API's: Tools & Tips & Tricks (Oh My!)
Testing API's: Tools & Tips & Tricks (Oh My!)Testing API's: Tools & Tips & Tricks (Oh My!)
Testing API's: Tools & Tips & Tricks (Oh My!)Ford Prior
 

Similar to Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014 (20)

Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Continuous Delivery with NetflixOSS
Continuous Delivery with NetflixOSSContinuous Delivery with NetflixOSS
Continuous Delivery with NetflixOSS
 
Automate Everything! (No stress development/Tallinn)
Automate Everything! (No stress development/Tallinn)Automate Everything! (No stress development/Tallinn)
Automate Everything! (No stress development/Tallinn)
 
DevOps: Automate all the things
DevOps: Automate all the thingsDevOps: Automate all the things
DevOps: Automate all the things
 
Infrastructure as Code Patterns
Infrastructure as Code PatternsInfrastructure as Code Patterns
Infrastructure as Code Patterns
 
stackconf 2022: Infrastructure Automation (anti) patterns
stackconf 2022: Infrastructure Automation (anti) patternsstackconf 2022: Infrastructure Automation (anti) patterns
stackconf 2022: Infrastructure Automation (anti) patterns
 
FUG Agile software engineering practices
FUG Agile software engineering practicesFUG Agile software engineering practices
FUG Agile software engineering practices
 
Codemgmt
CodemgmtCodemgmt
Codemgmt
 
Continuous Updating with VersionEye at code.talks 2014
Continuous Updating with VersionEye at code.talks 2014Continuous Updating with VersionEye at code.talks 2014
Continuous Updating with VersionEye at code.talks 2014
 
Continuous integration, delivery & deployment
Continuous integration,  delivery & deploymentContinuous integration,  delivery & deployment
Continuous integration, delivery & deployment
 
Microservices: The Best Practices
Microservices: The Best PracticesMicroservices: The Best Practices
Microservices: The Best Practices
 
Building High Quality Android Applications
Building High Quality Android ApplicationsBuilding High Quality Android Applications
Building High Quality Android Applications
 
Expose Yourself! How to Leverage Plugin Extensibility to Delight your Users, ...
Expose Yourself! How to Leverage Plugin Extensibility to Delight your Users, ...Expose Yourself! How to Leverage Plugin Extensibility to Delight your Users, ...
Expose Yourself! How to Leverage Plugin Extensibility to Delight your Users, ...
 
BOSE - Josh Steckler - Automating Automation: Build environments, on-demand
BOSE - Josh Steckler - Automating Automation: Build environments, on-demandBOSE - Josh Steckler - Automating Automation: Build environments, on-demand
BOSE - Josh Steckler - Automating Automation: Build environments, on-demand
 
Why your company loves to welcome change but sucks at accommodating it
Why your company loves to welcome change but sucks at accommodating itWhy your company loves to welcome change but sucks at accommodating it
Why your company loves to welcome change but sucks at accommodating it
 
Jose Luis Soria - XP2014 - Designing a Release Pipeline
Jose Luis Soria - XP2014 - Designing a Release PipelineJose Luis Soria - XP2014 - Designing a Release Pipeline
Jose Luis Soria - XP2014 - Designing a Release Pipeline
 
I don't always test...but when I do I test in production - Gareth Bowles
I don't always test...but when I do I test in production - Gareth BowlesI don't always test...but when I do I test in production - Gareth Bowles
I don't always test...but when I do I test in production - Gareth Bowles
 
Git - A soft introduction
Git - A soft introductionGit - A soft introduction
Git - A soft introduction
 
Continuous Delivery: releasing Better and Faster at Dashlane
Continuous Delivery: releasing Better and Faster at DashlaneContinuous Delivery: releasing Better and Faster at Dashlane
Continuous Delivery: releasing Better and Faster at Dashlane
 
Testing API's: Tools & Tips & Tricks (Oh My!)
Testing API's: Tools & Tips & Tricks (Oh My!)Testing API's: Tools & Tips & Tricks (Oh My!)
Testing API's: Tools & Tips & Tricks (Oh My!)
 

More from Matthew Cobby

Project oz - using Jira to manage a move from the UK to Australia
Project oz - using Jira to manage a move from the UK to AustraliaProject oz - using Jira to manage a move from the UK to Australia
Project oz - using Jira to manage a move from the UK to AustraliaMatthew Cobby
 
London Atlassian User Group Keynote - June/July 2014
London Atlassian User Group Keynote - June/July 2014London Atlassian User Group Keynote - June/July 2014
London Atlassian User Group Keynote - June/July 2014Matthew Cobby
 
Agile in distributed teams - London Atlassian User Group
Agile in distributed teams - London Atlassian User GroupAgile in distributed teams - London Atlassian User Group
Agile in distributed teams - London Atlassian User GroupMatthew Cobby
 
Micro Talk - 60s timer
Micro Talk - 60s timerMicro Talk - 60s timer
Micro Talk - 60s timerMatthew Cobby
 
AUG Micro talks- London Atlassian User Group
AUG Micro talks- London Atlassian User GroupAUG Micro talks- London Atlassian User Group
AUG Micro talks- London Atlassian User GroupMatthew Cobby
 
Advanced Agile Workflow - Dione Technology
Advanced Agile Workflow - Dione TechnologyAdvanced Agile Workflow - Dione Technology
Advanced Agile Workflow - Dione TechnologyMatthew Cobby
 
Atlassian Tools in Selfridges
Atlassian Tools in SelfridgesAtlassian Tools in Selfridges
Atlassian Tools in SelfridgesMatthew Cobby
 
Deploying atlassian tools in the enterprise - Dione Technology
Deploying atlassian tools in the enterprise - Dione TechnologyDeploying atlassian tools in the enterprise - Dione Technology
Deploying atlassian tools in the enterprise - Dione TechnologyMatthew Cobby
 
6 Updates in Collaboration @ Atlassian
6 Updates in Collaboration @ Atlassian6 Updates in Collaboration @ Atlassian
6 Updates in Collaboration @ AtlassianMatthew Cobby
 
Atlassian Update - London AUG Oct 2013
Atlassian Update - London AUG Oct 2013Atlassian Update - London AUG Oct 2013
Atlassian Update - London AUG Oct 2013Matthew Cobby
 
Introduction to Confluence Blueprints
Introduction to Confluence BlueprintsIntroduction to Confluence Blueprints
Introduction to Confluence BlueprintsMatthew Cobby
 
London AUG - Intro 9 July 2013
London AUG - Intro 9 July 2013London AUG - Intro 9 July 2013
London AUG - Intro 9 July 2013Matthew Cobby
 
Git: enterprise adoption challenges
Git: enterprise adoption challengesGit: enterprise adoption challenges
Git: enterprise adoption challengesMatthew Cobby
 
From 25 - 2500 users: Experiences from an Atlassian rollout
From 25 - 2500 users: Experiences from an Atlassian rolloutFrom 25 - 2500 users: Experiences from an Atlassian rollout
From 25 - 2500 users: Experiences from an Atlassian rolloutMatthew Cobby
 

More from Matthew Cobby (14)

Project oz - using Jira to manage a move from the UK to Australia
Project oz - using Jira to manage a move from the UK to AustraliaProject oz - using Jira to manage a move from the UK to Australia
Project oz - using Jira to manage a move from the UK to Australia
 
London Atlassian User Group Keynote - June/July 2014
London Atlassian User Group Keynote - June/July 2014London Atlassian User Group Keynote - June/July 2014
London Atlassian User Group Keynote - June/July 2014
 
Agile in distributed teams - London Atlassian User Group
Agile in distributed teams - London Atlassian User GroupAgile in distributed teams - London Atlassian User Group
Agile in distributed teams - London Atlassian User Group
 
Micro Talk - 60s timer
Micro Talk - 60s timerMicro Talk - 60s timer
Micro Talk - 60s timer
 
AUG Micro talks- London Atlassian User Group
AUG Micro talks- London Atlassian User GroupAUG Micro talks- London Atlassian User Group
AUG Micro talks- London Atlassian User Group
 
Advanced Agile Workflow - Dione Technology
Advanced Agile Workflow - Dione TechnologyAdvanced Agile Workflow - Dione Technology
Advanced Agile Workflow - Dione Technology
 
Atlassian Tools in Selfridges
Atlassian Tools in SelfridgesAtlassian Tools in Selfridges
Atlassian Tools in Selfridges
 
Deploying atlassian tools in the enterprise - Dione Technology
Deploying atlassian tools in the enterprise - Dione TechnologyDeploying atlassian tools in the enterprise - Dione Technology
Deploying atlassian tools in the enterprise - Dione Technology
 
6 Updates in Collaboration @ Atlassian
6 Updates in Collaboration @ Atlassian6 Updates in Collaboration @ Atlassian
6 Updates in Collaboration @ Atlassian
 
Atlassian Update - London AUG Oct 2013
Atlassian Update - London AUG Oct 2013Atlassian Update - London AUG Oct 2013
Atlassian Update - London AUG Oct 2013
 
Introduction to Confluence Blueprints
Introduction to Confluence BlueprintsIntroduction to Confluence Blueprints
Introduction to Confluence Blueprints
 
London AUG - Intro 9 July 2013
London AUG - Intro 9 July 2013London AUG - Intro 9 July 2013
London AUG - Intro 9 July 2013
 
Git: enterprise adoption challenges
Git: enterprise adoption challengesGit: enterprise adoption challenges
Git: enterprise adoption challenges
 
From 25 - 2500 users: Experiences from an Atlassian rollout
From 25 - 2500 users: Experiences from an Atlassian rolloutFrom 25 - 2500 users: Experiences from an Atlassian rollout
From 25 - 2500 users: Experiences from an Atlassian rollout
 

Recently uploaded

Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 

Recently uploaded (20)

Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 

Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014

  • 2. Who Am I? • Steve Smith! • An Atlassian for 7+ years! • Original company sysadmin! • Developer for last 4 years! • Not a professional speaker
  • 3. What I’ve been up to… • Last 6 months converting our internal systems to continuous delivery and continuous deployment.
  • 4. What I’ve been up to… • Last 6 months converting our internal systems to continuous delivery and continuous deployment.! • Why 6 months? Because of some interesting organisational issues.
  • 5. “Deployment”? “Delivery”? • Continuous integration is continuous, automated build and test.! • Continuous delivery is the next obvious step; be continuously release-ready.! • Continuous deployment is the final step, the continuous delivery of software to production.
  • 6. “Deployment”? “Delivery”? • In practice there’s a continuous spectrum of options, each organisation has different needs and constraints.! • Constant QA is the common theme.
  • 7. Why Continuous deployment? • We want to release features, not “what ever happens to be done”! • Automation: Releasing is hard, automation makes it repeatable! • Remove organisational bottlenecks to releases
  • 8. Stakeholder benefits • To customers: You’ll get your feature faster!! • To management: You’ll get results faster and clearer progress.! • To devs: No more death-marches, maddashes, clean-up after releases.! • To admins: You know what change broke the system!
  • 9. So how do you actually do it? • Continuous deployment guides tend to focus on the high-level philosophy! • But how do you actually get a feature from a customer request to your servers?
  • 10. So how do you actually do it? • None of the following is Atlassian specific.! • But Atlassian tools do have some cool integrations.
  • 11. Segue: Development workflow • Continuous deployment implies a clearer development process.! • You need to know what is going out when you release, not a dump of the current state.! • Hence release by feature
  • 12. tl;dr: Development • Track your feature requests in a bug tracker! • Branch on each feature, automatically test! • Pull requests for code-review/merge! • Automatic release to staging on each merge! • Promote from staging to production
  • 13. Step 1: Track your requests • Each feature/update request should have a unique ID.! • This allows tracking the state of a feature from request to deployment.! • Bug-trackers are a good choice for this.
  • 14. Step 2: Work on this feature in a branch • Create a branch for just this feature! • Name it after the feature request! • Jira/Stash integration will do this! • The branch will be merged when complete! • You need a sane version control system! • We use git, Mercurial is good too
  • 15. Step 3: Automatically test the branch • Run a continuous integration tool that will automatically run tests against the branch.! • Features may not be merged until all tests are passing.! • Stash has some features to support this.
  • 16. Step 4: Code review • No code may be merged to the release branch until reviewed by other members of the team.! • Team members have a responsibility to ensure quality.
  • 17. Step 4: Code review
  • 18. Step 5: Merge and release • Once all reviews and tests are passed them merge to release branch! • At this point we have a separate Bamboo plan that performs a full release.
  • 19. Step 6: Deploy to staging • Allows testing of more advanced interactions and against production samples.! • More testing can occur at this point, including testing by humans.
  • 20. Step 7: Release to production • Valid staging builds may be promoted up to production.
  • 21. Practical issue • How do you actually get releases onto your staging and production servers?! • AKA “the last-mile problem”
  • 23. Last mile • Puppet/chef are not appropriate! • .. if timing is critical! • .. if cross-host coordination required
  • 24. Last mile • Roll your own! • Bamboo SSH plugin + bash scripting! • Number of existing automation solutions! • func, capistrano, SaltStack, Ansible, mcollective, Fabric…
  • 25. Last mile • Bamboo agent per-node! • SSH not required! • Works for simple (single node) apps! • Coordination is tricky
  • 26. Last mile • Agent-based frameworks! • Powerful and flexible! • Can parallelise deployments! • Requires setup on all nodes! • If you already have it setup then use it
  • 27. Last mile • SSH scripting! • Requires management of SSH keys on agent! • Bamboo SSH plugin! • Scripting (Bash, Python, Ruby, etc.)! • Automation frameworks (Ansible, SaltStack, Func, Fabric)
  • 28. Last mile • Our solution! • Ansible for automation (explicit support for load-balancer integration)! • Minimal requirements, SSH+Python! • Bamboo pulls Ansible directly from their source repository! • Ansible playbooks checking into git
  • 29. Segue: “Continuous downtime”? • So if you’re doing all these releases, what about uptime?! • For public-facing service clustering/HA is important.! • Ideally you should be able to automate cluster configuration as part of the deployment
  • 30. Practical issue • How do you manage what has been released, and to where?! • How do you control who performs deployments?
  • 31. Bamboo deployment environments • The release build plan can be associated with certain environments! • Normal ones are dev, staging (QA) and production
  • 33. Bamboo deployment environments • Environment has tasks, like a build plan! • Tasks perform the actual deployment! • Environments have permissions, limiting who may perform deployments! • Generates releases, which are deployed! • Has some nice integrations…
  • 36. Procedural issues • What about SoX, PCI, SEC requirements?! • Who is allowed to do releases?! • Who signs off?
  • 37. Procedural issues • Our solution - separate the infrastructure! • Dedicated Bamboo server for business software! • Dedicated agents for building! • Separate, dedicated agents for deployment
  • 38. Procedural issues • Access controls! • Build team/admins control the server! • Business analysts define features! • Devs code, review, merge and release! • Features pushed to staging for BA review! • BAs can promote releases to production