{{ !articles[0].partner.isSponsoringArticle ? "Platinum" : "Portal" }} Partner
architects,devops,theory,tools & methods

Reverse Engineering a DB for DevOps Excellence

Former ThoughtWorker Steve Moyer has written two blog entries on an aspect of an Agile mission we did a few years ago. He was the pivotal designer/implementer of the work.

The first blog entry was Regaining Agility in the Face of Legacy Databases

The second was Working With Legacy Databases: A Case Study

Both are very much worth a read generally, but they should be of particular interest to folks wishing to move control for DB creation to scripts under source-control, so that Continuous Integration can ‘reinforce value’ with each commit of code. Developers can benefit too by separately standing up a microcosm version of the stack, using scripts that took seconds to complete the creation and initial population of a schema. If devs are sharing a single DB now, and you’re using UI tools to modify that outside of source-control, then Steve’s words should be raked over.

OK, so in the case study Steve outlines the process he used. I’ll copy and paste for your convenience:

Phase 1: Generating a baseline schema (One person over a few days)
Phase 2: Generating an initial dataset (One person over ~3-4 Weeks)
Phase 3: Initial browser based testing and continuous integration (Two people over ~1 week)
Phase 4: Extending the team and moving forward (Ongoing effort across multiple distributed teams)

Pramod Sadlage is ThoughtWorks’ veteran database “agilizer” and co-wrote the book Refactoring Databases. It is nice to see more case-studies from the field, that facilitate a nimble usage management of table-shapes going forward.

Published at DZone with permission of {{ articles[0].authors[0].realName }}, DZone MVB. (source)

Opinions expressed by DZone contributors are their own.

{{ tag }}, {{tag}},

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}
{{ parent.authors[0].realName || parent.author}}

{{ parent.authors[0].tagline || parent.tagline }}

{{ parent.views }} ViewsClicks