SlideShare a Scribd company logo
1 of 29
+ 
Database Change Management* as a service 
* Also known as ‘patching’ or ‘refactoring’
+ 
About me 
(Andrew Solomon) 
Was … 
an academic teaching Perl 
Am now doing … 
 Perl Web Development at Net-A-Porter 
 (learning) Devops at Net-A-Porter 
 Teaching at Geekuni
+ 
Motivation 
Data is inconvenient 
 Next app release coming 
 App has new features 
 Needs different DB structure 
 Can’t just trash and install DB like an app
+ 
Principles 
For safe refactoring 
 Backward compatibility 
 Old and new app versions are ok with the refactored DB 
 DB is versioned 
 You can quickly determine which patches have been applied 
 App won’t be run if the DB is not compatible 
 Write a rollback for every DB change 
http://www.amazon.co.uk/Continuous-Delivery-Deployment- 
Automation-Addison-Wesley/dp/0321601912
+ 
The Net-a-Porter Way 
Old school
+ 
The Net-a-Porter Way 
Old school 
 Put refactor code into My-App’s code base 
 Approach A: Run when installing the My-App RPM 
 Approach B: Run when starting My-App 
 Log the patches run in the database
+ 
The Net-a-Porter Way 
Old school 
 Put refactor.pl into My-App’s code base 
 PROBLEM: A slightly different refactor.pl for each app 
 PROBLEM: refactor.pl has extra CPAN dependencies 
 Approach A: Run when installing the My-App RPM 
 Approach B: Run when starting My-App 
 Log the patches run in the database
+ 
The Net-a-Porter Way 
Old school 
 Put refactor.pl into My-App’s code base 
 PROBLEM: A slightly different refactor.pl for each app 
 PROBLEM: refactor.pl has extra CPAN dependencies 
 Approach A: Run when installing the My-App RPM 
 Approach B: Run when starting My-App 
 PROBLEM: Multiple My-App servers per DB 
 Log the patches run in the database
+ 
The Service Way
+ 
Available Refactoring Tools 
Flyway 
Liquibase 
DB Deploy
+ 
Winner: Liquibase 
Big user base 
Bought by Datical 
Has branching and 
More features than Flyway 
DB Deploy uses Apache ANT
Overview
Liquibase
+ 
Liquibase 
How it works 
Input: 
 An XML file listing SQL files to run 
 Special comments in the SQL files for tagging 
Output: 
 ‘databasechangelog’ tables 
 Which patches have been run 
 ‘databasechangeloglock’ 
 Ensure only one refactoring process!
+ 
Liquibase 
Example XML 
<databaseChangeLog …> 
<include file="1.0.0/000-create_schema.sql” 
relativeToChangelogFile="true"/> 
<include file="1.0.0/010-populate.sql” 
relativeToChangelogFile="true"/> 
<changeSet author="a.solomon" id="tag-1.0.0"> 
<tagDatabase tag="1.0.0"/> 
</changeSet> 
</databaseChangeLog>
+ 
Liquibase 
Example SQL 
--liquibase formatted sql 
--changeset a.solomon:1.0.1-000 
BEGIN; 
CREATE TABLE public.foobar ( 
id INTEGER PRIMARY KEY, 
name TEXT UNIQUE NOT NULL 
); 
ALTER table public.foobar OWNER to magpie; 
--ROLLBACK DROP TABLE public.foobar; 
COMMIT;
+ 
Liquibase 
Example Update 
/usr/bin/liquibase  
--changeLogFile=changeset.xml  
--url="jdbc:postgresql://db1.myapp.com:5432/myapp-db1"  
--username=liquibase –password=foobar update
+ 
Liquibase 
Example Rollback 
/usr/bin/liquibase  
--changeLogFile=changeset.xml  
--url="jdbc:postgresql://db1.myapp.com:5432/myapp-db1"  
--username=liquibase –password=foobar rollback 1.0.0
+ 
Liquibase 
Example databasechangelog 
author | filename | md5sum | tag 
a.solomon | 1.0.1/000-create_schema.sql | 7:49c8 | 1.0.1
+ 
Liquibase::Git 
What is it? 
 Perl module and script (soon on CPAN?) 
 A perl script 
 Clones git repo of the app 
 Looks in a directory of patches 
 Calls liquibase
