SlideShare uma empresa Scribd logo
1 de 18
Implementing  Continuous Deployment Adam Rosien @arosien #agilis2011
http://www.flickr.com/photos/d1v1d/3566172882/
(I  stole this picture)
(I  stole this picture too)
Deploying all the time is the only way to be safe.
Optimization vs. Learning
(Eric Ries)
Every problem  only once Stop the line  if anything fails Fast response   vs. prevention (Eric Ries)
Layer We’re learning… Culture How  not to waste Test-Driven Development How  our code should behave Continuous Integration How  our changes affect  other’s code Immune System How  external behavior and internal deployments change actionable metrics Continuous Deployment How  to resiliently introduce change
Trunk stable Small commits Trivial rollbacks Broken build:  no checkins stop the line development
Only add fields/columns Only delete when you can  prove  there are no more consumers development
Every problem  only once Only automated testing Forbidden calls Bad code snippets Stuff-not-tested-test Disallow I/O in tests testing
System.currentTimeMillis() ⇒  logical clock Thread.sleep() ⇒  don’t do that testing
Commit messages can trigger actions #deploy:um #pleasereview #cc:ben continuous integration
Every visitor assigned to many experiments (tags) Branch in code  Gradual rollout all layers :)
Running, accepting prod traffic Unannounce Clients stop requesting Shut down Start new version Self-test Announce Automated rollback Accept prod traffic self-test fail monitoring fail canaries + exponential deploys continuous deployment
 
Questions? Adam Rosien @arosien #agilis2011

Mais conteúdo relacionado

Destaque

From ci to cd - LavaJug 2012
From ci to cd  - LavaJug 2012From ci to cd  - LavaJug 2012
From ci to cd - LavaJug 2012Henri Gomez
 
System Integration
System IntegrationSystem Integration
System IntegrationESUG
 
Continous Deployment - Schneller entwickeln
Continous Deployment - Schneller entwickelnContinous Deployment - Schneller entwickeln
Continous Deployment - Schneller entwickelnMartin Seibert
 
AxwayAdvantagePartnerProgram
AxwayAdvantagePartnerProgramAxwayAdvantagePartnerProgram
AxwayAdvantagePartnerProgramMike Dayton
 
Sterling overivew settembre 2012
Sterling overivew settembre 2012 Sterling overivew settembre 2012
Sterling overivew settembre 2012 Luca Verzicco
 
BOOK - IBM Sterling B2B Integration and Managed File Transfer Solutions
BOOK - IBM Sterling B2B Integration and Managed File Transfer SolutionsBOOK - IBM Sterling B2B Integration and Managed File Transfer Solutions
BOOK - IBM Sterling B2B Integration and Managed File Transfer SolutionsSatya Harish
 
Microservices under the microscope
Microservices under the microscopeMicroservices under the microscope
Microservices under the microscopeRoss Garrett
 
Microservices, geerdet
Microservices, geerdetMicroservices, geerdet
Microservices, geerdetinovex GmbH
 
Top 10 edi developer interview questions and answers
Top 10 edi developer interview questions and answersTop 10 edi developer interview questions and answers
Top 10 edi developer interview questions and answerstonychoper6806
 
Sterling Integrator Map Editor
Sterling Integrator Map EditorSterling Integrator Map Editor
Sterling Integrator Map EditorJeyhind M
 
Axway Introduction & Digital Business (by Jo Van Audenhove & Rogier van Boxtel)
Axway Introduction & Digital Business (by Jo Van Audenhove & Rogier van Boxtel)Axway Introduction & Digital Business (by Jo Van Audenhove & Rogier van Boxtel)
Axway Introduction & Digital Business (by Jo Van Audenhove & Rogier van Boxtel)ACA IT-Solutions
 
Cloud Wars – what‘s the smartest data platform? Vergleich Microsoft Azure, Am...
Cloud Wars – what‘s the smartest data platform? Vergleich Microsoft Azure, Am...Cloud Wars – what‘s the smartest data platform? Vergleich Microsoft Azure, Am...
Cloud Wars – what‘s the smartest data platform? Vergleich Microsoft Azure, Am...inovex GmbH
 
