SlideShare una empresa de Scribd logo
1 de 40
Descargar para leer sin conexión
Practical continuous
deployment
Who Am I?
• Steve Smith!
• An Atlassian for 7+ years!
• Original company sysadmin!
• Developer for last 4 years!
• Now working out of Amsterdam!
• Not a professional speaker
What I’ve been up to…
• Last 6 months converting our order
systems to high-availability and
continuous deployment.
What I’ve been up to…
• Last 6 months converting our order
systems to high-availability and
continuous deployment.!
• Why 6 months? Because the concept is
straightforward, but it’s implications affect
a lot of your organisation.
“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”?
• Constant QA is the common theme.!
• In practice there’s a continuous spectrum
of options, each organisation has
different needs and constraints.!
• But if you trust your testing and process
you can adopt the level appropriate for
you.
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 requested
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 which 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?
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.1: Stash testing
integration
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.
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
Last mile
Practical issue
• How do you actually get releases onto
your staging and production servers?!
• AKA “the last-mile problem”
tl;dr: Last mile
• Puppet/Chef are not appropriate!
• For simple/single-node applications you
can use a Bamboo agent directly!
• For more complex setups use an
automation tool
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 checked into git
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
• Where’s the oversight in all this?!
• 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
http://www.slideshare.net/tarkasteve/

Más contenido relacionado

La actualidad más candente

Crossing the Continuous Delivery Chasm - J. Paul Reed
Crossing the Continuous Delivery Chasm - J. Paul ReedCrossing the Continuous Delivery Chasm - J. Paul Reed
Crossing the Continuous Delivery Chasm - J. Paul Reed
Atlassian
 
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
ITD Systems
 

La actualidad más candente (20)

A Day in the Life of a HipChat Developer
A Day in the Life of a HipChat DeveloperA Day in the Life of a HipChat Developer
A Day in the Life of a HipChat Developer
 
Principles and Practices in Continuous Deployment at Etsy
Principles and Practices in Continuous Deployment at EtsyPrinciples and Practices in Continuous Deployment at Etsy
Principles and Practices in Continuous Deployment at Etsy
 
Crossing the Continuous Delivery Chasm - J. Paul Reed
Crossing the Continuous Delivery Chasm - J. Paul ReedCrossing the Continuous Delivery Chasm - J. Paul Reed
Crossing the Continuous Delivery Chasm - J. Paul Reed
 
Git with t for teams
Git with t for teamsGit with t for teams
Git with t for teams
 
Enterprise Workflows When You Aren't Enterprise
Enterprise Workflows When You Aren't EnterpriseEnterprise Workflows When You Aren't Enterprise
Enterprise Workflows When You Aren't Enterprise
 
Scrum Control or Kanban Agility? You Can Have both, Using Metrics
Scrum Control or Kanban Agility? You Can Have both, Using MetricsScrum Control or Kanban Agility? You Can Have both, Using Metrics
Scrum Control or Kanban Agility? You Can Have both, Using Metrics
 
Continuous Integration, the minimum viable product
Continuous Integration, the minimum viable productContinuous Integration, the minimum viable product
Continuous Integration, the minimum viable product
 
Step away from that knife!
Step away from that knife!Step away from that knife!
Step away from that knife!
 
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as CodeConfoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
 
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
 
Git Branching for Agile Teams
Git Branching for Agile TeamsGit Branching for Agile Teams
Git Branching for Agile Teams
 
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
 
Bitbucket Pipelines: Serverless CI/CD That Will Save Your Life
Bitbucket Pipelines: Serverless CI/CD That Will Save Your LifeBitbucket Pipelines: Serverless CI/CD That Will Save Your Life
Bitbucket Pipelines: Serverless CI/CD That Will Save Your Life
 
Continuous Integration, Build Pipelines and Continuous Deployment
Continuous Integration, Build Pipelines and Continuous DeploymentContinuous Integration, Build Pipelines and Continuous Deployment
Continuous Integration, Build Pipelines and Continuous Deployment
 
10 Deployments a day - A brief on extreme release protocols
10 Deployments a day - A brief on extreme release protocols10 Deployments a day - A brief on extreme release protocols
10 Deployments a day - A brief on extreme release protocols
 
Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...
Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...
Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...
 
Git Branching for Agile Teams
Git Branching for Agile Teams Git Branching for Agile Teams
Git Branching for Agile Teams
 
Continuous Delivery with TFS msbuild msdeploy
Continuous Delivery with TFS msbuild msdeployContinuous Delivery with TFS msbuild msdeploy
Continuous Delivery with TFS msbuild msdeploy
 
An almost complete continuous delivery pipeline including configuration manag...
An almost complete continuous delivery pipeline including configuration manag...An almost complete continuous delivery pipeline including configuration manag...
An almost complete continuous delivery pipeline including configuration manag...
 
Git Ready! Workflows
Git Ready! WorkflowsGit Ready! Workflows
Git Ready! Workflows
 

Destacado

Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014
Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014
Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014
Matthew Cobby
 
