Slide 1

Slide 1 text

DEPLOYMENT PIPELINE FOR DATABASES Eduardo Piairo @EdPiairo #WinOps Azure SQL Database, SQL Server

Slide 2

Slide 2 text

ABOUT ME Deployment pipeline for databases @EdPiairo, #WinOps @EdPiairo https://pt.linkedin.com/in/jesuspiairo [email protected] http://www.eduardopiairo.com/ Eduardo Piairo Friend of Redgate Operations Engineer DevOps Porto Founder

Slide 3

Slide 3 text

INDEX 1. Deployment pipeline 2. Database challenges 3. Deployment pipeline stages 4. Deployment pipeline scenarios 5. Final thoughts Deployment pipeline for databases @EdPiairo, #WinOps

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

DATABASE & DEPLOYMENT PIPELINE Deployment pipeline for databases Source Control Continuous Integration Continuous Delivery Database + Application @EdPiairo, #WinOps

Slide 8

Slide 8 text

WHAT’S SO SPECIAL ABOUT DATABASES? Deployment pipeline for databases @EdPiairo, #WinOps

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

DATABASE CHALLENGES Deployment pipeline for databases Databases become a bottleneck in an agile delivery process @EdPiairo, #WinOps

Slide 12

Slide 12 text

AUTOMATION Deployment pipeline for databases @EdPiairo, #WinOps

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

THE VALUE OF AUTOMATION Deployment pipeline for databases Fearless database changes @EdPiairo, #WinOps

Slide 15

Slide 15 text

SOURCE CONTROL Deployment pipeline for databases @EdPiairo, #WinOps SQL Script Fundamental resource

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

• 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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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)

Slide 26

Slide 26 text

DEMO Deployment pipeline for databases @EdPiairo, #WinOps

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

DEVOPS AND DATABASES Deployment pipeline for databases • DevOps way • Increase flow visibility • Increase feedback • Increase knowledge base @EdPiairo, #WinOps

Slide 29

Slide 29 text

READING MATERIAL Deployment pipeline for databases @EdPiairo, #WinOps

Slide 30

Slide 30 text

Q&A Deployment pipeline for databases @EdPiairo, #WinOps @EdPiairo https://pt.linkedin.com/in/jesuspiairo [email protected] http://www.eduardopiairo.com/