Erfolgsfaktoren von Datenprodukten
Erfolgsfaktoren von DatenproduktenErfolgsfaktoren von Datenprodukten
Erfolgsfaktoren von Datenprodukteninovex GmbH
 
SysDig Metriken zentralisieren
SysDig Metriken zentralisierenSysDig Metriken zentralisieren
SysDig Metriken zentralisiereninovex GmbH
 
Test and Protect Your API
Test and Protect Your APITest and Protect Your API
Test and Protect Your APISmartBear
 
Intelligent infrastructure with SaltStack
Intelligent infrastructure with SaltStackIntelligent infrastructure with SaltStack
Intelligent infrastructure with SaltStackLove Nyberg
 
Automated Application Management with SaltStack
Automated Application Management with SaltStackAutomated Application Management with SaltStack
Automated Application Management with SaltStackinovex GmbH
 
Gitlab meets Kubernetes
Gitlab meets KubernetesGitlab meets Kubernetes
Gitlab meets Kubernetesinovex GmbH
 

Destaque (20)

From ci to cd
From ci to cdFrom ci to cd
From ci to cd
 
From ci to cd - LavaJug 2012
From ci to cd  - LavaJug 2012From ci to cd  - LavaJug 2012
From ci to cd - LavaJug 2012
 
System Integration
System IntegrationSystem Integration
System Integration
 
Synchrony
SynchronySynchrony
Synchrony
 
Continous Deployment - Schneller entwickeln
Continous Deployment - Schneller entwickelnContinous Deployment - Schneller entwickeln
Continous Deployment - Schneller entwickeln
 
AxwayAdvantagePartnerProgram
AxwayAdvantagePartnerProgramAxwayAdvantagePartnerProgram
AxwayAdvantagePartnerProgram
 
Sterling overivew settembre 2012
Sterling overivew settembre 2012 Sterling overivew settembre 2012
Sterling overivew settembre 2012
 
BOOK - IBM Sterling B2B Integration and Managed File Transfer Solutions
BOOK - IBM Sterling B2B Integration and Managed File Transfer SolutionsBOOK - IBM Sterling B2B Integration and Managed File Transfer Solutions
BOOK - IBM Sterling B2B Integration and Managed File Transfer Solutions
 
Microservices under the microscope
Microservices under the microscopeMicroservices under the microscope
Microservices under the microscope
 
Microservices, geerdet
Microservices, geerdetMicroservices, geerdet
Microservices, geerdet
 
Top 10 edi developer interview questions and answers
Top 10 edi developer interview questions and answersTop 10 edi developer interview questions and answers
Top 10 edi developer interview questions and answers
 
Sterling Integrator Map Editor
Sterling Integrator Map EditorSterling Integrator Map Editor
Sterling Integrator Map Editor
 
Axway Introduction & Digital Business (by Jo Van Audenhove & Rogier van Boxtel)
Axway Introduction & Digital Business (by Jo Van Audenhove & Rogier van Boxtel)Axway Introduction & Digital Business (by Jo Van Audenhove & Rogier van Boxtel)
Axway Introduction & Digital Business (by Jo Van Audenhove & Rogier van Boxtel)
 
Cloud Wars – what‘s the smartest data platform? Vergleich Microsoft Azure, Am...
Cloud Wars – what‘s the smartest data platform? Vergleich Microsoft Azure, Am...Cloud Wars – what‘s the smartest data platform? Vergleich Microsoft Azure, Am...
Cloud Wars – what‘s the smartest data platform? Vergleich Microsoft Azure, Am...
 
Erfolgsfaktoren von Datenprodukten
Erfolgsfaktoren von DatenproduktenErfolgsfaktoren von Datenprodukten
Erfolgsfaktoren von Datenprodukten
 