How to build a proper software staging environment for testing
How to build a proper software staging environment for testing How to build a proper software staging environment for testing
How to build a proper software staging environment for testing
TestCampRO
 
Next Step for Virtualization: Pre-production Testing
Next Step for Virtualization: Pre-production TestingNext Step for Virtualization: Pre-production Testing
Next Step for Virtualization: Pre-production Testing
stacksafe
 
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
 

Destacado (20)

DeveloperWeek 2015: A Practical Introduction to Docker
DeveloperWeek 2015: A Practical Introduction to DockerDeveloperWeek 2015: A Practical Introduction to Docker
DeveloperWeek 2015: A Practical Introduction to Docker
 
Knowledge is Power: Getting out of trouble by understanding Git
Knowledge is Power: Getting out of trouble by understanding GitKnowledge is Power: Getting out of trouble by understanding Git
Knowledge is Power: Getting out of trouble by understanding Git
 
Bamboo Hands on training 2016
Bamboo Hands on training 2016Bamboo Hands on training 2016
Bamboo Hands on training 2016
 
Is your code Toggled?!? By Devi Sridharan & Siddhartha Deshpande
Is your code Toggled?!? By Devi Sridharan & Siddhartha DeshpandeIs your code Toggled?!? By Devi Sridharan & Siddhartha Deshpande
Is your code Toggled?!? By Devi Sridharan & Siddhartha Deshpande
 
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
 
CI
CICI
CI
 
03 - Continuous Integration
03 - Continuous Integration03 - Continuous Integration
03 - Continuous Integration
 
Continous Integration: A Case Study
Continous Integration: A Case StudyContinous Integration: A Case Study
Continous Integration: A Case Study
 
Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014
Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014
Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014
 
How to build a proper software staging environment for testing
How to build a proper software staging environment for testing How to build a proper software staging environment for testing
How to build a proper software staging environment for testing
 
Next Step for Virtualization: Pre-production Testing
Next Step for Virtualization: Pre-production TestingNext Step for Virtualization: Pre-production Testing
Next Step for Virtualization: Pre-production Testing
 
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)
 
Understanding git: Voxxed Vienna 2016
Understanding git: Voxxed Vienna 2016Understanding git: Voxxed Vienna 2016
Understanding git: Voxxed Vienna 2016
 
Bodwell High School Summer 2015 Awards
Bodwell High School Summer 2015 AwardsBodwell High School Summer 2015 Awards
Bodwell High School Summer 2015 Awards
 
The 2011 Best Recruiter Honor Roll
The 2011 Best Recruiter Honor RollThe 2011 Best Recruiter Honor Roll
The 2011 Best Recruiter Honor Roll
 
Leadership awards 2013
Leadership awards 2013Leadership awards 2013
Leadership awards 2013
 
Webster County Veteran Honor Roll
Webster County Veteran Honor RollWebster County Veteran Honor Roll
Webster County Veteran Honor Roll
 
Bamboo
BambooBamboo
Bamboo
 
2015 Post-Secondary Statistics
2015 Post-Secondary Statistics2015 Post-Secondary Statistics
2015 Post-Secondary Statistics
 

Similar a London Atlassian User Group - February 2014

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
QA or the Highway
 
Continuous Integration In A PHP World
Continuous Integration In A PHP WorldContinuous Integration In A PHP World
Continuous Integration In A PHP World
Idaf_1er
 

Similar a London Atlassian User Group - February 2014 (20)

Continuous Delivery with NetflixOSS
Continuous Delivery with NetflixOSSContinuous Delivery with NetflixOSS
Continuous Delivery with NetflixOSS
 
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!)
 
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 ...
 
Automate Everything! (No stress development/Tallinn)
Automate Everything! (No stress development/Tallinn)Automate Everything! (No stress development/Tallinn)
Automate Everything! (No stress development/Tallinn)
 
Continuous integration, delivery & deployment
Continuous integration,  delivery & deploymentContinuous integration,  delivery & deployment
Continuous integration, delivery & deployment
 
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
 
DevSecCon Asia 2017 - Abhay Bhargav: Building an Application Vulnerability To...
DevSecCon Asia 2017 - Abhay Bhargav: Building an Application Vulnerability To...DevSecCon Asia 2017 - Abhay Bhargav: Building an Application Vulnerability To...
DevSecCon Asia 2017 - Abhay Bhargav: Building an Application Vulnerability To...
 
I Don't Test Often ...
I Don't Test Often ...I Don't Test Often ...
I Don't Test Often ...
 
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
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Road to Continuous Delivery - Wix.com
Road to Continuous Delivery - Wix.comRoad to Continuous Delivery - Wix.com
Road to Continuous Delivery - Wix.com
 
#ESPC18 How to do #devops with the #SharePoint Framework and why it matters?
#ESPC18 How to do #devops with the #SharePoint Framework and why it matters?#ESPC18 How to do #devops with the #SharePoint Framework and why it matters?
#ESPC18 How to do #devops with the #SharePoint Framework and why it matters?
 
So you-want-to-go-faster
So you-want-to-go-fasterSo you-want-to-go-faster
So you-want-to-go-faster
 
