SlideShare una empresa de Scribd logo
1 de 154
Descargar para leer sin conexión
Andrzej Grzesik
CONTINOUS DELIVERY


               Andrzej Grzesik
@ags313
andrzej@grzesik.it
andrzejgrzesik.info
ABOUT:ME
Present




Past
GEECON 2013
 I HATE COMPUTERS
             disclaimer
   17th-19th May, Krakow, Poland
I HATE COMPUTERS
      disclaimer
QUESTIONS?
 ask them right away!
GREAT BOOKS!
FACTS FIRST
is more fun than
Our highest priority is to satisfy the customer through
early and continuous delivery of valuable software.
Our highest priority is to satisfy the customer through
early and continuous delivery of valuable software.
DELIVERY
DELIVERED
   when?
DEPENDS…
(ultimate answer in computers)
#DEFINE DONE
WHAT IS DONE?
WHAT IS DONE?
WHAT IS DONE?



Coded
WHAT IS DONE?



Coded   Reviewed
WHAT IS DONE?



Coded   Reviewed   Checked-in
WHAT IS DONE?



Coded   Reviewed   Checked-in   Built
WHAT IS DONE?



Coded   Reviewed   Checked-in   Built   Tested
WHAT IS DONE?



Coded   Reviewed   Checked-in   Built   Tested   Demoed
NOT REALLY :-)
#REDEFINE DONE
NOT READY
TILL DEPLOYED
DONE === RELEASED
ERIC RIES, THE LEAN STARTUP


           build&


ideas&                deploy&




learn&                measure&



            data&
If we can
reduce the time between major iterations
   we can increase our odds of success
                                    Eric Ries, Lean Startup
RELEASES
  give us
FEEDBACK!
How long would it take your organization to deploy a
change that involved just one single line of code?

Do you do this on a repeatable, reliable basis?




                                 Mary and Tom Poppendieck,
                                 Implementing Lean Software Development
RELEASE == FEEDBACK
REPEATABLE FEEDBACK
HOW?!
entreth:

THE DEPLOYMENT PIPELINE
THE DEPLOYMENT PIPELINE
THE DEPLOYMENT PIPELINE

compile
THE DEPLOYMENT PIPELINE

compile
unit test
THE DEPLOYMENT PIPELINE

compile
unit test
package
THE DEPLOYMENT PIPELINE

compile
unit test
package




            artifact repository
THE DEPLOYMENT PIPELINE

compile
            Acceptance
unit test
              testing
package




                         artifact repository
THE DEPLOYMENT PIPELINE

compile
            Acceptance       Capacity
unit test
              testing         testing
package




                         artifact repository
THE DEPLOYMENT PIPELINE

compile
            Acceptance       Capacity          Manual
unit test
              testing         testing          testing
package




                         artifact repository
THE DEPLOYMENT PIPELINE

compile
            Acceptance       Capacity          Manual
unit test                                                Release
              testing         testing          testing
package




                         artifact repository
BUILD ONLY ONCE!
THE DEPLOYMENT PIPELINE
THE DEPLOYMENT PIPELINE

compile
            Acceptance       Capacity
unit test
              testing         testing
package




                         artifact repository
THE DEPLOYMENT PIPELINE

compile
            Acceptance       Capacity          Manual
unit test
              testing         testing          testing
package




                         artifact repository
THE DEPLOYMENT PIPELINE

compile
            Acceptance       Capacity          Manual
unit test                                                Release
              testing         testing          testing
package




                         artifact repository
THE DEPLOYMENT PIPELINE
THE DEPLOYMENT PIPELINE

    Acceptance   Capacity
      testing     testing
THE DEPLOYMENT PIPELINE

    Acceptance   Capacity   Manual
      testing     testing   testing
THE DEPLOYMENT PIPELINE

    Acceptance   Capacity   Manual
                                      Release
      testing     testing   testing
THE DEPLOYMENT PIPELINE
                fear!



compile
            Acceptance       Capacity          Manual
unit test                                                Release
              testing         testing          testing
package




                         artifact repository
AUTOMATE EVERYTHING!
        (almost)
AUTOMATE EVERYTHING!
AND?
WELL, IT’S BIG
ALL CODE
IS PRODUCTION READY
EVERY VERSION IS
A RELEASE CANDIDATE
QUALITY GOES UP
     people care
idea from: paulklipp.com/blog
PRO TIP: --VERSION
WHY VERSIONS?
185.0.1
            is more friendly than
0cdfc45df874354265b3be910b52c41398de79ca
ANTIPATTERNS
DEPLOYING RARELY/LATE
   symptomps: “alpha”, “beta”, “gold”
