Shift Left! Successful CI/CD For Your Database
Managing database schema migrations in an Agile, sprint-based team is often challenging and fraught with inconsistent tooling, developer experience, and limited DBA resources. Using your ORM of choice is often the path of least resistance, but quickly becomes error-prone and hard to manage as the project grows. Or worse yet, maybe your schema and change management is a folder full of poorly commented SQL scripts saved to a shared folder or local drive. Surely there's a better, SQL-centric way to manage databases as code, test changes, and deploy updates - right? Yes, there is! This session will explore database DevOps using popular open-source tools to manage database schema and code changes in a repeatable, maintainable way. I’ll start by discussing the differences between migration and state-based management. From there I’ll provide a feature overview for a handful of open-source and paid tools like Sqitch, Flyway, migra, Liquibase, and Postgres Compare, showing where they might fit into your current workflow. The session will conclude with a demo of Flyway to create a schema change from dev to prod through a CI/CD pipeline. By the end of the session, you'll be ready to tame your rogue application databases, managing changes and migrations with ease, and become the envy of the development team.
Prerequisites
Even if you've never put your database changes under source control, an understanding of Git and basic branching will be helpful. Because we'll be looking at how to automate database changes throughout the SDLC, having some experience with using a CI/CD pipeline like GitHub Actions, Azure Devops, GitLab pipelines, etc. will be a bonus but isn't necessary.
Take Aways
- What database DevOps is
- The benefits of moving database change management earlier in the pipeline
- Different tools and methodologies for managing database changes
- Features to look for in the tooling that you choose