SlideShare a Scribd company logo
1 of 52
Download to read offline
Agile Database development
     (with Visual Studio)
        Jose Luis Soria
         Göteborg, April 2012
Jose Luis Soria
• ALM Team Lead at
  Plain Concepts
• Professional Scrum
  Trainer at scrum.org

    jlsoria@plainconcepts.com

    http://geeks.ms/blogs/jlsoria

    @jlsoriat
Agenda
•   Database development
•   Agile development
•   Agile database development
•   Practices and tools
Database development
How databases work
• Databases are different from
  application code
  – Application code is not changed while
    running (even in dynamic languages, changes are not
    persisted)
  – Databases are changed while running
     • Changes in data or database objects, made
       while the database is online, have to be taken
       into account while developing
Databases are changed while running




  Take running database changes into
       account while developing.
Have a proper policy for changes in place
Databases across environments
• We have to deal with several
  environments while developing
• Each environment has its own
  database
• These databases are used for different
  things
• These databases are in different states
  and versions, and contain different
  data
Databases are different
        across environments




Be prepared to change different things
        in different databases
Applying changes to databases
• Most times, any particular change can
  only be made one time. Once the
  change has been made, it is not
  possible to make it again
• Changes are difficult to be undone
Changes to databases are lasting
        and hard to be undone




Have a proper policy for changes in place.
    Have a proper policy for undoing
           changes in place.
Agile development
Agile?
Twelve principles of Agile
Our highest priority is to satisfy the customer   Working software is the primary measure of
through early and continuous delivery of          progress.
valuable software.
Welcome changing requirements, even late          Agile processes promote sustainable
in development. Agile processes harness           development. The sponsors, developers, and
change for the customer's competitive             users should be able to maintain a constant
advantage.                                        pace indefinitely.
Deliver working software frequently, from a       Continuous attention to technical excellence
couple of weeks to a couple of months, with       and good design enhances agility.
a preference to the shorter timescale.
Business people and developers must work          Simplicity--the art of maximizing the amount
together daily throughout the project.            of work not done--is essential.
Build projects around motivated individuals.      The best architectures, requirements, and
Give them the environment and support they        designs emerge from self-organizing teams.
need, and trust them to get the job done.
The most efficient and effective method of        At regular intervals, the team reflects on how
conveying information to and within a             to become more effective, then tunes and
development team is face-to-face                  adjusts its behavior accordingly.
conversation.
Twelve principles of Agile
Our highest priority is to satisfy the customer   Working software is the primary measure of
through early and continuous delivery of          progress.
valuable software.
Welcome changing requirements, even late          Agile processes promote sustainable
in development. Agile processes harness           development. The sponsors, developers, and
change for the customer's competitive             users should be able to maintain a constant
advantage.                                        pace indefinitely.
Deliver working software frequently, from a       Continuous attention to technical excellence
couple of weeks to a couple of months, with       and good design enhances agility.
a preference to the shorter timescale.
Business people and developers must work          Simplicity--the art of maximizing the amount
together daily throughout the project.            of work not done--is essential.
Build projects around motivated individuals.      The best architectures, requirements, and
Give them the environment and support they        designs emerge from self-organizing teams.
need, and trust them to get the job done.
The most efficient and effective method of        At regular intervals, the team reflects on how
conveying information to and within a             to become more effective, then tunes and
development team is face-to-face                  adjusts its behavior accordingly.
conversation.
Agile database development
Early and continuous delivery of   Working software is the primary
valuable software.                 measure of progress.
Welcome changing requirements.     Sustainable development, constant
                                   pace.
Deliver working software           Continuous attention to technical
frequently.                        excellence and good design.

Business people and developers     Simplicity.
must work together.
Build projects around motivated    The best architectures,
individuals. Give them the         requirements, and designs emerge.
environment and support they
need.
What does it mean?
Early and continuous delivery of
          valuable software




Ability to deliver in a simple and quick
                    way
Welcome changing requirements




  Ability to introduce changes
          at any moment
Deliver working software frequently




Ability to deliver in a simple and quick
                    way
Business people and developers
       must work together




Development depends on business
Build projects around motivated individuals.
  Give them the environment they need




       Proper environment and tools
Working software
is the primary measure of progress




Development depends on business.
           Keep always
a functional version of the software
Sustainable development.
      Constant pace




Ability to introduce changes
        at any moment
Continuous attention to technical
  excellence and good design