Liquibase::Git
+ 
Liquibase::Git 
Example 
$ liquibase-git --username liquibase  
--password foobar  
--db mydb-db1  
--hostname db1.myapp.com  
--git-repo https://github.com/nap/myapp.git  
--git-changeset-dir db/db1  
--git-identifier master  
--db-type postgresql  
--changeset-file changeset.xml
+ 
NAP::Liquibase 
Getting the Puppet to help 
Most of Liquibase::Git’s parameters are retrieved from the Puppet 
DB 
Just reads a new file from My-App – the list of DBs to refactor 
# in the puppet hieradata 
$ cat myapp.com.yaml 
liquibase: 
databases: 
- db: 'myapp-db1' 
- db: 'myapp-db2’ 
# ask mco for myapp’s dbhost 
$ nap-liquibase --db-host db1.myapp.com  
--app-git-repo https:://github.com/nap/myapp.git  
--app-git-identifier master
NAP::Liquibase
Jenkins Deploy-oid 
mco ping … -F system_db=liquibase
+ 
Appendix 
… managing DBs outside the Puppet estate 
Cases where the box is being managed differently with puppet… 
Jenkins Continuous Integration Test Server 
Developer’s Box 
 Option 1: Emulate Liquibase on an empty DB – 5 lines 
 Option 2: Call liquibase-git to update a DB dump
+ 
Conclusion 
Don’t write new DB refactoring 
code for each app 
Don’t assume you’ll only have one 
app server per DB 
Don’t deploy DB refactoring code 
on the app’s host 
Treat it as a 
service
+ 
But wait!!! There’s more… 
 Ilmari told me about it 
 It’s a Perl project of David E. 
Wheeler / theory 
 Based on sane principles: 
http://sqitch.org/ 
Sqitch is to Liquibase 
Is what 
Git is to CVS 
 The switch to sqitch will be almost 
invisible at the architecture level 
 Only difference is that the developers 
get LOCAL application of the patches 
on the dev box with a simple 
command-line interface
+ 
Questions? 
… or grab me at the pub.

More Related Content

What's hot

Liquibase migration for data bases
Liquibase migration for data basesLiquibase migration for data bases
Liquibase migration for data basesRoman Uholnikov
 
Comparison of ACFS and DBFS
Comparison of ACFS and DBFSComparison of ACFS and DBFS
Comparison of ACFS and DBFSDanielHillinger
 
Oracle R12 EBS Performance Tuning
Oracle R12 EBS Performance TuningOracle R12 EBS Performance Tuning
Oracle R12 EBS Performance TuningScott Jenner
 
Always on in SQL Server 2012
Always on in SQL Server 2012Always on in SQL Server 2012
Always on in SQL Server 2012Fadi Abdulwahab
 
Shell Scripts for Oracle Database and E-Business Suite.pdf
Shell Scripts for Oracle Database and E-Business Suite.pdfShell Scripts for Oracle Database and E-Business Suite.pdf
Shell Scripts for Oracle Database and E-Business Suite.pdfAkhashRamnath
 
