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.

Eduardo Piairo - Deployment pipeline for databases (Azure SQL Database, SQL Server)

The database development should not be handled differently from application development. Concepts like source control, continuous integration and continuous delivery in order not only to improve the database deployment process but also to narrow down the gap between applications and databases.

In this session will explore the different ways how to set up a deployment pipeline for databases. The database can be an Azure SQL Database or a database hosted in a SQL Server, the same concepts should be applied to both. I will explore the different challenges of the deployment pipeline steps: source control, continuous integration, continuous delivery, and how the decisions (migrations vs state approach for example) in each step influences the next steps.

The deployment pipeline can be built only for databases, or to include applications in the different steps (can even include infrastructure). I will explore the different/possible configurations of the deployment pipeline while articulating databases and applications.

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to comment

Eduardo Piairo - Deployment pipeline for databases (Azure SQL Database, SQL Server)

  1. 1. DEPLOYMENT PIPELINE FOR DATABASES Eduardo Piairo @EdPiairo #WinOpsAzure SQL Database, SQL Server
  2. 2. ABOUT ME Deployment pipeline for databases @EdPiairo, #WinOps @EdPiairo https://pt.linkedin.com/in/jesuspiairo eduardopiairo@gmail.com http://www.eduardopiairo.com/ Eduardo Piairo Friend of Redgate Operations Engineer DevOps Porto Founder
  3. 3. INDEX 1. Deployment pipeline 2. Database challenges 3. Deployment pipeline stages 4. Deployment pipeline scenarios 5. Final thoughts Deployment pipeline for databases @EdPiairo, #WinOps
  4. 4. PIPELINE DEFINITION In software engineering, a pipeline consists of a chain of processing elements (processes, threads, coroutines, functions, etc.), arranged so that the output of each element is the input of the next. by Wikipedia @ https://en.wikipedia.org/wiki/Pipeline_(software) Deployment pipeline for databases @EdPiairo, #WinOps
  5. 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, #WinOps
  6. 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, #WinOps
  7. 7. DATABASE & DEPLOYMENT PIPELINE Deployment pipeline for databases Source Control Continuous Integration Continuous Delivery Database + Application @EdPiairo, #WinOps
  8. 8. WHAT’S SO SPECIAL ABOUT DATABASES? Deployment pipeline for databases @EdPiairo, #WinOps
  9. 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, #WinOps
  10. 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, #WinOps
  11. 11. DATABASE CHALLENGES Deployment pipeline for databases Databases become a bottleneck in an agile delivery process @EdPiairo, #WinOps
  12. 12. AUTOMATION Deployment pipeline for databases @EdPiairo, #WinOps
  13. 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, #WinOps
  14. 14. THE VALUE OF AUTOMATION Deployment pipeline for databases Fearless database changes @EdPiairo, #WinOps
  15. 15. SOURCE CONTROL Deployment pipeline for databases @EdPiairo, #WinOps SQL Script Fundamental resource
  16. 16. 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 @EdPiairo, #WinOps
  17. 17. • State based solutions • How the database should be • Migrations based solutions • How the database should change MIGRATIONS VS STATE Deployment pipeline for databases SQL Source Control @EdPiairo, #WinOps Migration Migration State Delta
  18. 18. 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, #WinOps
  19. 19. 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, #WinOps
  20. 20. CONTINUOUS DELIVERY Deployment pipeline for databases • Delivering change(s) in the target environment • Considerations • Downtime • Time to recover • Small batches – low risk • Affected applications @EdPiairo, #WinOps
  21. 21. 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, #WinOps
  22. 22. SCENARIO #1 Deployment pipeline for databases Source Control Continuous Integration Continuous Delivery APP DB @EdPiairo, #WinOps • Independent deployment pipelines • High need of synchronization between DBA and development team
  23. 23. SCENARIO #2 Deployment pipeline for databases Source Control Continuous Integration Continuous Delivery APP DB @EdPiairo, #WinOps • Different code repositories • Independent CI process • The contact point will be the deployment moment
  24. 24. SCENARIO #3 Deployment pipeline for databases Source Control Continuous Integration Continuous Delivery APP DB @EdPiairo, #WinOps • Different code repositories • Connected/dependent CI process
  25. 25. SCENARIO #4 Deployment pipeline for databases Source Control Continuous Integration Continuous Delivery APP DB @EdPiairo, #WinOps • Share the some code repository, CI process and CD process • No need of synchronization • Promotes learning within teams (database code reviews)
  26. 26. DEMO Deployment pipeline for databases @EdPiairo, #WinOps
  27. 27. 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 the way you work! Deployment pipeline for databases @EdPiairo, #WinOps
  28. 28. DEVOPS AND DATABASES Deployment pipeline for databases • DevOps way • Increase flow visibility • Increase feedback • Increase knowledge base @EdPiairo, #WinOps
  29. 29. READING MATERIAL Deployment pipeline for databases @EdPiairo, #WinOps
  30. 30. Q&A Deployment pipeline for databases @EdPiairo, #WinOps @EdPiairo https://pt.linkedin.com/in/jesuspiairo eduardopiairo@gmail.com http://www.eduardopiairo.com/

×