About Me
Rob Richardson is a software craftsman building web properties in ASP.NET and Node. He's a Microsoft MVP, published author, frequent speaker at conferences, user groups, and community events, and a diligent teacher and student of high quality software development. You can find this and other talks on https://robrich.org/presentations and follow him on twitter at @rob_rich.
What is DLM?
It’s the complexity of managing databases that sits at the heart of Database Lifecycle Management (DLM), an approach that takes a wide-angled view across the software lifecycle, encouraging teams to use a range of processes and technology infrastructure to manage database changes.
source: http://assets.red-gate.com/products/vs-alm-whitepaper.pdf
What is DLM?
An super-set of
Application Lifecycle Management (ALM)
that accounts for Databases
What is ALM?
A methodical approach to software development that eliminates waste
Lean Manufacturing Process
Lean
- Just in time
- Focus on the customer
- Empower the team
- Plan for change
- Automate processes
Agile
- Just in time
- Focus on the customer
- Empower the team
- Plan for change
- Automate processes
DLM
What makes databases different?
- The master copy is not in text files
- Can't wipe it and build up a new one
Care for customer data
- Schema transitions (deployments)
- The rest of the time (production monitoring)
Pillars of ALM
- Governance
(requirements)
- Development
(design, build, and test)
- Operations
(deploying and monitoring)
DLM Adds to ALM
- data management and migration
- data monitoring and tuning
- data analysis
- data recovery
DLM Focus
- so everyone knows what's going on
- so everyone can help optimize to eliminate waste
- so we can better collaborate to build more customer value
DLM Focus
Delivering better software faster and cheaper
Deployment Pipeline Strategies
- This is not a technology problem -- you can't buy your way out of it
- This is also not a people problem -- you can't throw bodies at it
- This is both: optimize the business and leverage technology tools
- Focus on customer value
Better Production
- automate all the things
- running production maintenance tasks
- getting developers and BI prod data
- deployment tasks (not deployment approvals)
- roll-back tasks
- test earlier, practice often
- version maintenance scripts and frequent queries
- separately version deployment artifacts sent to production
- yes, they're "built resources"
- but this facilitates consistent, automated rollback
Better Development
- give developers isolated sandboxes with sanitized production data
- sanitize sensitive data
- shrink db size only if necessary
- don't sterilize it -- let them experience the weirdness that is production data
- let them burn the house down in a way that won't impact you
- version everything together:
- app code
- db schema
- QA tests
- automation scripts
- UX resources
- goal is that a single version number marks a point in time
Better Planning
- get into planning
- best when around the table is DBA, BI, App Dev, UX, tester
- fixing the design is cheaper than fixing and deploying code
- plan for application monitoring
- focus on conversation over documentation
- your job is not to win the court case
- your job is to deliver customer value
Developers
need to be on board
- measure everything
- include DBAs in planning and integration strategies
- support and encourage DBA participation in development
(no more "over the wall")
- encourage database versioning and testing
Management
needs to be on board
- then get out of the way
- trust your team
- why did you hire them?
DLM
In it's most basic form, DLM is two things:
- faster (smaller) work cycles
- cooperation and collaboration with the team
Key principles
- automate all the things
- version all the things
- collaborate on all the things