Best practices: CI, refactoring, TDD…
Simplicity




       Reuse.
Work in small chunks
The best architectures, requirements
       and designs emerge




   Ability to introduce changes
           at any moment
Agile database development
Agile database development
• Be able to deliver database changes in a simple and quick
  way
• Be able to introduce database changes at any moment
• Make database development dependent on business
• Set up a proper environment and tools
• Keep always a functional version of the database
• Use best practices: CI, refactoring, TDD…
• Reuse
• Work in small chunks
• Take running database changes into account while
  developing
• Have a proper policy for changes in place
• Have a proper policy for undoing changes in place
• Be prepared to change different things in different databases
How to do it?: practices & tools
Practices and tools
• Are going to help us to do database
  development properly
• Tools and demos for this session deal with
  relational databases (SQL Server). But
  principles are the same for other
  scenarios:
  – NoSQL (MongoDB, Azure Storage…)
  – ORMs (Entity Framework, NHibernate…)
• Most things will also work with VS 11 and
  SQL Server Data Tools
Version control
• Treat database code like any other source
  code
  – Enable several people to work on the same
    code base
  – Make modifications available to the rest of the
    team in a controlled way
  – Make it possible to set up Continuous Integration
  – Use versioning features: compare, restore old
    version, combine…
• Use the same code, schema or approach to
  migrate any database in your environment
Demo
Version control for databases
Coding aids
• Visual Studio provides several aids for
  working with database code
  – Intellisense
  – Tracking and resolving dependencies
  – Static analysis
  – Refactoring
Demo
Coding aids
Isolated development
           environment
• Have each developer work in his own
  environment, which includes the
  database
  – Self-contained
  – Resembling production environment
  – Automated (deployment, testing, etc.)
Demo
Isolated development
environment
Unit tests
• Sometimes, database code can contain
  logic
• Database code can benefit from
  automated unit testing the same way as
  application code
  –   Find problems early
  –   Facilitate change
  –   Simplify integration
  –   Self-document
  –   Drive the design
Demo
Database unit testing
Continuous Integration
• Early warning of conflicting changes
• Immediate unit testing of all changes
• Constant availability of a "current"
  build for testing, demo, or release
  purposes
• Immediate feedback
• Modular, less complex code
• Quality code
Continuous Integration
               principles
•   Maintain a code repository
•   Automate the build
•   Make the build self-testing
•   Everyone commits to the baseline every day
•   Every commit (to baseline) should be built
•   Keep the build fast
•   Test in a clone of the production environment
•   Make it easy to get the latest deliverables
•   Everyone can see the results of the latest build
•   Automate deployment
Continuous Integration
               principles
•   Maintain a code repository
•   Automate the build
•   Make the build self-testing
•   Everyone commits to the baseline every day
•   Every commit (to baseline) should be built
•   Keep the build fast
•   Test in a clone of the production environment
•   Make it easy to get the latest deliverables
•   Everyone can see the results of the latest build
•   Automate deployment
Demo
Database continuous
integration
Requirements drive changes
• Make changes in small chunks
• Changes are originated by
  requirements
• Make different changes for different
  requirements
Continuous deployment to any
        environment
• Automating database migrations to
  any environment helps us:
  – Easily roll forward or back
  – Minimize disruption for changes
  – Maximize reliability of deployment process
  – Work incrementally (including DBAs)
Continuous deployment process
• Obtain the correct version of the
  database
• Prepare the environment
• Initialize database and instance
• Initialize schema
• Initialize user credentials
• Populate database with reference data
• Have a rollback mechanism in place
Demo
Continuous deployment
Database sync vs. delta scripts
• Syncing databases can lead to
  uncontrolled changes across
  environments
• It’s better to make changes the same
  way for all the environments
• We can use numerated delta scripts
  and tools like DBDeploy
Database sync vs. delta scripts
• Delta scripts
   – Great for greenfield development and Continuous
     Integration
• Database sync
   –   For legacy databases
   –   For non-agile, non-CI projects
   –   For changing data
   –   When you don’t have database under version control
• Other options
   – ORMs usually have their own mechanism to deal with
     database changes. For example, migrations in Entity
     Framework
Dealing with data
• Reference data can be scripted
• Changes (delta scripts) should deal
  with existing data
• There are several ways to obtain data
  for testing
  – Using the application API
  – Using backups
  – Using data comparison tools
  – Using data generation tools
Have we covered everything?
• Be able to deliver database changes in a simple and quick
  way
