@rob_rich

Principles of DLM

by Rob Richardson

@rob_rich

https://robrich.org/

January 8, 2015

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?

Application lifecycle management (ALM) is the supervision of a software application from its initial planning through retirement.

source: http://searchsoftwarequality.techtarget.com/definition/application-lifecycle-management

What is ALM?

A methodical approach to software development that eliminates waste

Lean Manufacturing Process

From Toyota

  • Focus on the customer, eliminate waste
  • Continuously Improve
  • Empower the team
  • Optimize the whole
  • Plan for change
  • Automate processes
  • Build quality in

source: https://www.youtube.com/watch?v=8Tb-L-eiXdo

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)

ALM

Pillars of ALM

  • Governance
    (requirements)
  • Development
    (design, build, and test)
  • Operations
    (deploying and monitoring)

Pieces of ALM

  • requirements
  • software archtecture
  • development
  • testing
  • change management
    • feature development
    • maintenance
  • continuous integration
  • project management
  • release management
  • system retirement

source: http://en.wikipedia.org/wiki/Application_lifecycle_management

DLM Adds to ALM

  • data management and migration
  • data monitoring and tuning
  • data analysis
  • data recovery

DLM Adds to ALM

Additional data management, migration, and monitoring processes are sometimes required in DLM to safeguard data, but the broader benefits of continuous delivery by standardizing deployment processes through automation remain the same.

source: http://assets.red-gate.com/our-company/about/assets/solving-database-deployment-dlm.pdf

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

How do we get there?

DBA Focus

  • We don't like faster change
  • Our task is stability
  • Really our task is protection
  • Speed is not the enemy

source: https://www.youtube.com/watch?v=8Tb-L-eiXdo

Deployment Pipeline

source: https://www.youtube.com/watch?v=8Tb-L-eiXdo

We like to think of it the other way

Four Steps to building
a Deployment Pipeline

source: https://www.youtube.com/watch?v=8Tb-L-eiXdo

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