#doaw16 - devops@work roma 2016 - databases under source control

29
@ DevOps@Work 2016 #DOAW16 @ DevOps@Work 2016 #DOAW16 getlatestversion Database under source control Alessandro Alpi (@suxstellino) Data Platform MVP since 2008 alessandro.alpi@engageits ervices.it

Upload: alessandro-alpi

Post on 16-Apr-2017

409 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: #DOAW16 - DevOps@work Roma 2016 - Databases under source control

@DevOps@Work 2016

#DOAW16@DevOps@Work 2016#DOAW16

getlatestversion

Database under source control

Alessandro Alpi (@suxstellino)Data Platform MVP since 2008

[email protected]

Page 2: #DOAW16 - DevOps@work Roma 2016 - Databases under source control

@DevOps@Work 2016

#DOAW16

DevOps conceptsThe Continuous patternSource control managerDatabase vs CodeDatabase Development tools and solutionsConclusionsQ&A

Agenda

Page 3: #DOAW16 - DevOps@work Roma 2016 - Databases under source control

@DevOps@Work 2016

#DOAW16

DevOps is a culture, movement or practice that emphasizes the collaboration and communication of both software developers and other information-technology(IT) professionals while automating the process of software delivery and infrastructure changes. It aims at establishing a culture and environment where building, testing, and releasing software, can happen rapidly, frequently, and more reliably

(source Wikipedia)

DevOps concept

Page 4: #DOAW16 - DevOps@work Roma 2016 - Databases under source control

@DevOps@Work 2016

#DOAW16

We will speak about…

Development teamsWe’re writing code and features

Sharing workWe’re creating changesets that will be shared across the team

AutomationEvery “checkin” should be automatically built and delivered

ProductivityA repeatable and reliable process will speed up our development

Page 5: #DOAW16 - DevOps@work Roma 2016 - Databases under source control

@DevOps@Work 2016

#DOAW16

We want reach these goalsAdd operations teams

We want to bring our development in environmentsSharing work with them

Operations team must know development stuff and processes

Automation is still neededWe want to be able to write automated delivery processes

Productivity is a must, also hereThis is true also for deploying the application

Page 6: #DOAW16 - DevOps@work Roma 2016 - Databases under source control

@DevOps@Work 2016

#DOAW16

What we need to reach DevOps

IDESource Control Manager

(Version control system)

Build server and process

(also for automation)QA / Unit test process

(automated)

Release processes(automated and

reliable)

Integration

OperationDevelopment

Page 7: #DOAW16 - DevOps@work Roma 2016 - Databases under source control

@DevOps@Work 2016

#DOAW16

The databases needs developmentThe databases must be redistributed between teamsThe databases must be synced within the development environmentThe database will have «changes» associated to «activities»The database should be automatically testedThe database should be automatically builtThe database should be checked for potential driftsAnd, of course, it’s a good thing to deploy it

DevOps and databases

Page 8: #DOAW16 - DevOps@work Roma 2016 - Databases under source control

@DevOps@Work 2016

#DOAW16

Automation of each stepContinuous Integration (with Version Control System)

Integration, at least daily, of the work doneDevelopment team

Continuous Delivery (pre production release with automated builds and tests)

Build server, unit testing frameworks, automatically triggered Pre production environmentsCooperation with Operation team

Continuous Deployment (automated production release, after acceptance)

Release of the builds which pass UAT and QA testsAutomated processesCooperation with Operation team

The “Continuous pattern”

Page 9: #DOAW16 - DevOps@work Roma 2016 - Databases under source control

@DevOps@Work 2016

#DOAW16

Continuous improvement leads to better software qualitySo, Continuous Integration helps us to improve with quality

Database and Continuous Integration

DEVELOPMENT + SEND TRIGGERED BUILDAUTOMATED UNIT

TESTS“DONE” WORK

SHARING

Page 10: #DOAW16 - DevOps@work Roma 2016 - Databases under source control

@DevOps@Work 2016

#DOAW16

The way we can version our database codeManagement of versionsChanges of the code (and not only those)Shared entity during development stagesCore of (automated) deliveryOften used with other tools for managing teamsProvides an interface (also graphic)

Source control manager

Page 11: #DOAW16 - DevOps@work Roma 2016 - Databases under source control

@DevOps@Work 2016

#DOAW16

History of database itemsSafe storage of our files (persistence)Share development lines within the teamTrack of edits, by userCentral point for (automated) database deliveryCentral point for (automating) builds and testsThe real needs of every team about the code..

Source control manager, why?

Page 12: #DOAW16 - DevOps@work Roma 2016 - Databases under source control

@DevOps@Work 2016

#DOAW16

The DB can be a file «inside the application»The DB is «located on the server»The DB persists user dataThe DB is not all and only codeHowever, the changes on the DB must be reflected to the whole development team

The Source Control seems «uncomfortable», at first sight..

Source control manager, what about databases?

Page 13: #DOAW16 - DevOps@work Roma 2016 - Databases under source control

@DevOps@Work 2016

#DOAW16

The database IS code (programmability, ddl, grant, etc.)The «domain» tables are like many enums (static data).The DB should be changed in more development branches.Linked servers are configurations (like *.config)The login server are environment configurationsThe database persist the data.

It’s not a *source control* problemSome data should be stored in Source Control Manager

Code vs Database, are they really different?

Page 14: #DOAW16 - DevOps@work Roma 2016 - Databases under source control

@DevOps@Work 2016

#DOAW16

Our databases should be under source control managementWe can “get the latest version”We can see the differences between versionsWe can integrate our database IDE with the most popular SCMWe can avoid to use a single dev server for workday

How many times did you break the work of the other team members?Is there any better solution than having our development sandboxes?