SysDig Metriken zentralisieren
SysDig Metriken zentralisierenSysDig Metriken zentralisieren
SysDig Metriken zentralisieren
 
Test and Protect Your API
Test and Protect Your APITest and Protect Your API
Test and Protect Your API
 
Intelligent infrastructure with SaltStack
Intelligent infrastructure with SaltStackIntelligent infrastructure with SaltStack
Intelligent infrastructure with SaltStack
 
Automated Application Management with SaltStack
Automated Application Management with SaltStackAutomated Application Management with SaltStack
Automated Application Management with SaltStack
 
Gitlab meets Kubernetes
Gitlab meets KubernetesGitlab meets Kubernetes
Gitlab meets Kubernetes
 

Semelhante a Implementing Continous Deployment

Automated Unit Testing for Mere Mortals
Automated Unit Testing for Mere MortalsAutomated Unit Testing for Mere Mortals
Automated Unit Testing for Mere MortalsJess Chadwick
 
Testing and TDD - KoJUG
Testing and TDD - KoJUGTesting and TDD - KoJUG
Testing and TDD - KoJUGlburdz
 
Unit Testing & TDD Training for Mobile Apps
Unit Testing & TDD Training for Mobile AppsUnit Testing & TDD Training for Mobile Apps
Unit Testing & TDD Training for Mobile AppsMarcelo Busico
 
Testing & continuous delivery
Testing & continuous deliveryTesting & continuous delivery
Testing & continuous deliveryNelson Melina
 
Testing As A Bottleneck - How Testing Slows Down Modern Development Processes...
Testing As A Bottleneck - How Testing Slows Down Modern Development Processes...Testing As A Bottleneck - How Testing Slows Down Modern Development Processes...
Testing As A Bottleneck - How Testing Slows Down Modern Development Processes...TEST Huddle
 
Successful Software Projects - What you need to consider
Successful Software Projects - What you need to considerSuccessful Software Projects - What you need to consider
Successful Software Projects - What you need to considerLloydMoore
 
TDD python ne-april-2014
TDD python ne-april-2014TDD python ne-april-2014
TDD python ne-april-2014Alex Kavanagh
 
Implementing TDD in for .net Core applications
Implementing TDD in for .net Core applicationsImplementing TDD in for .net Core applications
Implementing TDD in for .net Core applicationsAhmad Kazemi
 
Unit Testing and TDD 2017
Unit Testing and TDD 2017Unit Testing and TDD 2017
Unit Testing and TDD 2017Xavi Hidalgo
 
Unit Testing, TDD and the Walking Skeleton
Unit Testing, TDD and the Walking SkeletonUnit Testing, TDD and the Walking Skeleton
Unit Testing, TDD and the Walking SkeletonSeb Rose
 
Devops - Accelerating the Pace and Securing Along the Way - Thaddeus Walsh
Devops - Accelerating the Pace and Securing Along the Way - Thaddeus WalshDevops - Accelerating the Pace and Securing Along the Way - Thaddeus Walsh
Devops - Accelerating the Pace and Securing Along the Way - Thaddeus WalshDrew Malone
 
TDD Flow: The Mantra in Action
TDD Flow: The Mantra in ActionTDD Flow: The Mantra in Action
TDD Flow: The Mantra in ActionDionatan default
 

Semelhante a Implementing Continous Deployment (20)

Automated Unit Testing for Mere Mortals
Automated Unit Testing for Mere MortalsAutomated Unit Testing for Mere Mortals
Automated Unit Testing for Mere Mortals
 
Testing and TDD - KoJUG
Testing and TDD - KoJUGTesting and TDD - KoJUG
Testing and TDD - KoJUG
 
Unit Testing & TDD Training for Mobile Apps
Unit Testing & TDD Training for Mobile AppsUnit Testing & TDD Training for Mobile Apps
Unit Testing & TDD Training for Mobile Apps
 
Why Unit Testingl
Why Unit TestinglWhy Unit Testingl
Why Unit Testingl
 
