The Future of Database Development DevOps is a hot topic in today’s software development world. However most of the knowledge and experience with DevOps is based around application software and ignores the database. We will examine how the concepts and principles of DevOps can be applied to database development by looking at both automated comparison analysis as well as migration script management. Automated building, testing, and deployment of database changes will be shown. Steve Jones Editor, SQLServerCentral Redgate Software @way0utwest
Agenda Who am I? Getting Started on a Database Project Branching for Experiments Fixing Mistakes Easy Continuous Integration The Administrative side of containers
Steve Jones 28 years SQL Server data experience DBA, developer, manager, writer, speaker in a variety of companies and industries Founder, SQLServerCentral Currently the editor in chief, with the goal of helping you learn to be a better data professional every day Steve Jones DevOps Advocate, Redgate Software Editor, SQLServerCentral 11 year Microsoft Data Platform MVP steve I have been honored to be recognized by Microsoft for the as a Data Platform MVP working with SQL Server /in/way0utwest @way0utwest sjones@sqlservercentral.com www.voiceofthedba.com
Getting Started I got a new gig… They're letting me do web development!!!! I don’t want to worry about databases I don’t have SQL installed I have cloned the source code
SQL Server Shared Account database PostgreSQL Todo database
I get a login to Spawn (DBaaS)
Demo Getting a new developer started Nothing installed Cloned project Spawn login Yarn start
Branching A typical concern is I want to try something However, I don’t want to disturb other’s work Branches allow me to experiment and commit separately I can discard these, recreate these as needed, which means I want the database to do the same. I can merge in changes that work
Demo Branching - Checkout new branch - Getting a new data container
Oops, I did it again Often, I make some mistakes in development Usually, I can’t remember or don’t know the code to reset the database This is frustrating because app code just resets
Demo Reset Delete/change data Spawnctl reset data-container
Independent Validation with CI We want to check changes Avoid the "it works on my machine" I want my CI process to be simple
Demo Continuous Integration
Building Images DBA needs to help manage schema and data in the image How do I create a new image? Make changes and graduate Update a version and distribute out
Demo Container Management spawnctl save data-container demo-account-steve spawnctl graduate data-container demo-account-steve --name steveimage --team red-gate:sharks --tag v1 --revision rev.0 Container Management
Summary Containers make development easy(-ier) Handle branching easily for experimentation Reset immediately Parallelize testing with a database Lightweight and reduce setup DBAs still have control
The End www.voiceofthedba.com sjones@sqlservercentral.com @way0utwest /in/way0utwest
References
Images