Finally we can reduce the gap between DBAs and DEVs (OOOOH! )Last but not least, we will be ready for continuous improvement:

Continuous integrationDevOps related tasks

In the end…

Page 15: #DOAW16 - DevOps@work Roma 2016 - Databases under source control

@DevOps@Work 2016

#DOAW16

A possible solution

Visual Studio Team Serivices (formerly VSOnline)

Source Control Manager in the cloudCore team management tool alsoEngine for automated tasks and releases

Automated buildsRelease managements

Team explorer as UI for managing versions/changesets

RedGate SQL Source ControlVersions/changesets tool for SQL ServerIntegrated with SSMS IDE

Page 16: #DOAW16 - DevOps@work Roma 2016 - Databases under source control

@DevOps@Work 2016

#DOAW16

Regardless of the tool we use, Team Explorer allows us to:Improve management of the changesetsImprove association of changesets to tasksImprove control on commit/get/sync/pull/checkin phasesCentralize management of checkin policySingle point for management of the team project

For Red Gate SQL Source ControlUsed when in «Working folder» configuration

For Visual Studio Team ServicesUsed when getting the latest version and when sending changesets

The team explorer

Page 17: #DOAW16 - DevOps@work Roma 2016 - Databases under source control

@DevOps@Work 2016

#DOAW16

SQL Source Control – Development models

Shared Dedicated (suggested)

One single dev serverAll the team works on the serverHighly possible conflictsThe last changeset wins on everythingCannot track versions between developers

Workstations are dev serversEach team member works on its own sandboxNo conflicts during development (only on send phase)Each check-in is a different changesetEach check-in is a different database version

Page 18: #DOAW16 - DevOps@work Roma 2016 - Databases under source control

@DevOps@Work 2016

#DOAW16

SQL Source Control – Link models

Working folder Integrated with SCM

Working base (in AppData folder) Analyze differencesAvoid any SQL Server Api call

Working folder (the Visual Studio Workspace) Store changesShow pending changes on Team ExplorerDetected items on Team Explorer!

Filesystem basedTwo phases for sending: save/checkinTwo phases for getting differences: get/applySimple to package

Working base (in AppData folder) Analyze differencesAvoid any SQL Server Api call

Link with source control urlStore changes remotelyShow pending changes on SSMS

Url based (SCM APIs)One click checkin on SCM via SSMSNo get, SSMS is sync’ed when getting changesSimple to package

Page 19: #DOAW16 - DevOps@work Roma 2016 - Databases under source control

@DevOps@Work 2016

#DOAW16

The real scenario

Sql Server Management Studio IDE

Working folderFile “.sql”

Development

Team Explorer toSource Control

Code, History andChangesets

Save Send

GetApply

Repository

LINK

Page 20: #DOAW16 - DevOps@work Roma 2016 - Databases under source control

@DevOps@Work 2016

#DOAW16

SQL Server Management Studio + Visual Studio Team Services

LET’S PLAY

Page 21: #DOAW16 - DevOps@work Roma 2016 - Databases under source control

@DevOps@Work 2016

#DOAW16

Simply manage and track fixesMultiple development environmentsBranch the databases as the applicationSwitch to different versions of the databasesLabel the changesets as for the applicationIntegration with automated tools for deployingReady for drift check during deploymentSync all the team to a certain version of the databases…much more

Advantages using SCM on databases

Page 22: #DOAW16 - DevOps@work Roma 2016 - Databases under source control

@DevOps@Work 2016

#DOAW16

Possible considerationHow is our team structured?Which are the minimum requirements?How much can I spend?Can I afford the learning curve if I change IDE?

However, we should really use the Source Control

Conclusions

Page 23: #DOAW16 - DevOps@work Roma 2016 - Databases under source control

@DevOps@Work 2016

#DOAW16

..and, hopefully, answers!

Questions?

Page 24: #DOAW16 - DevOps@work Roma 2016 - Databases under source control

@DevOps@Work 2016

#DOAW16

THANK YOU!

Page 25: #DOAW16 - DevOps@work Roma 2016 - Databases under source control

@DevOps@Work 2016

#DOAW16

http://www.codinghorror.com/blog/2006/12/is-your-database-under-version-control.htmlhttp://odetocode.com/blogs/scott/archive/2008/01/30/three-rules-for-database-work.aspxhttp://odetocode.com/blogs/scott/archive/2008/01/31/versioning-databases-the-baseline.aspxhttp://odetocode.com/blogs/scott/archive/2008/02/02/versioning-databases-change-scripts.aspxhttp://odetocode.com/blogs/scott/archive/2008/02/02/versioning-databases-views-stored-procedures-and-the-like.aspxhttp://odetocode.com/blogs/scott/archive/2008/02/03/versioning-databases-branching-and-merging.aspxhttp://www.red-gate.com/products/sql-development/sql-source-control/http://apexsql.com/sql_tools_source_control.aspxhttp://suxstellino.wordpress.com/tag/alm/http://blogs.dotnethell.it/suxstellino/Category_2927.aspxhttp://blogs.msdn.com/b/ssdt/archive/2012/02/02/including-data-in-an-sql-server-database-project.aspx

Resources

Page 28: #DOAW16 - DevOps@work Roma 2016 - Databases under source control

@DevOps@Work 2016

#DOAW16

Grazie agli sponsor

Page 29: #DOAW16 - DevOps@work Roma 2016 - Databases under source control

@DevOps@Work 2016

#DOAW16

http://bit.ly/DOAW16FEED1

Dedicateci 2 minuti del vostro tempo, e ci aiuterete a crescere e migliorare!

Track Introhttp://bit.ly/DOAW16FEED2

Track Avanzata