Why unit testingl
Why unit testinglWhy unit testingl
Why unit testingl
 
Why Unit Testingl
Why Unit TestinglWhy Unit Testingl
Why Unit Testingl
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Testing & continuous delivery
Testing & continuous deliveryTesting & continuous delivery
Testing & continuous delivery
 
TDD Best Practices
TDD Best PracticesTDD Best Practices
TDD Best Practices
 
Testing As A Bottleneck - How Testing Slows Down Modern Development Processes...
Testing As A Bottleneck - How Testing Slows Down Modern Development Processes...Testing As A Bottleneck - How Testing Slows Down Modern Development Processes...
Testing As A Bottleneck - How Testing Slows Down Modern Development Processes...
 
Successful Software Projects - What you need to consider
Successful Software Projects - What you need to considerSuccessful Software Projects - What you need to consider
Successful Software Projects - What you need to consider
 
TDD python ne-april-2014
TDD python ne-april-2014TDD python ne-april-2014
TDD python ne-april-2014
 
Implementing TDD in for .net Core applications
Implementing TDD in for .net Core applicationsImplementing TDD in for .net Core applications
Implementing TDD in for .net Core applications
 
Unit Testing and TDD 2017
Unit Testing and TDD 2017Unit Testing and TDD 2017
Unit Testing and TDD 2017
 
Unit Testing, TDD and the Walking Skeleton
Unit Testing, TDD and the Walking SkeletonUnit Testing, TDD and the Walking Skeleton
Unit Testing, TDD and the Walking Skeleton
 
Devops - Accelerating the Pace and Securing Along the Way - Thaddeus Walsh
Devops - Accelerating the Pace and Securing Along the Way - Thaddeus WalshDevops - Accelerating the Pace and Securing Along the Way - Thaddeus Walsh
Devops - Accelerating the Pace and Securing Along the Way - Thaddeus Walsh
 
TDD Flow: The Mantra in Action
TDD Flow: The Mantra in ActionTDD Flow: The Mantra in Action
TDD Flow: The Mantra in Action
 
Unit testing
Unit testingUnit testing
Unit testing
 
Simple testable code
Simple testable codeSimple testable code
Simple testable code
 
TDD Workshop UTN 2012
TDD Workshop UTN 2012TDD Workshop UTN 2012
TDD Workshop UTN 2012
 

Último

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 AutomationSafe Software
 
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 interpreternaman860154
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
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 organizationRadu Cotescu
 
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...apidays
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
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 Servicegiselly40
 
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 2024The Digital Insurer
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
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 SolutionsEnterprise Knowledge
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
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?Antenna Manufacturer Coco
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
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...Igalia
 
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.pptxEarley Information Science
 
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 2024Rafal Los
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
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
 
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 slidevu2urc
 

Último (20)

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
 
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
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
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
 
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...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
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
 
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
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
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
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
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?
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
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 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
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
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
 
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
 

Implementing Continous Deployment