Optimize DR and Cloning with Logical Hostnames in Oracle E-Business Suite (OA...
Optimize DR and Cloning with Logical Hostnames in Oracle E-Business Suite (OA...Optimize DR and Cloning with Logical Hostnames in Oracle E-Business Suite (OA...
Optimize DR and Cloning with Logical Hostnames in Oracle E-Business Suite (OA...Andrejs Prokopjevs
 
MySQL for Large Scale Social Games
MySQL for Large Scale Social GamesMySQL for Large Scale Social Games
MySQL for Large Scale Social GamesYoshinori Matsunobu
 
Replacing Oracle CDC with Oracle GoldenGate
Replacing Oracle CDC with Oracle GoldenGateReplacing Oracle CDC with Oracle GoldenGate
Replacing Oracle CDC with Oracle GoldenGateStewart Bryson
 
ManageEngine ADAudit Plus
ManageEngine ADAudit PlusManageEngine ADAudit Plus
ManageEngine ADAudit PlusMajd Khriema
 
Introducción a NoSQL
Introducción a NoSQLIntroducción a NoSQL
Introducción a NoSQLCycle-IT
 
Tableau Architecture
Tableau ArchitectureTableau Architecture
Tableau ArchitectureVivek Mohan
 
Making Data Timelier and More Reliable with Lakehouse Technology
Making Data Timelier and More Reliable with Lakehouse TechnologyMaking Data Timelier and More Reliable with Lakehouse Technology
Making Data Timelier and More Reliable with Lakehouse TechnologyMatei Zaharia
 
Maria db 이중화구성_고민하기
Maria db 이중화구성_고민하기Maria db 이중화구성_고민하기
Maria db 이중화구성_고민하기NeoClova
 
NiFi Developer Guide
NiFi Developer GuideNiFi Developer Guide
NiFi Developer GuideDeon Huang
 
Not Your Mother's Kafka - Deep Dive into Confluent Cloud Infrastructure | Gwe...
Not Your Mother's Kafka - Deep Dive into Confluent Cloud Infrastructure | Gwe...Not Your Mother's Kafka - Deep Dive into Confluent Cloud Infrastructure | Gwe...
Not Your Mother's Kafka - Deep Dive into Confluent Cloud Infrastructure | Gwe...HostedbyConfluent
 
ASE Performance and Tuning Parameters Beyond the cfg File
ASE Performance and Tuning Parameters Beyond the cfg FileASE Performance and Tuning Parameters Beyond the cfg File
ASE Performance and Tuning Parameters Beyond the cfg FileSAP Technology
 
Extending Apache Ranger Authorization Beyond Hadoop: Review of Apache Ranger ...
Extending Apache Ranger Authorization Beyond Hadoop: Review of Apache Ranger ...Extending Apache Ranger Authorization Beyond Hadoop: Review of Apache Ranger ...
Extending Apache Ranger Authorization Beyond Hadoop: Review of Apache Ranger ...DataWorks Summit
 

What's hot (20)

Liquibase migration for data bases
Liquibase migration for data basesLiquibase migration for data bases
Liquibase migration for data bases
 
Comparison of ACFS and DBFS
Comparison of ACFS and DBFSComparison of ACFS and DBFS
Comparison of ACFS and DBFS
 
Oracle R12 EBS Performance Tuning
Oracle R12 EBS Performance TuningOracle R12 EBS Performance Tuning
Oracle R12 EBS Performance Tuning
 
Always on in SQL Server 2012
Always on in SQL Server 2012Always on in SQL Server 2012
Always on in SQL Server 2012
 
Shell Scripts for Oracle Database and E-Business Suite.pdf
Shell Scripts for Oracle Database and E-Business Suite.pdfShell Scripts for Oracle Database and E-Business Suite.pdf
Shell Scripts for Oracle Database and E-Business Suite.pdf
 
Alfresco Architecture
Alfresco ArchitectureAlfresco Architecture
Alfresco Architecture
 
Optimize DR and Cloning with Logical Hostnames in Oracle E-Business Suite (OA...
Optimize DR and Cloning with Logical Hostnames in Oracle E-Business Suite (OA...Optimize DR and Cloning with Logical Hostnames in Oracle E-Business Suite (OA...
Optimize DR and Cloning with Logical Hostnames in Oracle E-Business Suite (OA...
 
MySQL for Large Scale Social Games
MySQL for Large Scale Social GamesMySQL for Large Scale Social Games
MySQL for Large Scale Social Games
 
Replacing Oracle CDC with Oracle GoldenGate
Replacing Oracle CDC with Oracle GoldenGateReplacing Oracle CDC with Oracle GoldenGate
Replacing Oracle CDC with Oracle GoldenGate
 
Infinispan for Dummies
Infinispan for DummiesInfinispan for Dummies
Infinispan for Dummies
 
ManageEngine ADAudit Plus
ManageEngine ADAudit PlusManageEngine ADAudit Plus
ManageEngine ADAudit Plus
 
Apache NiFi Crash Course Intro
Apache NiFi Crash Course IntroApache NiFi Crash Course Intro
Apache NiFi Crash Course Intro
 
Introducción a NoSQL
Introducción a NoSQLIntroducción a NoSQL
Introducción a NoSQL
 
Tableau Architecture
Tableau ArchitectureTableau Architecture
Tableau Architecture
 
Making Data Timelier and More Reliable with Lakehouse Technology
Making Data Timelier and More Reliable with Lakehouse TechnologyMaking Data Timelier and More Reliable with Lakehouse Technology
Making Data Timelier and More Reliable with Lakehouse Technology
 
Maria db 이중화구성_고민하기
Maria db 이중화구성_고민하기Maria db 이중화구성_고민하기
Maria db 이중화구성_고민하기
 
NiFi Developer Guide
NiFi Developer GuideNiFi Developer Guide
NiFi Developer Guide
 
Not Your Mother's Kafka - Deep Dive into Confluent Cloud Infrastructure | Gwe...
Not Your Mother's Kafka - Deep Dive into Confluent Cloud Infrastructure | Gwe...Not Your Mother's Kafka - Deep Dive into Confluent Cloud Infrastructure | Gwe...
Not Your Mother's Kafka - Deep Dive into Confluent Cloud Infrastructure | Gwe...
 
ASE Performance and Tuning Parameters Beyond the cfg File
ASE Performance and Tuning Parameters Beyond the cfg FileASE Performance and Tuning Parameters Beyond the cfg File
ASE Performance and Tuning Parameters Beyond the cfg File
 
Extending Apache Ranger Authorization Beyond Hadoop: Review of Apache Ranger ...
Extending Apache Ranger Authorization Beyond Hadoop: Review of Apache Ranger ...Extending Apache Ranger Authorization Beyond Hadoop: Review of Apache Ranger ...
Extending Apache Ranger Authorization Beyond Hadoop: Review of Apache Ranger ...
 

Viewers also liked

Puppet & Perforce: Versioning Everything for Deployments
Puppet & Perforce: Versioning Everything for DeploymentsPuppet & Perforce: Versioning Everything for Deployments
Puppet & Perforce: Versioning Everything for DeploymentsPerforce
 
Database Change Management
Database Change ManagementDatabase Change Management
Database Change ManagementDominik Hirt
 
Liquibase få kontroll på dina databasförändringar
Liquibase   få kontroll på dina databasförändringarLiquibase   få kontroll på dina databasförändringar
Liquibase få kontroll på dina databasförändringarSqueed
 
Continuous Web Performance Monitoring with Jenkins
Continuous Web Performance Monitoring with JenkinsContinuous Web Performance Monitoring with Jenkins
Continuous Web Performance Monitoring with JenkinsMichael Kröll
 
Handling Database Deployments
Handling Database DeploymentsHandling Database Deployments
Handling Database DeploymentsMike Willbanks
 
Database Refactoring With Liquibase
Database Refactoring With LiquibaseDatabase Refactoring With Liquibase
Database Refactoring With LiquibaseTim Berglund
 
Agile Database Development with Liquibase
Agile Database Development with LiquibaseAgile Database Development with Liquibase
Agile Database Development with LiquibaseTim Berglund
 

Viewers also liked (8)

Puppet & Perforce: Versioning Everything for Deployments
Puppet & Perforce: Versioning Everything for DeploymentsPuppet & Perforce: Versioning Everything for Deployments
Puppet & Perforce: Versioning Everything for Deployments
 
Database Change Management
Database Change ManagementDatabase Change Management
Database Change Management
 
Liquibase få kontroll på dina databasförändringar
Liquibase   få kontroll på dina databasförändringarLiquibase   få kontroll på dina databasförändringar
Liquibase få kontroll på dina databasförändringar
 
Mini Training Flyway
Mini Training FlywayMini Training Flyway
Mini Training Flyway
 
Continuous Web Performance Monitoring with Jenkins
Continuous Web Performance Monitoring with JenkinsContinuous Web Performance Monitoring with Jenkins
Continuous Web Performance Monitoring with Jenkins
 
Handling Database Deployments
Handling Database DeploymentsHandling Database Deployments
Handling Database Deployments
 
Database Refactoring With Liquibase
Database Refactoring With LiquibaseDatabase Refactoring With Liquibase
Database Refactoring With Liquibase
 
Agile Database Development with Liquibase
Agile Database Development with LiquibaseAgile Database Development with Liquibase
Agile Database Development with Liquibase
 

Similar to Database Change Management as a Service

FlywayDB Migration with Spring Boot
FlywayDB Migration with Spring BootFlywayDB Migration with Spring Boot
FlywayDB Migration with Spring BootInexture Solutions
 
Patterns and Tools for Database Versioning, Migration, Data Loading and Test ...
Patterns and Tools for Database Versioning, Migration, Data Loading and Test ...Patterns and Tools for Database Versioning, Migration, Data Loading and Test ...
Patterns and Tools for Database Versioning, Migration, Data Loading and Test ...Alan Pinstein
 
Evolutionary Database Design
Evolutionary Database DesignEvolutionary Database Design
Evolutionary Database DesignAndrei Solntsev
 
DevOps Hackathon: Session 3 - Test Driven Infrastructure
DevOps Hackathon: Session 3 - Test Driven InfrastructureDevOps Hackathon: Session 3 - Test Driven Infrastructure
DevOps Hackathon: Session 3 - Test Driven InfrastructureAntons Kranga
 
Liquibase - Open Source version control for your database
Liquibase - Open Source version control for your databaseLiquibase - Open Source version control for your database
Liquibase - Open Source version control for your databaseBlaine Carter
 
Liquibase – a time machine for your data
Liquibase – a time machine for your dataLiquibase – a time machine for your data
Liquibase – a time machine for your dataNeev Technologies
 
Migrating to SharePoint 2013 - Business and Technical Perspective
Migrating to SharePoint 2013 - Business and Technical PerspectiveMigrating to SharePoint 2013 - Business and Technical Perspective
Migrating to SharePoint 2013 - Business and Technical PerspectiveJohn Calvert
 
Ready, Set, Upgrade!
Ready, Set, Upgrade!Ready, Set, Upgrade!
Ready, Set, Upgrade!Cory Peters
 
Intro to Github Actions @likecoin
Intro to Github Actions @likecoinIntro to Github Actions @likecoin
Intro to Github Actions @likecoinWilliam Chong
 
Agile Database Modeling with Grails - Preview of GORM 1.4 - SF Grails Meetup ...
Agile Database Modeling with Grails - Preview of GORM 1.4 - SF Grails Meetup ...Agile Database Modeling with Grails - Preview of GORM 1.4 - SF Grails Meetup ...
Agile Database Modeling with Grails - Preview of GORM 1.4 - SF Grails Meetup ...Philip Stehlik
 
Going Serverless with Azure Functions in .NET
Going Serverless with Azure Functions in .NETGoing Serverless with Azure Functions in .NET
Going Serverless with Azure Functions in .NETJeremy Likness
 
Architecting the Future: Abstractions and Metadata - BSidesKC
Architecting the Future: Abstractions and Metadata - BSidesKCArchitecting the Future: Abstractions and Metadata - BSidesKC
Architecting the Future: Abstractions and Metadata - BSidesKCDaniel Barker
 
Power Shell and Sharepoint 2013
Power Shell and Sharepoint 2013Power Shell and Sharepoint 2013
Power Shell and Sharepoint 2013Mohan Arumugam
 
CISOA Conference 2020 Banner 9 Development
CISOA Conference 2020 Banner 9 DevelopmentCISOA Conference 2020 Banner 9 Development
CISOA Conference 2020 Banner 9 DevelopmentBrad Rippe
 
Code First with Serverless Azure Functions
Code First with Serverless Azure FunctionsCode First with Serverless Azure Functions
Code First with Serverless Azure FunctionsJeremy Likness
 
PHP North-East - Automated Deployment
PHP North-East - Automated DeploymentPHP North-East - Automated Deployment
PHP North-East - Automated DeploymentMichael Peacock
 

Similar to Database Change Management as a Service (20)

BPMS1
BPMS1BPMS1
BPMS1
 
BPMS1
BPMS1BPMS1
BPMS1
 
FlywayDB Migration with Spring Boot
FlywayDB Migration with Spring BootFlywayDB Migration with Spring Boot
FlywayDB Migration with Spring Boot
 
Patterns and Tools for Database Versioning, Migration, Data Loading and Test ...
Patterns and Tools for Database Versioning, Migration, Data Loading and Test ...Patterns and Tools for Database Versioning, Migration, Data Loading and Test ...
Patterns and Tools for Database Versioning, Migration, Data Loading and Test ...
 
Evolutionary Database Design
Evolutionary Database DesignEvolutionary Database Design
Evolutionary Database Design
 
DevOps Hackathon: Session 3 - Test Driven Infrastructure
DevOps Hackathon: Session 3 - Test Driven InfrastructureDevOps Hackathon: Session 3 - Test Driven Infrastructure
DevOps Hackathon: Session 3 - Test Driven Infrastructure
 
Iac d.damyanov 4.pptx
Iac d.damyanov 4.pptxIac d.damyanov 4.pptx
Iac d.damyanov 4.pptx
 
Liquibase - Open Source version control for your database
Liquibase - Open Source version control for your databaseLiquibase - Open Source version control for your database
Liquibase - Open Source version control for your database
 
Liquibase – a time machine for your data
Liquibase – a time machine for your dataLiquibase – a time machine for your data
Liquibase – a time machine for your data
 
Migrating to SharePoint 2013 - Business and Technical Perspective
Migrating to SharePoint 2013 - Business and Technical PerspectiveMigrating to SharePoint 2013 - Business and Technical Perspective
Migrating to SharePoint 2013 - Business and Technical Perspective
 
RoR guide_p1
RoR guide_p1RoR guide_p1
RoR guide_p1
 
Ready, Set, Upgrade!
Ready, Set, Upgrade!Ready, Set, Upgrade!
Ready, Set, Upgrade!
 
Intro to Github Actions @likecoin
Intro to Github Actions @likecoinIntro to Github Actions @likecoin
Intro to Github Actions @likecoin
 
Agile Database Modeling with Grails - Preview of GORM 1.4 - SF Grails Meetup ...
Agile Database Modeling with Grails - Preview of GORM 1.4 - SF Grails Meetup ...Agile Database Modeling with Grails - Preview of GORM 1.4 - SF Grails Meetup ...
Agile Database Modeling with Grails - Preview of GORM 1.4 - SF Grails Meetup ...
 
Going Serverless with Azure Functions in .NET
Going Serverless with Azure Functions in .NETGoing Serverless with Azure Functions in .NET
Going Serverless with Azure Functions in .NET
 
Architecting the Future: Abstractions and Metadata - BSidesKC
Architecting the Future: Abstractions and Metadata - BSidesKCArchitecting the Future: Abstractions and Metadata - BSidesKC
Architecting the Future: Abstractions and Metadata - BSidesKC
 
Power Shell and Sharepoint 2013
Power Shell and Sharepoint 2013Power Shell and Sharepoint 2013
Power Shell and Sharepoint 2013
 
CISOA Conference 2020 Banner 9 Development
CISOA Conference 2020 Banner 9 DevelopmentCISOA Conference 2020 Banner 9 Development
CISOA Conference 2020 Banner 9 Development
 
Code First with Serverless Azure Functions
Code First with Serverless Azure FunctionsCode First with Serverless Azure Functions
Code First with Serverless Azure Functions
 
PHP North-East - Automated Deployment
PHP North-East - Automated DeploymentPHP North-East - Automated Deployment
PHP North-East - Automated Deployment
 

Recently uploaded

Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 

Recently uploaded (20)

Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 

Database Change Management as a Service

  • 1. + Database Change Management* as a service * Also known as ‘patching’ or ‘refactoring’
  • 2. + About me (Andrew Solomon) Was … an academic teaching Perl Am now doing …  Perl Web Development at Net-A-Porter  (learning) Devops at Net-A-Porter  Teaching at Geekuni
  • 3. + Motivation Data is inconvenient  Next app release coming  App has new features  Needs different DB structure  Can’t just trash and install DB like an app
  • 4. + Principles For safe refactoring  Backward compatibility  Old and new app versions are ok with the refactored DB  DB is versioned  You can quickly determine which patches have been applied  App won’t be run if the DB is not compatible  Write a rollback for every DB change http://www.amazon.co.uk/Continuous-Delivery-Deployment- Automation-Addison-Wesley/dp/0321601912
  • 5. + The Net-a-Porter Way Old school
  • 6. + The Net-a-Porter Way Old school  Put refactor code into My-App’s code base  Approach A: Run when installing the My-App RPM  Approach B: Run when starting My-App  Log the patches run in the database
  • 7. + The Net-a-Porter Way Old school  Put refactor.pl into My-App’s code base  PROBLEM: A slightly different refactor.pl for each app  PROBLEM: refactor.pl has extra CPAN dependencies  Approach A: Run when installing the My-App RPM  Approach B: Run when starting My-App  Log the patches run in the database
  • 8. + The Net-a-Porter Way Old school  Put refactor.pl into My-App’s code base  PROBLEM: A slightly different refactor.pl for each app  PROBLEM: refactor.pl has extra CPAN dependencies  Approach A: Run when installing the My-App RPM  Approach B: Run when starting My-App  PROBLEM: Multiple My-App servers per DB  Log the patches run in the database
  • 10. + Available Refactoring Tools Flyway Liquibase DB Deploy
  • 11. + Winner: Liquibase Big user base Bought by Datical Has branching and More features than Flyway DB Deploy uses Apache ANT
  • 14. + Liquibase How it works Input:  An XML file listing SQL files to run  Special comments in the SQL files for tagging Output:  ‘databasechangelog’ tables  Which patches have been run  ‘databasechangeloglock’  Ensure only one refactoring process!
  • 15. + Liquibase Example XML <databaseChangeLog …> <include file="1.0.0/000-create_schema.sql” relativeToChangelogFile="true"/> <include file="1.0.0/010-populate.sql” relativeToChangelogFile="true"/> <changeSet author="a.solomon" id="tag-1.0.0"> <tagDatabase tag="1.0.0"/> </changeSet> </databaseChangeLog>
  • 16. + Liquibase Example SQL --liquibase formatted sql --changeset a.solomon:1.0.1-000 BEGIN; CREATE TABLE public.foobar ( id INTEGER PRIMARY KEY, name TEXT UNIQUE NOT NULL ); ALTER table public.foobar OWNER to magpie; --ROLLBACK DROP TABLE public.foobar; COMMIT;
  • 17. + Liquibase Example Update /usr/bin/liquibase --changeLogFile=changeset.xml --url="jdbc:postgresql://db1.myapp.com:5432/myapp-db1" --username=liquibase –password=foobar update
  • 18. + Liquibase Example Rollback /usr/bin/liquibase --changeLogFile=changeset.xml --url="jdbc:postgresql://db1.myapp.com:5432/myapp-db1" --username=liquibase –password=foobar rollback 1.0.0
  • 19. + Liquibase Example databasechangelog author | filename | md5sum | tag a.solomon | 1.0.1/000-create_schema.sql | 7:49c8 | 1.0.1
  • 20. + Liquibase::Git What is it?  Perl module and script (soon on CPAN?)  A perl script  Clones git repo of the app  Looks in a directory of patches  Calls liquibase
  • 22. + Liquibase::Git Example $ liquibase-git --username liquibase --password foobar --db mydb-db1 --hostname db1.myapp.com --git-repo https://github.com/nap/myapp.git --git-changeset-dir db/db1 --git-identifier master --db-type postgresql --changeset-file changeset.xml
  • 23. + NAP::Liquibase Getting the Puppet to help Most of Liquibase::Git’s parameters are retrieved from the Puppet DB Just reads a new file from My-App – the list of DBs to refactor # in the puppet hieradata $ cat myapp.com.yaml liquibase: databases: - db: 'myapp-db1' - db: 'myapp-db2’ # ask mco for myapp’s dbhost $ nap-liquibase --db-host db1.myapp.com --app-git-repo https:://github.com/nap/myapp.git --app-git-identifier master
  • 25. Jenkins Deploy-oid mco ping … -F system_db=liquibase
  • 26. + Appendix … managing DBs outside the Puppet estate Cases where the box is being managed differently with puppet… Jenkins Continuous Integration Test Server Developer’s Box  Option 1: Emulate Liquibase on an empty DB – 5 lines  Option 2: Call liquibase-git to update a DB dump
  • 27. + Conclusion Don’t write new DB refactoring code for each app Don’t assume you’ll only have one app server per DB Don’t deploy DB refactoring code on the app’s host Treat it as a service
  • 28. + But wait!!! There’s more…  Ilmari told me about it  It’s a Perl project of David E. Wheeler / theory  Based on sane principles: http://sqitch.org/ Sqitch is to Liquibase Is what Git is to CVS  The switch to sqitch will be almost invisible at the architecture level  Only difference is that the developers get LOCAL application of the patches on the dev box with a simple command-line interface
  • 29. + Questions? … or grab me at the pub.