• Be able to introduce database changes at any moment
• Make database development dependent on business
• Set up a proper environment and tools
• Keep always a functional version of the database
• Use best practices: CI, refactoring, TDD…
• Reuse
• Work in small chunks
• Take running database changes into account while
  developing
• Have a proper policy for changes in place
• Have a proper policy for undoing changes in place
• Be prepared to change different things in different databases
Any questions?
•   Visual Studio Database tools http://bit.ly/dyN3wv
•   VSDBCMD http://bit.ly/vB6G1
•   Database changes done right http://bit.ly/wTOY01
•   Continuous delivery http://continuousdelivery.com/




       jlsoria@plainconcepts.com

       @jlsoriat

More Related Content

Similar to Agile Database Development - SDC2012

DevOps, Agile methods and Continuous Improvement in the Software development ...
DevOps, Agile methods and Continuous Improvement in the Software development ...DevOps, Agile methods and Continuous Improvement in the Software development ...
DevOps, Agile methods and Continuous Improvement in the Software development ...Paulo Traça
 
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...Scrum Bangalore
 
Introduction to Agile Software Development Process
Introduction to Agile Software Development ProcessIntroduction to Agile Software Development Process
Introduction to Agile Software Development ProcessSoftware Park Thailand
 
When agility meets software quality
When agility meets software qualityWhen agility meets software quality
When agility meets software qualityBabak Khorrami
 
Heart of agile by Pierre Hervouet
Heart of agile by Pierre HervouetHeart of agile by Pierre Hervouet
Heart of agile by Pierre HervouetAgile ME
 
Introduction To Agile Refresh Savannah July20 2010 V1 4
Introduction To Agile Refresh Savannah July20 2010 V1 4Introduction To Agile Refresh Savannah July20 2010 V1 4
Introduction To Agile Refresh Savannah July20 2010 V1 4Marvin Heery
 
1221 raise expectations_for_the_ always_on_enterprise
1221 raise expectations_for_the_ always_on_enterprise1221 raise expectations_for_the_ always_on_enterprise
1221 raise expectations_for_the_ always_on_enterpriseScott Simmons
 
Agile Overview Session
Agile Overview SessionAgile Overview Session
Agile Overview SessionBahaa Farouk
 
10.15.2014 dallas ws_brian_d_dn_live workshop enterpise agility_cust
10.15.2014 dallas ws_brian_d_dn_live workshop enterpise agility_cust10.15.2014 dallas ws_brian_d_dn_live workshop enterpise agility_cust
10.15.2014 dallas ws_brian_d_dn_live workshop enterpise agility_custdennisn129
 
DevOps Online Training
DevOps Online Training DevOps Online Training
DevOps Online Training VijayVijji8
 
DevOps Online Training
DevOps Online TrainingDevOps Online Training
DevOps Online TrainingVijayVijji8
 
Agile Development Overview
Agile Development OverviewAgile Development Overview
Agile Development OverviewMark Kovacevich
 

Similar to Agile Database Development - SDC2012 (20)

module I.pptx
module I.pptxmodule I.pptx
module I.pptx
 
DevOps, Agile methods and Continuous Improvement in the Software development ...
DevOps, Agile methods and Continuous Improvement in the Software development ...DevOps, Agile methods and Continuous Improvement in the Software development ...
DevOps, Agile methods and Continuous Improvement in the Software development ...
 
The Agile Movement
The Agile MovementThe Agile Movement
The Agile Movement
 
Fundamentals of Agile
Fundamentals of AgileFundamentals of Agile
Fundamentals of Agile
 
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
 
Introduction to Agile Software Development Process
Introduction to Agile Software Development ProcessIntroduction to Agile Software Development Process
Introduction to Agile Software Development Process
 
Agile 101
Agile 101 Agile 101
Agile 101
 
When agility meets software quality
When agility meets software qualityWhen agility meets software quality
When agility meets software quality
 
Web engineering
Web engineeringWeb engineering
Web engineering
 
Heart of agile by Pierre Hervouet
Heart of agile by Pierre HervouetHeart of agile by Pierre Hervouet
Heart of agile by Pierre Hervouet
 
Devops Mindset Essentials
Devops Mindset EssentialsDevops Mindset Essentials
Devops Mindset Essentials
 
Introduction To Agile Refresh Savannah July20 2010 V1 4
Introduction To Agile Refresh Savannah July20 2010 V1 4Introduction To Agile Refresh Savannah July20 2010 V1 4
Introduction To Agile Refresh Savannah July20 2010 V1 4
 