Notas do Editor

  1. Thanks to Dadi Ingolfsson for inviting me!
  2. Imagine you need to care for a garden, to plant it, weed it, water it regularly. (It kind of looks like a server farm, racks of vegetables….) Which tool would you use to water a garden….
  3. A bucket or a hose? A bucket is heavy, splashes water as you walk with it, is hard to place correctly, and you might pour too little or, more likely, too much. Or you could use a hose: you can place it precisely, you can control the rate of flow, etc. Watering a garden is exactly how software deployment works, and most people are using a bucket, with its deficiencies. (bucket/hose metaphor from Eishay Smith)
  4. It’s even worse than using a bucket. We have a whole warehouse full of buckets. Just like in manufacturing, developers write code that goes into long processes that have to sit on the shelf of some warehouse. (version control, waterfall processes, etc.) Code that’s sitting on a shelf, not being used, is waste.
  5. So I have to conclude that deploying all the time is the only way to be safe. The smaller the deployment, the less change and risk we are adding to the production system, and by reducing our risk we can deploy more and more often.
  6. Just because you can use this idea to go faster doesn’t mean that you’re actually on the right path to a better product, more revenue, or whatever. Here’s a common situation: the product isn’t doing well in the market, releases are getting more and more behind schedule, and management concludes that something must be wrong with the way the product is being built. This seems to be the case, and the engineers respond by trying to do better: writing more tests, making the product faster or more responsive, or creating more features for the customers. Engineers are optimizing, and are good at it. But then the results don’t seem to change, customers still have problems or your company just isn’t growing any faster. The problem is that instead of *optimizing* some arbitrary metrics the company needs to be *learning* what the right metrics are and correlating the engineering work to real value created for the company.
  7. Eric Ries calls this process “validated learning”, and the goal is not to optimize any one step, but to minimize the TOTAL time through the loop. By learning faster we can be most effective and reduce our wasted efforts.
  8. Eric’s algorithm for this is made of three main points: Every problem only once: Fool me once, shame on you. Fool me twice, shame on me. If it happens, write automation to ensure it won’t happen again. Stop the line if anything fails: Any failure you ignore will only compound other failures in the future, i.e., technical or other kinds of debt you need to repay because you don’t understand something enough. Fast response vs. prevention: The 80/20 rule applies, don’t over-optimize your testing processes. If you can detect and fix problems quickly, without major customer and business impact, it’s more effective. Roll forward, don’t roll back.
  9. This algorithm can be applied at many layers, and all are needed to be successful. We need to learn (as fast as possible) at each layer.
  10. At the development layer we follow the above techniques. Re: no checkins when the build is broken, IF the build is broken then something is wrong and we need to learn something, not only with the broken code itself but with how we’re developing. Perhaps we’re not running the unit tests locally before we check in. Perhaps our commits are too large so it’s too hard to prove that we’re not breaking other (dependent) code.
  11. It’s always a tough issue to migrate a database, and it gets more difficult if you have many deployments with potential rollbacks. Here are the basic rules.
  12. Testing is obviously about only having every problem only once. Forbidden calls: fail the build if there are particular invocations of methods or functions that are buggy or indicate bad usage. Bad code snippets: disallow certain coding idioms (can be as simple as a grep!) and fail the build if they are found. Stuff-not-tested-test: for every new X (class, servlet, etc.) make sure that tests exist, otherwise fail the build. IO: you can actually hook into the JVM during tests and fail the build if IO is used, because you want tests to be fast and IO is slow.
  13. Examples of forbidden calls and their alternatives.
  14. Be lazy! If there are higher-order actions to execute across multiple systems, don’t force yourself to click on a bunch of web pages or write extra commands. You can push your intention into the commit messages and have automation perform the actions for you, orchestrating the whole process. For example, #deploy:um means that if the build passes from this commit, deploy the “um” service. No need to go click something.
  15. Rather than branch using version control, which is just like putting code on the shelf, branch in code so that at any time you can deploy the main line. Then you can selectively turn on features when they are ready to be tested against a particular user population. Perhaps you start at 5% of the users seeing the new code, and ramp up to 100%.
  16. This is the state machine for a service being deployed. Coordination services like Apache ZooKeeper make it easy to implement. Canaries: deploy one instance of a service, watch it for a while to see if there are problems. If so, you can roll it back without affecting the majority of your customers, If not, continue with more instances until you’ve upgraded all of them. Self-test: many times you can “only test in production”, so one technique to mitigate risk is to have a service do a self-check to see if it can satisfy its dependencies, like connecting to a database, talking to a particular remote service, etc. If not, the self-test should fail, the instance will be rolled back and the impact to customers is minimized.
  17. Some existing and needed tools for implementing continuous deployment. Bots help orchestrate changes to your environments and give you a shared space for dealing with issues. Create a “shell” for your company, with suites of commands that can query and manipulate the production environment. New commands can be added as needed and it is a great learning tool for everyone. When in doubt, write some code to fix problems!