LATE FIRST CONTACT WITH
         REALITY
UNREALISTIC ASSUMPTIONS
WELL TESTED IN.. DEV
DEPLOYING MANUALLY
       is evil!
ERROR-PRONE




  http://www.flickr.com/photos/aaronjacobs/64368770/
ALWAYS DIFFERENT
     repeatable
IMPOSSIBLE TO TEST
VOODOO




http://flickr.com/photos/35541100@N00/2486381001/
2 AM DEPLOYS




http://www.flickr.com/photos/dhdesign/1096464615/sizes/z/in/photostream/
THE “DEPLOY” TEAM
DO YOU AVOID DEPLOYS?
HOW OFTEN DO YOU
    DEPLOY?
IF IT HURTS
DO IT MORE OFTEN!
   practice, practice, practice
INCREMENTAL, FREQUENT
  RELEASES REDUCE RISK
PROVIDE DATA
GIVE ROLLBACK POINTS
SOME STATS


Facebook - every 10 minutes

Etsy - 50-60 deploys/day

GitHub - >50 deploys/day

project X - 1374 commits, 1057 deployments, <8 months
ENVIRONMENTS
IF I ERASED ALL YOUR PRODUCTION
MACHINES, HOW LONG WOULD YOU NEED
              TO BE BACK UP?
WELL, CODE IS IN GIT
mercurial, subversion, ClearCase, whathaveyou
IMAGINE:




http://www.flickr.com/photos/roadhunter/68017745/
INFRASTRUCTURE AND CONFIGURATION
        IS JUST AS IMPORTANT
VERSION IT!
 (puppet, chef, etc)
BEFRIEND SOME ADMINS :-)
AND VERSION EVERYTHING
MANUAL CONFIGURATION
  OF ENVIRONMENTS
PRIVILEGED DEPLOY TEAM
NOT REPEATABLE
SLIGHT DIFFRENENCES
DOESN’T SCALE
HARD TO TRACK
ROLLBACK, ANYONE?
TRUCKS
MEANWHILE,
IN THE REAL WORLD
MY SYSTEM IS ***
WHERE TO START?
WITH PRODUCTION
   and fix things backwards
AUTOMATE DEVELOPMENT
    and bring automation forward
DEPLOYS
 how do I?
DEPLOYS


• blue-green

• canary

• emergency    fixes
BLUEGREEN



tr affic
FULL BLUEGREEN IS COSTLY
       but great for availability
CANARY


old   old      old   new



old   old     old    new
EMERGENCY FIXES
EMERGENCY FIXES
    go the same way
DON’T BREAK RULES
CAVEATS!
STATE
LONG RUNNING *
SAGAS?



http://www.cs.cornell.edu/andru/cs711/2002fa/reading/sagas.pdf
DATASTORES


EACH APP HAS IT’S OWN
         ideally
DATASTORES


 SCRIPTED
    must
DATASTORES


MIGRATIONS
    nice
DATASTORES


   TEST
   all of them
MAYBE EVENT SOURCING?
VERSION YOUR ENTITIES
      and code accordingly
BRANCHING
FEATURE SWITCHES
      instead
if your system
looks like that
CUT!
• have   integration tests

• have   a “test” system
DESKTOPS



• LOVE   your autoupdate

• build-in   version checking and inform user
DESKTOPS



Do      or
LOVE YOUR AUTOUPDATE
PUSH USER UP
IN PRACTICE
MODULES^N
PRE-TESTED COMMITS
       rock, a bit
DVCS
rock, a lot!
VMS
rock a lot!
THERE ARE TOOLS
IS AWESOME
but
+
GLU
http://linkedin.github.com/glu
GO ($$$)
PALDIES!
  kthxbye!
@ags313
andrzej@grzesik.it
andrzejgrzesik.info


  tweet please!
RESOURCES



• http://continuousdelivery.com

• http://lmgtfy.com/?q=continuous+delivery

Más contenido relacionado

Destacado (6)

The path to Repeatable Builds
The path to Repeatable BuildsThe path to Repeatable Builds
The path to Repeatable Builds
 
Scaem street
Scaem streetScaem street
Scaem street
 
JDK, the not so hidden treasures
JDK, the not so hidden treasuresJDK, the not so hidden treasures
JDK, the not so hidden treasures
 
Java 8: the good parts!
Java 8: the good parts!Java 8: the good parts!
Java 8: the good parts!
 
100+ Beautiful Slides from #CannesLions '11 from @jessedee
100+ Beautiful Slides from #CannesLions '11 from @jessedee100+ Beautiful Slides from #CannesLions '11 from @jessedee
100+ Beautiful Slides from #CannesLions '11 from @jessedee
 
