Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Adventures in continuous delivery

108 views

Published on

My experience implementing a CD pipeline. Shared at the June 2016 event of Programmers in Padua

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Adventures in continuous delivery

  1. 1. Adventures in Continuous Delivery @afactotumProgrammers In Padua 2016
  2. 2. Umberto Nicoletti @afactotum
  3. 3. Continuous Delivery 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. Fowler (http://martinfowler.com/bliki/ContinuousDelivery.html)
  4. 4. Continuous Delivery Checklist 1. Your software is deployable throughout its lifecycle 2. Your team prioritizes keeping the software deployable over working on new features 3. Anybody can get fast, automated feedback on the production readiness of their systems any time somebody makes a change to them 4. You can perform push-button deployments of any version of the software to any environment on demandFowler (http://martinfowler. com/bliki/ContinuousDelivery. html)
  5. 5. Pipeline di CI/CD: differenza http://blog.crisp.se/2013/02/05/yassalsundman/continuous-delivery-vs-continuous-deployment
  6. 6. Un esperimento iniziato 3 anni fa... Mappu: sproutcore + nodejs + postgresql + redis geoserver + mapfish
  7. 7. Un esperimento iniziato 3 anni fa... 1. shell script + tar.gz 2. SaltStack states + tar.gz 3. SaltStack states + RPM
  8. 8. Primo passo: continuous integration
  9. 9. Secondo passo: deployability #!/bin/bash Feature togglesSmoke tests
  10. 10. Package deliverables / artifacts / core dependencies Vantaggi: 1. rpm/deb (no, .tgz non è un pacchetto) 2. dipendenze 3. può essere rimosso 4. semplifica upgrade 5. verifica integrità 6. ridistribuisce responsabilità fra dev e ops 7. versioning Svantaggi: A. creazione di pacchetti è difficile (tip: fpm) B. chi è proprietario del pacchetto?
  11. 11. Gestire i Database Database versioning software (es: liquibase, flyway) NoSQL
  12. 12. Terzo passo: Test Everything anche il processo di delivery Vagrant Docker/LXD Terraform Salt-cloud EC2 VirtualBox serverspec ....
  13. 13. Derivati della continuous delivery self-service dev/staging/testing Auditing/compliance Riutilizzo Infrastructure independence
  14. 14. Adventures in Continuous Delivery Q. & A. @afactotumProgrammers In Padua 2016

×