Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Deployment pipeline for databases

Deployment pipeline for databases

Talk presented @ DevOpsDays Copenhagen (24-04-2018)

7b47fb5bb7f32e0ffdbd7bba5598ba98?s=128

Eduardo Piairo

April 24, 2018
Tweet

Transcript

  1. DEPLOYMENT PIPELINE FOR DATABASES Eduardo Piairo @EdPiairo #devopsdayscph

  2. DEPLOYMENT PIPELINE FOR DATABASES Eduardo Piairo @EdPiairo #devopsdayscph

  3. ABOUT ME Deployment pipeline for databases @EdPiairo, #devopsdayscph @EdPiairo https://pt.linkedin.com/in/jesuspiairo

    eduardopiairo@gmail.com http://www.eduardopiairo.com/ Eduardo Piairo DevOps Coach @ Natixis DevOps Porto Founder
  4. AGENDA • Deployment pipeline • Database challenges • Deployment pipeline

    stages • Deployment pipeline scenarios • Final thoughts Deployment pipeline for databases @EdPiairo, #devopsdayscph
  5. DEPLOYMENT PIPELINE DEFINITION A deployment pipeline should enable collaboration between

    the various groups involved in delivering software and provide everyone visibility about the flow of changes in the system, together with a thorough audit trail. by Martin Fowler @ https://martinfowler.com/bliki/DeploymentPipeline.html Deployment pipeline for databases @EdPiairo, #devopsdayscph
  6. DEPLOYMENT PIPELINE STAGES Deployment pipeline for databases Stage 1 –

    Change description (Source Control) Stage 2 – Change validation (Continuous Integration) Stage 3 – Change implementation (Continuous Delivery) Source Control Continuous Integration Continuous Delivery @EdPiairo, #devopsdayscph
  7. DATABASE & DEPLOYMENT PIPELINE Deployment pipeline for databases Source Control

    Continuous Integration Continuous Delivery Database + Application @EdPiairo, #devopsdayscph
  8. WHAT’S SO SPECIAL ABOUT DATABASES? Deployment pipeline for databases @EdPiairo,

    #devopsdayscph
  9. DATABASE CHALLENGES Deployment pipeline for databases • Database and application

    changes (most of the time) are handled differently • Different deployment pipeline • Synchronization needed • Database is not included (manual work) @EdPiairo, #devopsdayscph
  10. DATABASE CHALLENGES Deployment pipeline for databases • Manual work …

    • Lack of traceability of database changes (changes history) • It’s the most expensive and risky work type • Prevent CI and CD utilization in their full extent • Promote the fear of changes @EdPiairo, #devopsdayscph
  11. DATABASE CHALLENGES Deployment pipeline for databases Databases become a bottleneck

    in an agile delivery process @EdPiairo, #devopsdayscph
  12. AUTOMATION Deployment pipeline for databases @EdPiairo, #devopsdayscph

  13. THE VALUE OF AUTOMATION Deployment pipeline for databases • Enable

    control over database development • Increase speed of response to change • Greater reliability of the release process • Remove/reduce human intervention in the release process From (Re)Learn and forget it to Improve and forget it @EdPiairo, #devopsdayscph
  14. THE VALUE OF AUTOMATION Deployment pipeline for databases Fearless database

    changes @EdPiairo, #devopsdayscph
  15. SOURCE CONTROL Deployment pipeline for databases • First step in

    your database deployment pipeline • Traceability through change history • SQL as documentation • Shared code-base and shared process • Enforceable standards to reduce conflicts SQL Script @EdPiairo, #devopsdayscph
  16. • State based solutions • How the database should be

    • Migrations based solutions • How the database should change MIGRATIONS VS STATE Deployment pipeline for databases Migration Migration State Delta @EdPiairo, #devopsdayscph
  17. SCRIPTING GUIDELINES Deployment pipeline for databases • One script, one

    operation type, one object (small batches) • Merge conflicts management • Patterns identification • File system scripts history search @EdPiairo, #devopsdayscph
  18. CONTINOUS INTEGRATION Deployment pipeline for databases • Integrate and validate

    changes • Tests: Unit, Integration • Small batches, less risk • Considerations: • What should be tested? And When? • Can the application help on this? @EdPiairo, #devopsdayscph
  19. CONTINUOUS DELIVERY Deployment pipeline for databases • Delivering change(s) in

    the target environment • Considerations • Downtime • Time to recover • Affected applications @EdPiairo, #devopsdayscph
  20. FAILED DEPLOYMENT Deployment pipeline for databases • Rollback/roll forward scripts

    • Very fast • Please, do not make mistakes • It’s like working backwards • Backups (before deploy) • Safer but slower • Keep databases small • Avoid share databases between applications @EdPiairo, #devopsdayscph
  21. SCENARIO #1 Deployment pipeline for databases Source Control Continuous Integration

    Continuous Delivery APP DB • Independent deployment pipelines • High need of synchronization between DBA and development team @EdPiairo, #devopsdayscph
  22. SCENARIO #2 Deployment pipeline for databases Source Control Continuous Integration

    Continuous Delivery APP DB • Different code repositories • Independent CI process • The contact point will be the deployment moment @EdPiairo, #devopsdayscph
  23. SCENARIO #3 Deployment pipeline for databases Source Control Continuous Integration

    Continuous Delivery APP DB • Different code repositories • Connected/dependent CI process @EdPiairo, #devopsdayscph
  24. SCENARIO #4 Deployment pipeline for databases Source Control Continuous Integration

    Continuous Delivery APP DB • Share the some code repository, CI process and CD process • No need of synchronization • Promotes learning within teams (database code reviews) @EdPiairo, #devopsdayscph
  25. MY DEPLOYMENT PIPELINE DEFINITION Pipeline: Cultural and technical tool for

    managing changes in the software development process (should contemplate databases, applications and infrastructure). by me ;) Show me your pipeline and I will tell you how you work! Deployment pipeline for databases @EdPiairo, #devopsdayscph
  26. DEVOPS AND DATABASES Deployment pipeline for databases • DevOps way

    • Increase flow visibility • Increase feedback • Increase knowledge base @EdPiairo, #devopsdayscph
  27. READING MATERIAL Deployment pipeline for databases @EdPiairo, #devopsdayscph

  28. Q&A Deployment pipeline for databases @EdPiairo, #devopsdayscph @EdPiairo https://pt.linkedin.com/in/jesuspiairo eduardopiairo@gmail.com

    http://www.eduardopiairo.com/