1221 raise expectations_for_the_ always_on_enterprise
1221 raise expectations_for_the_ always_on_enterprise1221 raise expectations_for_the_ always_on_enterprise
1221 raise expectations_for_the_ always_on_enterprise
 
Lect7
Lect7Lect7
Lect7
 
Lect7
Lect7Lect7
Lect7
 
Agile Overview Session
Agile Overview SessionAgile Overview Session
Agile Overview Session
 
10.15.2014 dallas ws_brian_d_dn_live workshop enterpise agility_cust
10.15.2014 dallas ws_brian_d_dn_live workshop enterpise agility_cust10.15.2014 dallas ws_brian_d_dn_live workshop enterpise agility_cust
10.15.2014 dallas ws_brian_d_dn_live workshop enterpise agility_cust
 
DevOps Online Training
DevOps Online Training DevOps Online Training
DevOps Online Training
 
DevOps Online Training
DevOps Online TrainingDevOps Online Training
DevOps Online Training
 
Agile Development Overview
Agile Development OverviewAgile Development Overview
Agile Development Overview
 

More from Jose Luis Soria

Project Portfolio Management with Kanban in an international company
Project Portfolio Management with Kanban in an international companyProject Portfolio Management with Kanban in an international company
Project Portfolio Management with Kanban in an international companyJose Luis Soria
 
Lean Kanban at Ria - Lean Kanban Southern Europe 2015
Lean Kanban at Ria - Lean Kanban Southern Europe 2015Lean Kanban at Ria - Lean Kanban Southern Europe 2015
Lean Kanban at Ria - Lean Kanban Southern Europe 2015Jose Luis Soria
 
Things to do with the time you’ll save thanks to VSO
Things to do with the time you’ll save thanks to VSO Things to do with the time you’ll save thanks to VSO
Things to do with the time you’ll save thanks to VSO Jose Luis Soria
 
Jose Luis Soria - Codemotion 2014 - Designing a release pipeline
Jose Luis Soria - Codemotion 2014 - Designing a release pipelineJose Luis Soria - Codemotion 2014 - Designing a release pipeline
Jose Luis Soria - Codemotion 2014 - Designing a release pipelineJose Luis Soria
 
Jose Luis Soria - XP2014 - Designing a Release Pipeline
Jose Luis Soria - XP2014 - Designing a Release PipelineJose Luis Soria - XP2014 - Designing a Release Pipeline
Jose Luis Soria - XP2014 - Designing a Release PipelineJose Luis Soria
 
Jose Luis Soria - Microsoft Plataforma Empresarial 2014 - ALM como factor dif...
Jose Luis Soria - Microsoft Plataforma Empresarial 2014 - ALM como factor dif...Jose Luis Soria - Microsoft Plataforma Empresarial 2014 - ALM como factor dif...
Jose Luis Soria - Microsoft Plataforma Empresarial 2014 - ALM como factor dif...Jose Luis Soria
 