You Suck At PowerPoint! by @jessedee
You Suck At PowerPoint! by @jessedeeYou Suck At PowerPoint! by @jessedee
You Suck At PowerPoint! by @jessedee
 

Similar a Continuous Delivery

Continuous deployment
Continuous deploymentContinuous deployment
Continuous deployment
Daniel
 
Cucumber Presentation Kiev Meet Up
Cucumber Presentation Kiev Meet UpCucumber Presentation Kiev Meet Up
Cucumber Presentation Kiev Meet Up
dimakovalenko
 

Similar a Continuous Delivery (20)

Testing with Docker
Testing with DockerTesting with Docker
Testing with Docker
 
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019
 
testing for people who hate testing
testing for people who hate testingtesting for people who hate testing
testing for people who hate testing
 
[Poland] SecOps live cooking with OWASP appsec tools
[Poland] SecOps live cooking with OWASP appsec tools[Poland] SecOps live cooking with OWASP appsec tools
[Poland] SecOps live cooking with OWASP appsec tools
 
Stop Being Lazy and Test Your Software
Stop Being Lazy and Test Your SoftwareStop Being Lazy and Test Your Software
Stop Being Lazy and Test Your Software
 
TDD and Getting Paid
TDD and Getting PaidTDD and Getting Paid
TDD and Getting Paid
 
SophiaConf 2018 - P. Urso (Activeeon)
SophiaConf 2018 - P. Urso (Activeeon)SophiaConf 2018 - P. Urso (Activeeon)
SophiaConf 2018 - P. Urso (Activeeon)
 
DevDay 2016: Dave Farley - Acceptance testing for continuous delivery
DevDay 2016: Dave Farley - Acceptance testing for continuous deliveryDevDay 2016: Dave Farley - Acceptance testing for continuous delivery
DevDay 2016: Dave Farley - Acceptance testing for continuous delivery
 
Patterns & Antipatterns in Docker Image Lifecycle
Patterns & Antipatterns in Docker Image LifecyclePatterns & Antipatterns in Docker Image Lifecycle
Patterns & Antipatterns in Docker Image Lifecycle
 
Tdd vs SQL
Tdd vs SQLTdd vs SQL
Tdd vs SQL
 
Testing smells
Testing smellsTesting smells
Testing smells
 
Continuous deployment
Continuous deploymentContinuous deployment
Continuous deployment
 
Graceful Failure with Selenium and Continuous Integration
Graceful Failure with Selenium and Continuous IntegrationGraceful Failure with Selenium and Continuous Integration
Graceful Failure with Selenium and Continuous Integration
 
Cucumber Presentation Kiev Meet Up
Cucumber Presentation Kiev Meet UpCucumber Presentation Kiev Meet Up
Cucumber Presentation Kiev Meet Up
 
Selenium and Cucumber Selenium Conf 2011
Selenium and Cucumber Selenium Conf 2011Selenium and Cucumber Selenium Conf 2011
Selenium and Cucumber Selenium Conf 2011
 
Zero to tested
Zero to testedZero to tested
Zero to tested
 
Openstack Summit Container Day Keynote
Openstack Summit Container Day KeynoteOpenstack Summit Container Day Keynote
Openstack Summit Container Day Keynote
 
Paving the Way for Agile Engineering Practices
Paving the Way for Agile Engineering PracticesPaving the Way for Agile Engineering Practices
Paving the Way for Agile Engineering Practices
 
Semiconductor IT Management
Semiconductor IT ManagementSemiconductor IT Management
Semiconductor IT Management
 
Testing Adhearsion Applications
Testing Adhearsion ApplicationsTesting Adhearsion Applications
Testing Adhearsion Applications
 

Más de Andrzej Grzesik (7)

JDK not so hidden treasures
JDK not so hidden treasuresJDK not so hidden treasures
JDK not so hidden treasures
 
Go, the one language to learn in 2014
Go, the one language to learn in 2014Go, the one language to learn in 2014
Go, the one language to learn in 2014
 
Cheffing a department
Cheffing a departmentCheffing a department
Cheffing a department
 
Continuous Delivery Antipatterns
Continuous Delivery AntipatternsContinuous Delivery Antipatterns
Continuous Delivery Antipatterns
 
Git
GitGit
Git
 
Continous delivery
Continous deliveryContinous delivery
Continous delivery
 
Hbase jdd
Hbase jddHbase jdd
Hbase jdd
 

Último

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Último (20)

Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
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
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - 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
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
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
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
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
 
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
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 

Continuous Delivery