META-INF ATLASSIAN DAY 2016
CONTINUOUS INTEGRATION, DELIVERY AND
DEPLOYMENT
CONCEPTS AND TRENDS
Steffen Opel / Co-Founder Utoolity / @steffenopel
@steffenopel
ABOUT UTOOLITY
We develop utilities and tools to automate cloud computing
operations and software development processes, with a
particular focus on:
Amazon Web Services (AWS)
The Atlassian tool suite
@steffenopel
AMAZON WEB SERVICES (AWS)
@steffenopel
THE ATLASSIAN TOOL SUITE
@steffenopel
UTOOLITY IN THE MARKETPLACE
@steffenopel
AGENDA
What? - Definitions
Why? - Motivation
How? - Approaches
@steffenopel
THE PIPELINE
@steffenopel
THE PIPELINE
It's all about Continuous ...
@steffenopel
THE PIPELINE
It's all about Continuous ...
... Integration
@steffenopel
THE PIPELINE
It's all about Continuous ...
... Integration
... Delivery
@steffenopel
THE PIPELINE
It's all about Continuous ...
... Integration
... Delivery
... Deployment
@steffenopel
THE JOEL TEST
@steffenopel
THE JOEL TEST
12 STEPS TO BETTER CODE
Joel Spolsky, August 2000
@steffenopel
THE JOEL TEST
@steffenopel
THE JOEL TEST
1. Do you use source control?
@steffenopel
THE JOEL TEST
1. Do you use source control?
2. Can you make a build in one step?
@steffenopel
THE JOEL TEST
1. Do you use source control?
2. Can you make a build in one step?
3. Do you make daily builds?
@steffenopel
THE JOEL TEST
1. Do you use source control?
2. Can you make a build in one step?
3. Do you make daily builds?
4. ...
@steffenopel
“Continuous Integration is a software
development practice where members of a
team integrate their work frequently,
usually each person integrates at least daily
- leading to multiple integrations per day.
Each integration is verified by an
automated build (including test) to detect
integration errors as quickly as possible.”
Martin Fowler, May 2006
@steffenopel
CONTINUOUS INTEGRATION
THE BUILD PIPELINE
@steffenopel
CONTINUOUS INTEGRATION
THE BUILD PIPELINE
Commit new code (push)
@steffenopel
CONTINUOUS INTEGRATION
THE BUILD PIPELINE
Commit new code (push)
Integrate with existing code (merge)
@steffenopel
CONTINUOUS INTEGRATION
THE BUILD PIPELINE
Commit new code (push)
Integrate with existing code (merge)
Generate new artifact (build)
@steffenopel
CONTINUOUS INTEGRATION
FEATURE BRANCHING CONTROVERSY
@steffenopel
CONTINUOUS INTEGRATION
FEATURE BRANCHING CONTROVERSY
Source: Atlassian
@steffenopel
THE AGILE MANIFESTO
@steffenopel
THE AGILE MANIFESTO
12 PRINCIPLES FOR BETTER SOFTWARE DEVELOPMENT
17 authors, February 2001
@steffenopel
THE AGILE MANIFESTO
@steffenopel
THE AGILE MANIFESTO
1. Our highest priority is to satisfy the customer through
early and continuous delivery of valuable software.
@steffenopel
THE AGILE MANIFESTO
1. Our highest priority is to satisfy the customer through
early and continuous delivery of valuable software.
2. Welcome changing requirements, even late in
development. Agile processes harness change for the
customer's competitive advantage.
@steffenopel
THE AGILE MANIFESTO
1. Our highest priority is to satisfy the customer through
early and continuous delivery of valuable software.
2. Welcome changing requirements, even late in
development. Agile processes harness change for the
customer's competitive advantage.
3. Deliver working software frequently, from a couple of
weeks to a couple of months, with a preference to the
shorter timescale.
@steffenopel
THE AGILE MANIFESTO
1. Our highest priority is to satisfy the customer through
early and continuous delivery of valuable software.
2. Welcome changing requirements, even late in
development. Agile processes harness change for the
customer's competitive advantage.
3. Deliver working software frequently, from a couple of
weeks to a couple of months, with a preference to the
shorter timescale.
4. ...
@steffenopel
“Continuous Delivery is a software
development discipline where you build
software in such a way that the software
can be released to production at any time.”
Martin Fowler, May 2013
@steffenopel
CONTINUOUS DELIVERY
THE DEPLOYMENT PIPELINE
@steffenopel
CONTINUOUS DELIVERY
THE DEPLOYMENT PIPELINE
Deploy artifact
@steffenopel
CONTINUOUS DELIVERY
THE DEPLOYMENT PIPELINE
Deploy artifact (production-like environment)
@steffenopel
CONTINUOUS DELIVERY
THE DEPLOYMENT PIPELINE
Deploy artifact (production-like environment)
Verify artifact
@steffenopel
CONTINUOUS DELIVERY
THE DEPLOYMENT PIPELINE
Deploy artifact (production-like environment)
Verify artifact (production oriented tests)
@steffenopel
CONTINUOUS DELIVERY
THE DEPLOYMENT PIPELINE
Deploy artifact (production-like environment)
Verify artifact (production oriented tests)
Deliver artifact
@steffenopel
CONTINUOUS DELIVERY
THE DEPLOYMENT PIPELINE
Deploy artifact (production-like environment)
Verify artifact (production oriented tests)
Deliver artifact (push-button deploy to production)
@steffenopel
“Continuous Deployment is
Continuous Delivery
@steffenopel
“Continuous Deployment is
Continuous Delivery, unleashed”
@steffenopel
“Continuous Deployment is
Continuous Delivery, unleashed”
Me, just now
@steffenopel
“Continuous deployment is the practice of
releasing every good build to users - a more
accurate name might have been
'continuous release'”
Jez Humble, August 2010
@steffenopel
CONTINUOUS DEPLOYMENT
@steffenopel
CONTINUOUS DEPLOYMENT
THE DEPLOYMENT PIPELINE
@steffenopel
CONTINUOUS DEPLOYMENT
THE DEPLOYMENT PIPELINE, WITHOUT THE BUTTON
@steffenopel
CONTINUOUS DEPLOYMENT
THE DEPLOYMENT PIPELINE, WITHOUT THE BUTTON
Source: Yassal Sundman, 2013
@steffenopel
WHY DO WE WANT IT (NOW)?
@steffenopel
WHY DO WE WANT IT (NOW)?
Speed
@steffenopel
WHY DO WE WANT IT (NOW)?
Speed
Speed
@steffenopel
WHY DO WE WANT IT (NOW)?
Speed
Speed
Speed
@steffenopel
WHY DO WE WANT IT (NOW)?
THE BUSINESS CASE
@steffenopel
WHY DO WE WANT IT (NOW)?
THE BUSINESS CASE
Early and frequent user feedback
@steffenopel
WHY DO WE WANT IT (NOW)?
THE BUSINESS CASE
Early and frequent user feedback
Reduced deployment risk
@steffenopel
WHY DO WE WANT IT (NOW)?
THE BUSINESS CASE
Early and frequent user feedback
Reduced deployment risk
Increased confidence and trust
@steffenopel
HOW DO WE DO IT?
@steffenopel
HOW DO WE DO IT?
Automation
@steffenopel
HOW DO WE DO IT?
Automation
Automation
@steffenopel
HOW DO WE DO IT?
Automation
Automation
Automation
@steffenopel
HOW DO WE DO IT?
THE DEPLOYMENT PIPELINE
@steffenopel
HOW DO WE DO IT?
THE DEPLOYMENT PIPELINE
Automate all parts of the delivery process
@steffenopel
HOW DO WE DO IT?
THE DEPLOYMENT PIPELINE
Automate all parts of the delivery process
Versionize all aspects of software and environments
@steffenopel
HOW DO WE DO IT?
THE DEPLOYMENT PIPELINE
Automate all parts of the delivery process
Versionize all aspects of software and environments
Collaborate closely with everyone involved
@steffenopel
HOW DO WE DO IT?
AUTOMATION COVERAGE - IS IT WORTH THE TIME?
@steffenopel
HOW DO WE DO IT?
AUTOMATION COVERAGE - IS IT WORTH THE TIME?
Source: xkcd
@steffenopel
HOW DO WE DO IT?
AUTOMATION COVERAGE - IS IT WORTH THE TIME?
Source: xkcd
@steffenopel Does not apply to CI/CD!
HOW DO WE DO IT?
GETTING STARTED
@steffenopel
HOW DO WE DO IT?
GETTING STARTED
Explore CI/CD with a fun project
@steffenopel
HOW DO WE DO IT?
GETTING STARTED
Explore CI/CD with a fun project
Document current release process
@steffenopel
HOW DO WE DO IT?
GETTING STARTED
Explore CI/CD with a fun project
Document current release process
Pick any step and start automating
@steffenopel
RELATED TRENDS
@steffenopel
RELATED TRENDS
Infrastructure as Code
@steffenopel
RELATED TRENDS
Infrastructure as Code
Containerization
@steffenopel
RELATED TRENDS
Infrastructure as Code
Containerization
Microservices
@steffenopel
RELATED TRENDS
Infrastructure as Code
Containerization
Microservices
Serverless Architectures
@steffenopel
RECAP
@steffenopel
WHAT?
Deploy any version to any environment at any time
@steffenopel
WHY?
Frequent feedback, reduced risk, increased confidence
(Build the right thing, fast and reliable)
@steffenopel
HOW?
@steffenopel
AUTOMATE ALL THE THINGS!
@steffenopel
AUTOMATE ALL THE THINGS!
As a team
@steffenopel
AUTOMATE ALL THE THINGS!
As a team, one step at a time …
@steffenopel
AUTOMATE ALL THE THINGS!
As a team, one step at a time …
THANK YOU!
@steffenopel
AUTOMATE ALL THE THINGS!
As a team, one step at a time …
THANK YOU!
Steffen Opel / Co-Founder Utoolity / @steffenopel
@steffenopel
REFERENCES
The Joel Test: 12 Steps to Better Code - Joel Spolsky
Manifesto for Agile Software Development - Various
Authors
Continuous Integration - Martin Fowler
Continuous Delivery - Jez Humble
The Pipeline - Atlassian
@steffenopel