"Managing complex changes to a database using a DevOps approach"
Change is hard and with databases it's even harder. A database is generally a single point of contact and you need to maintain the data before during and after a change. This leads many people to believe making change in a continuous delivery approach isn't possible for databases, at the end of the session you will see that is not true.
We've worked with many clients on successfully implementing continuous delivery for databases and whilst tooling is one part of the problem, mindset is a bigger one. The analogy of keeping the plane flying whilst changing the wings is very true. You cannot just take the old wings off and then put the new wings on. You have to make change in a controlled approach that keeps your system running.
In this session we will discuss the options you have for making change to your database, is it a separate service or is it contained within your application. These choices dictate how you can make change and how you handle the areas above. We like to think of a database just like any service in your architecture, with contracts and SLAs. As such making changes should be done just like you do with other services. This means considering backwards compatibility, versioning, data movement, temporary scaffolding and ordering of change.
We will walk through one example of a complex refactoring using the separate service approach. During this we will be making fundamental changes to the schema and data whilst maintaining availability and backwards compatibility to other systems.
At the end of the session you will understand the options you have for making change to your database in a continuous delivery environment, and have confidence that even the most complex refactoring can be achieved in an automated controlled way.