Alm Forum 2014 - Jose Luis Soria - Patterns and anti-patterns for (Continuous...
Alm Forum 2014 - Jose Luis Soria - Patterns and anti-patterns for (Continuous...Alm Forum 2014 - Jose Luis Soria - Patterns and anti-patterns for (Continuous...
Alm Forum 2014 - Jose Luis Soria - Patterns and anti-patterns for (Continuous...Jose Luis Soria
 
Proyectos ágiles con Team Foundation Server - COITT
Proyectos ágiles con Team Foundation Server - COITTProyectos ágiles con Team Foundation Server - COITT
Proyectos ágiles con Team Foundation Server - COITTJose Luis Soria
 
ALM Tour 2013 - Responderá mi aplicación en el mundo real?
ALM Tour 2013 - Responderá mi aplicación en el mundo real?ALM Tour 2013 - Responderá mi aplicación en el mundo real?
ALM Tour 2013 - Responderá mi aplicación en el mundo real?Jose Luis Soria
 
ALM Tour 2013 - Proyectos bajo control - asegurando la entrega de valor
ALM Tour 2013 - Proyectos bajo control - asegurando la entrega de valorALM Tour 2013 - Proyectos bajo control - asegurando la entrega de valor
ALM Tour 2013 - Proyectos bajo control - asegurando la entrega de valorJose Luis Soria
 
ALM Tour 2013 - Entregar a tiempo y sin errores
ALM Tour 2013 - Entregar a tiempo y sin erroresALM Tour 2013 - Entregar a tiempo y sin errores
ALM Tour 2013 - Entregar a tiempo y sin erroresJose Luis Soria
 
Bcn devcon jose luis soria - patterns & antipatterns for delivery
Bcn devcon   jose luis soria - patterns & antipatterns for deliveryBcn devcon   jose luis soria - patterns & antipatterns for delivery
Bcn devcon jose luis soria - patterns & antipatterns for deliveryJose Luis Soria
 
Real World Agile Roadshow 2013 - Planificación y Arquitectura Ágil
Real World Agile Roadshow 2013 - Planificación y Arquitectura ÁgilReal World Agile Roadshow 2013 - Planificación y Arquitectura Ágil
Real World Agile Roadshow 2013 - Planificación y Arquitectura ÁgilJose Luis Soria
 
ALM Summit 3 - Setting up a Continuous Delivery Deployment Pipeline with TFS
ALM Summit 3 - Setting up a Continuous Delivery Deployment Pipeline with TFSALM Summit 3 - Setting up a Continuous Delivery Deployment Pipeline with TFS
ALM Summit 3 - Setting up a Continuous Delivery Deployment Pipeline with TFSJose Luis Soria
 
Roadshow ALM Calidad 2013 - Infraestructura de pruebas - Jose Luis Soria
Roadshow ALM Calidad 2013 - Infraestructura de pruebas - Jose Luis SoriaRoadshow ALM Calidad 2013 - Infraestructura de pruebas - Jose Luis Soria
Roadshow ALM Calidad 2013 - Infraestructura de pruebas - Jose Luis SoriaJose Luis Soria
 
Jose Luis Soria - Visual Studio Tour Plain Concepts - DevOps
Jose Luis Soria - Visual Studio Tour Plain Concepts - DevOpsJose Luis Soria - Visual Studio Tour Plain Concepts - DevOps
Jose Luis Soria - Visual Studio Tour Plain Concepts - DevOpsJose Luis Soria
 
Visual Studio Tour Plain Concepts - ALM para Windows 8
Visual Studio Tour Plain Concepts - ALM para Windows 8Visual Studio Tour Plain Concepts - ALM para Windows 8
Visual Studio Tour Plain Concepts - ALM para Windows 8Jose Luis Soria
 
Jose Luis Soria - CAS2012 - Cargo cult Agile training & coaching
Jose Luis Soria - CAS2012 - Cargo cult Agile training & coachingJose Luis Soria - CAS2012 - Cargo cult Agile training & coaching
Jose Luis Soria - CAS2012 - Cargo cult Agile training & coachingJose Luis Soria
 
Cargo Cult Agile training & coaching
Cargo Cult Agile training & coachingCargo Cult Agile training & coaching
Cargo Cult Agile training & coachingJose Luis Soria
 
Destino la Nube 2012 - ALM para Azure
Destino la Nube 2012 - ALM para AzureDestino la Nube 2012 - ALM para Azure
Destino la Nube 2012 - ALM para AzureJose Luis Soria
 

More from Jose Luis Soria (20)

Project Portfolio Management with Kanban in an international company
Project Portfolio Management with Kanban in an international companyProject Portfolio Management with Kanban in an international company
Project Portfolio Management with Kanban in an international company
 
Lean Kanban at Ria - Lean Kanban Southern Europe 2015
Lean Kanban at Ria - Lean Kanban Southern Europe 2015Lean Kanban at Ria - Lean Kanban Southern Europe 2015
Lean Kanban at Ria - Lean Kanban Southern Europe 2015
 
Things to do with the time you’ll save thanks to VSO
Things to do with the time you’ll save thanks to VSO Things to do with the time you’ll save thanks to VSO
Things to do with the time you’ll save thanks to VSO
 
Jose Luis Soria - Codemotion 2014 - Designing a release pipeline
Jose Luis Soria - Codemotion 2014 - Designing a release pipelineJose Luis Soria - Codemotion 2014 - Designing a release pipeline
Jose Luis Soria - Codemotion 2014 - Designing a release pipeline
 
Jose Luis Soria - XP2014 - Designing a Release Pipeline
Jose Luis Soria - XP2014 - Designing a Release PipelineJose Luis Soria - XP2014 - Designing a Release Pipeline
Jose Luis Soria - XP2014 - Designing a Release Pipeline
 
Jose Luis Soria - Microsoft Plataforma Empresarial 2014 - ALM como factor dif...
Jose Luis Soria - Microsoft Plataforma Empresarial 2014 - ALM como factor dif...Jose Luis Soria - Microsoft Plataforma Empresarial 2014 - ALM como factor dif...
Jose Luis Soria - Microsoft Plataforma Empresarial 2014 - ALM como factor dif...
 
Alm Forum 2014 - Jose Luis Soria - Patterns and anti-patterns for (Continuous...
Alm Forum 2014 - Jose Luis Soria - Patterns and anti-patterns for (Continuous...Alm Forum 2014 - Jose Luis Soria - Patterns and anti-patterns for (Continuous...
Alm Forum 2014 - Jose Luis Soria - Patterns and anti-patterns for (Continuous...
 
Proyectos ágiles con Team Foundation Server - COITT
Proyectos ágiles con Team Foundation Server - COITTProyectos ágiles con Team Foundation Server - COITT
Proyectos ágiles con Team Foundation Server - COITT
 
ALM Tour 2013 - Responderá mi aplicación en el mundo real?
ALM Tour 2013 - Responderá mi aplicación en el mundo real?ALM Tour 2013 - Responderá mi aplicación en el mundo real?
ALM Tour 2013 - Responderá mi aplicación en el mundo real?
 
ALM Tour 2013 - Proyectos bajo control - asegurando la entrega de valor
ALM Tour 2013 - Proyectos bajo control - asegurando la entrega de valorALM Tour 2013 - Proyectos bajo control - asegurando la entrega de valor
ALM Tour 2013 - Proyectos bajo control - asegurando la entrega de valor
 
ALM Tour 2013 - Entregar a tiempo y sin errores
ALM Tour 2013 - Entregar a tiempo y sin erroresALM Tour 2013 - Entregar a tiempo y sin errores
ALM Tour 2013 - Entregar a tiempo y sin errores
 
Bcn devcon jose luis soria - patterns & antipatterns for delivery
Bcn devcon   jose luis soria - patterns & antipatterns for deliveryBcn devcon   jose luis soria - patterns & antipatterns for delivery
Bcn devcon jose luis soria - patterns & antipatterns for delivery
 
Real World Agile Roadshow 2013 - Planificación y Arquitectura Ágil
Real World Agile Roadshow 2013 - Planificación y Arquitectura ÁgilReal World Agile Roadshow 2013 - Planificación y Arquitectura Ágil
Real World Agile Roadshow 2013 - Planificación y Arquitectura Ágil
 
ALM Summit 3 - Setting up a Continuous Delivery Deployment Pipeline with TFS
ALM Summit 3 - Setting up a Continuous Delivery Deployment Pipeline with TFSALM Summit 3 - Setting up a Continuous Delivery Deployment Pipeline with TFS
ALM Summit 3 - Setting up a Continuous Delivery Deployment Pipeline with TFS
 
Roadshow ALM Calidad 2013 - Infraestructura de pruebas - Jose Luis Soria
Roadshow ALM Calidad 2013 - Infraestructura de pruebas - Jose Luis SoriaRoadshow ALM Calidad 2013 - Infraestructura de pruebas - Jose Luis Soria
Roadshow ALM Calidad 2013 - Infraestructura de pruebas - Jose Luis Soria
 
Jose Luis Soria - Visual Studio Tour Plain Concepts - DevOps
Jose Luis Soria - Visual Studio Tour Plain Concepts - DevOpsJose Luis Soria - Visual Studio Tour Plain Concepts - DevOps
Jose Luis Soria - Visual Studio Tour Plain Concepts - DevOps
 
Visual Studio Tour Plain Concepts - ALM para Windows 8
Visual Studio Tour Plain Concepts - ALM para Windows 8Visual Studio Tour Plain Concepts - ALM para Windows 8
Visual Studio Tour Plain Concepts - ALM para Windows 8
 
Jose Luis Soria - CAS2012 - Cargo cult Agile training & coaching
Jose Luis Soria - CAS2012 - Cargo cult Agile training & coachingJose Luis Soria - CAS2012 - Cargo cult Agile training & coaching
Jose Luis Soria - CAS2012 - Cargo cult Agile training & coaching
 
Cargo Cult Agile training & coaching
Cargo Cult Agile training & coachingCargo Cult Agile training & coaching
Cargo Cult Agile training & coaching
 
Destino la Nube 2012 - ALM para Azure
Destino la Nube 2012 - ALM para AzureDestino la Nube 2012 - ALM para Azure
Destino la Nube 2012 - ALM para Azure
 

Recently uploaded

Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 

Recently uploaded (20)

DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 

Agile Database Development - SDC2012

  • 1. Agile Database development (with Visual Studio) Jose Luis Soria Göteborg, April 2012
  • 2. Jose Luis Soria • ALM Team Lead at Plain Concepts • Professional Scrum Trainer at scrum.org jlsoria@plainconcepts.com http://geeks.ms/blogs/jlsoria @jlsoriat
  • 3. Agenda • Database development • Agile development • Agile database development • Practices and tools
  • 5. How databases work • Databases are different from application code – Application code is not changed while running (even in dynamic languages, changes are not persisted) – Databases are changed while running • Changes in data or database objects, made while the database is online, have to be taken into account while developing
  • 6.
  • 7. Databases are changed while running Take running database changes into account while developing. Have a proper policy for changes in place
  • 8. Databases across environments • We have to deal with several environments while developing • Each environment has its own database • These databases are used for different things • These databases are in different states and versions, and contain different data
  • 9. Databases are different across environments Be prepared to change different things in different databases
  • 10. Applying changes to databases • Most times, any particular change can only be made one time. Once the change has been made, it is not possible to make it again • Changes are difficult to be undone
  • 11. Changes to databases are lasting and hard to be undone Have a proper policy for changes in place. Have a proper policy for undoing changes in place.
  • 14. Twelve principles of Agile Our highest priority is to satisfy the customer Working software is the primary measure of through early and continuous delivery of progress. valuable software. Welcome changing requirements, even late Agile processes promote sustainable in development. Agile processes harness development. The sponsors, developers, and change for the customer's competitive users should be able to maintain a constant advantage. pace indefinitely. Deliver working software frequently, from a Continuous attention to technical excellence couple of weeks to a couple of months, with and good design enhances agility. a preference to the shorter timescale. Business people and developers must work Simplicity--the art of maximizing the amount together daily throughout the project. of work not done--is essential. Build projects around motivated individuals. The best architectures, requirements, and Give them the environment and support they designs emerge from self-organizing teams. need, and trust them to get the job done. The most efficient and effective method of At regular intervals, the team reflects on how conveying information to and within a to become more effective, then tunes and development team is face-to-face adjusts its behavior accordingly. conversation.
  • 15. Twelve principles of Agile Our highest priority is to satisfy the customer Working software is the primary measure of through early and continuous delivery of progress. valuable software. Welcome changing requirements, even late Agile processes promote sustainable in development. Agile processes harness development. The sponsors, developers, and change for the customer's competitive users should be able to maintain a constant advantage. pace indefinitely. Deliver working software frequently, from a Continuous attention to technical excellence couple of weeks to a couple of months, with and good design enhances agility. a preference to the shorter timescale. Business people and developers must work Simplicity--the art of maximizing the amount together daily throughout the project. of work not done--is essential. Build projects around motivated individuals. The best architectures, requirements, and Give them the environment and support they designs emerge from self-organizing teams. need, and trust them to get the job done. The most efficient and effective method of At regular intervals, the team reflects on how conveying information to and within a to become more effective, then tunes and development team is face-to-face adjusts its behavior accordingly. conversation.
  • 16. Agile database development Early and continuous delivery of Working software is the primary valuable software. measure of progress. Welcome changing requirements. Sustainable development, constant pace. Deliver working software Continuous attention to technical frequently. excellence and good design. Business people and developers Simplicity. must work together. Build projects around motivated The best architectures, individuals. Give them the requirements, and designs emerge. environment and support they need.
  • 17. What does it mean?
  • 18. Early and continuous delivery of valuable software Ability to deliver in a simple and quick way
  • 19. Welcome changing requirements Ability to introduce changes at any moment
  • 20. Deliver working software frequently Ability to deliver in a simple and quick way
  • 21. Business people and developers must work together Development depends on business
  • 22. Build projects around motivated individuals. Give them the environment they need Proper environment and tools
  • 23. Working software is the primary measure of progress Development depends on business. Keep always a functional version of the software
  • 24. Sustainable development. Constant pace Ability to introduce changes at any moment
  • 25. Continuous attention to technical excellence and good design Best practices: CI, refactoring, TDD…
  • 26. Simplicity Reuse. Work in small chunks
  • 27. The best architectures, requirements and designs emerge Ability to introduce changes at any moment
  • 29. Agile database development • Be able to deliver database changes in a simple and quick way • Be able to introduce database changes at any moment • Make database development dependent on business • Set up a proper environment and tools • Keep always a functional version of the database • Use best practices: CI, refactoring, TDD… • Reuse • Work in small chunks • Take running database changes into account while developing • Have a proper policy for changes in place • Have a proper policy for undoing changes in place • Be prepared to change different things in different databases
  • 30. How to do it?: practices & tools
  • 31. Practices and tools • Are going to help us to do database development properly • Tools and demos for this session deal with relational databases (SQL Server). But principles are the same for other scenarios: – NoSQL (MongoDB, Azure Storage…) – ORMs (Entity Framework, NHibernate…) • Most things will also work with VS 11 and SQL Server Data Tools
  • 32. Version control • Treat database code like any other source code – Enable several people to work on the same code base – Make modifications available to the rest of the team in a controlled way – Make it possible to set up Continuous Integration – Use versioning features: compare, restore old version, combine… • Use the same code, schema or approach to migrate any database in your environment
  • 34. Coding aids • Visual Studio provides several aids for working with database code – Intellisense – Tracking and resolving dependencies – Static analysis – Refactoring
  • 36. Isolated development environment • Have each developer work in his own environment, which includes the database – Self-contained – Resembling production environment – Automated (deployment, testing, etc.)
  • 38. Unit tests • Sometimes, database code can contain logic • Database code can benefit from automated unit testing the same way as application code – Find problems early – Facilitate change – Simplify integration – Self-document – Drive the design
  • 40. Continuous Integration • Early warning of conflicting changes • Immediate unit testing of all changes • Constant availability of a "current" build for testing, demo, or release purposes • Immediate feedback • Modular, less complex code • Quality code
  • 41. Continuous Integration principles • Maintain a code repository • Automate the build • Make the build self-testing • Everyone commits to the baseline every day • Every commit (to baseline) should be built • Keep the build fast • Test in a clone of the production environment • Make it easy to get the latest deliverables • Everyone can see the results of the latest build • Automate deployment
  • 42. Continuous Integration principles • Maintain a code repository • Automate the build • Make the build self-testing • Everyone commits to the baseline every day • Every commit (to baseline) should be built • Keep the build fast • Test in a clone of the production environment • Make it easy to get the latest deliverables • Everyone can see the results of the latest build • Automate deployment
  • 44. Requirements drive changes • Make changes in small chunks • Changes are originated by requirements • Make different changes for different requirements
  • 45. Continuous deployment to any environment • Automating database migrations to any environment helps us: – Easily roll forward or back – Minimize disruption for changes – Maximize reliability of deployment process – Work incrementally (including DBAs)
  • 46. Continuous deployment process • Obtain the correct version of the database • Prepare the environment • Initialize database and instance • Initialize schema • Initialize user credentials • Populate database with reference data • Have a rollback mechanism in place
  • 48. Database sync vs. delta scripts • Syncing databases can lead to uncontrolled changes across environments • It’s better to make changes the same way for all the environments • We can use numerated delta scripts and tools like DBDeploy
  • 49. Database sync vs. delta scripts • Delta scripts – Great for greenfield development and Continuous Integration • Database sync – For legacy databases – For non-agile, non-CI projects – For changing data – When you don’t have database under version control • Other options – ORMs usually have their own mechanism to deal with database changes. For example, migrations in Entity Framework
  • 50. Dealing with data • Reference data can be scripted • Changes (delta scripts) should deal with existing data • There are several ways to obtain data for testing – Using the application API – Using backups – Using data comparison tools – Using data generation tools
  • 51. Have we covered everything? • Be able to deliver database changes in a simple and quick way • Be able to introduce database changes at any moment • Make database development dependent on business • Set up a proper environment and tools • Keep always a functional version of the database • Use best practices: CI, refactoring, TDD… • Reuse • Work in small chunks • Take running database changes into account while developing • Have a proper policy for changes in place • Have a proper policy for undoing changes in place • Be prepared to change different things in different databases
  • 52. Any questions? • Visual Studio Database tools http://bit.ly/dyN3wv • VSDBCMD http://bit.ly/vB6G1 • Database changes done right http://bit.ly/wTOY01 • Continuous delivery http://continuousdelivery.com/ jlsoria@plainconcepts.com @jlsoriat