DevOps: Automate all the things
DevOps: Automate all the thingsDevOps: Automate all the things
DevOps: Automate all the things
 
The Key Components of Adopting CI The OpenStack Way
The Key Components of Adopting CI The OpenStack WayThe Key Components of Adopting CI The OpenStack Way
The Key Components of Adopting CI The OpenStack Way
 
Beyond TDD: Enabling Your Team to Continuously Deliver Software
Beyond TDD: Enabling Your Team to Continuously Deliver SoftwareBeyond TDD: Enabling Your Team to Continuously Deliver Software
Beyond TDD: Enabling Your Team to Continuously Deliver 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 2014
 
Continuous Integration In A PHP World
Continuous Integration In A PHP WorldContinuous Integration In A PHP World
Continuous Integration In A PHP World
 
Building High Quality Android Applications
Building High Quality Android ApplicationsBuilding High Quality Android Applications
Building High Quality Android Applications
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to Go
 

Más de Steve Smith

Más de Steve Smith (12)

Continuous talk, AnsibleFest London 2016
Continuous talk, AnsibleFest London 2016Continuous talk, AnsibleFest London 2016
Continuous talk, AnsibleFest London 2016
 
Understanding Git - GOTO London 2015
Understanding Git - GOTO London 2015Understanding Git - GOTO London 2015
Understanding Git - GOTO London 2015
 
Dockercon2015 bamboo
Dockercon2015 bambooDockercon2015 bamboo
Dockercon2015 bamboo
 
Practical Continuous Deployment, Devoxx UK 2015
Practical Continuous Deployment, Devoxx UK 2015Practical Continuous Deployment, Devoxx UK 2015
Practical Continuous Deployment, Devoxx UK 2015
 
AtlasCamp 2015 Docker continuous integration training
AtlasCamp 2015 Docker continuous integration trainingAtlasCamp 2015 Docker continuous integration training
AtlasCamp 2015 Docker continuous integration training
 
Accessgrid XMPP rationale
Accessgrid XMPP rationaleAccessgrid XMPP rationale
Accessgrid XMPP rationale
 
Accessgrid XMPP implementation
Accessgrid XMPP implementationAccessgrid XMPP implementation
Accessgrid XMPP implementation
 
Vislab presentation
Vislab presentationVislab presentation
Vislab presentation
 
APAC-05 XMPP AccessGrid presentation
APAC-05 XMPP AccessGrid presentationAPAC-05 XMPP AccessGrid presentation
APAC-05 XMPP AccessGrid presentation
 
Sydgraph presentation 2004
Sydgraph presentation 2004Sydgraph presentation 2004
Sydgraph presentation 2004
 
Devops London 2013 - Opening the inner circle
Devops London 2013 - Opening the inner circleDevops London 2013 - Opening the inner circle
Devops London 2013 - Opening the inner circle
 
Devops London 2013 - Robust systems or, not fucking the customer
Devops London 2013 - Robust systems or, not fucking the customerDevops London 2013 - Robust systems or, not fucking the customer
Devops London 2013 - Robust systems or, not fucking the customer
 

Último

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Último (20)

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 

London Atlassian User Group - February 2014

  • 2. Who Am I? • Steve Smith! • An Atlassian for 7+ years! • Original company sysadmin! • Developer for last 4 years! • Now working out of Amsterdam! • Not a professional speaker
  • 3. What I’ve been up to… • Last 6 months converting our order systems to high-availability and continuous deployment.
  • 4. What I’ve been up to… • Last 6 months converting our order systems to high-availability and continuous deployment.! • Why 6 months? Because the concept is straightforward, but it’s implications affect a lot of your organisation.
  • 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”? • Constant QA is the common theme.! • In practice there’s a continuous spectrum of options, each organisation has different needs and constraints.! • But if you trust your testing and process you can adopt the level appropriate for you.
  • 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 requested 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 which 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. 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
  • 11. 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
  • 12. 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.
  • 13. 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
  • 14. 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.
  • 15. 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.
  • 16. Step 4.1: Stash testing integration
  • 17. 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.
  • 18. 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.
  • 19. Step 7: Release to production • Valid staging builds may be promoted up to production.
  • 20. 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
  • 22. Practical issue • How do you actually get releases onto your staging and production servers?! • AKA “the last-mile problem”
  • 23. tl;dr: Last mile • Puppet/Chef are not appropriate! • For simple/single-node applications you can use a Bamboo agent directly! • For more complex setups use an automation tool
  • 24. Last mile • Puppet/Chef are not appropriate! • .. if timing is critical! • .. if cross-host coordination required
  • 25. Last mile • Roll your own! • Bamboo SSH plugin + bash scripting! • Number of existing automation solutions! • func, capistrano, SaltStack, Ansible, mcollective, Fabric…
  • 26. Last mile • Bamboo agent per-node! • SSH not required! • Works for simple (single node) apps! • Coordination is tricky
  • 27. 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
  • 28. 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)
  • 29. 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 checked into git
  • 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 • Where’s the oversight in all this?! • 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