SlideShare una empresa de Scribd logo
1 de 39
#sqlsatParma 
Database sotto source control 
Alessandro Alpi 
@suxstellino 
www.alessandroalpi.net 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Sponsors 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Organizers 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Speaker 
 SQL Server MVP dal 2008 
 Microsoft Certified 
 blog: 
 [ITA] http://blogs.dotnethell.it/suxstellino 
 [ENG] http://suxstellino.wordpress.com/ 
 Maggiori informazioni su: 
 http://www.alessandroalpi.net 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Agenda 
 Concetti ALM/DLM 
 Source control manager 
 Database vs Codice 
 Database ALM tools 
 Soluzioni per il development 
 Conclusioni 
 Q&A 
November 22 #sqlsat355 nd, 2014
Application Lifecycle Management (ALM) rappresenta 
l'unione di attività di gestione di business con attività di 
ingegneria del software, resa possibile dall'utilizzo di 
strumenti che facilitano la gestione delle fasi di: analisi 
dei requisiti, progetto architetturale, sviluppo, testing, 
gestione delle release, del change e del deployment. 
(fonte Wikipedia) 
#sqlsatParma 
Che cosa si intende con ALM? 
November 22 #sqlsat355 nd, 2014
 Rottura delle barriere tra i team (integrazione) 
 Rilascio di software di qualità 
 Rilascio di software in tempi brevi 
 Soddisfazione del cliente 
 Migliore organizzazione del lavoro 
 Monitorizzazione e tracciabilità delle attività 
 Migliore gestione del codice (più «pulito») 
#sqlsatParma 
Perchè ALM? 
November 22 #sqlsat355 nd, 2014
 La parte di database ha analisi e sviluppo 
 I database devono poter essere distribuiti 
 I database devono essere sincronizzati 
nell’ambiente di sviluppo 
 Il database avrà «cambiamenti» da associare 
ad «attività» 
 Il database dovrebbe essere testato 
 Di certo è una cosa di cui fare deploy  
#sqlsatParma 
ALM e database 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Per raggiungere la qualità.. 
 Continuous Integration! 
 SVILUPPO 
 SEND 
 BUILD 
 TEST 
November 22 #sqlsat355 nd, 2014
DLM – Database lifecycle management 
DLM (sottoinsieme di ALM) è un approccio alla 
gestione dello schema del database, dei dati e dei 
metadati. Ma non solo, è l’insieme degli strumenti 
e delle tecnologie che consentono l’organizzazione 
del ciclo di vita di un database, partendo 
dall’analisi, passando per lo sviluppo, il testing ed il 
deploy, per arrivare alla fase di backup e 
persistenza dei dati. 
(fonte TechNet) 
#sqlsatParma 
November 22 #sqlsat355 nd, 2014
 E dei cambiamenti del nostro codice (e non solo) 
 Entità condivisa nelle fasi di sviluppo, deploy 
e team management 
 Dotato di interfaccia (anche grafica) 
#sqlsatParma 
Source Control Manager 
 Gestore delle versioni 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
SCM – Perchè li utilizziamo 
 Versioni del nostro codice 
 Salvataggio sicuro dei nostri file 
 Distribuzione delle linee di sviluppo al team 
 Creazione di un punto centrale per i deploy 
 Automatizzare processi di build e di test 
 Le necessità di ogni team.. 
November 22 #sqlsat355 nd, 2014
 Il DB può essere un file «nell’applicazione» 
 Il DB «sta su server» 
 Il DB persiste dati utente 
 Il DB non è tutto e solo codice 
 Tuttavia i cambiamenti al DB devono riflettersi a 
Il source control potrebbe sembrare «scomodo» 
#sqlsatParma 
SCM – Parlando di database 
tutto il team 
November 22 #sqlsat355 nd, 2014
 Come potremmo semplicemente gestire le fix? 
 Come prevenire regressioni? 
 Come avere velocemente più ambienti di sviluppo? 
 Come creare semplicemente una nuova linea dev? 
 Come utilizzare versioni differenti dello stesso DB? 
 Come potremmo rendere il DB sincronizzato agli 
#sqlsatParma 
Ma senza un SCM 
ultimi cambiamenti dell’applicazione? 
November 22 #sqlsat355 nd, 2014
 Il database è comunque codice 
(programmabilità, ddl, grant, ecc.) 
 Le tabelle di «dominio» sono come tanti 
enum (dati statici) 
 Anche il DB dovrebbe essere trasformato 
in più line di sviluppo durante le operazioni 
di branch del codice 
#sqlsatParma 
DB vs. codice – così diversi? 
November 22 #sqlsat355 nd, 2014
 I puntamenti ai linked server sono 
configurazioni (come l’app.config) 
 Le server login sono configurazioni di 
ambiente 
 Il database persiste i dati utente. Non è un 
problema *da source control* 
#sqlsatParma 
DB vs. codice – così diversi? 
November 22 #sqlsat355 nd, 2014
 Versioni dei nostri oggetti (DDL) e della 
programmabilità su database 
 Le label comprendono il database, in 
modo da poter tornare ad una situazione 
precedente 
 Team sincronizzati sulla get di una 
versione (tipicamente l’ultima) 
 Per fare versioning anche dei dati statici 
#sqlsatParma 
Perché mettere il DB sotto SCM 
November 22 #sqlsat355 nd, 2014
 Continuous Integration 
 Branch (più linee di sviluppo e più contesti) 
 Ambienti isolati per team dislocati 
 Atomicità tra applicazione e DB 
 Salvataggio della documentazione del 
database 
#sqlsatParma 
E ancora.. 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
SCM – Eccone alcuni 
 TFS on-premises 
 Visual Studio Online 
 Git 
 Mercurial 
 Subversion (SVN) 
 CVS 
 … 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Operazioni possibili con SCM 
 Get 
 Commit/Checkin 
 Sync/Push/Pull/Fetch 
 Undo 
 Save (working folder/Git) 
 Delete (working folder/Git) 
 Edit (working folder/Git) 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Tool per la gestione SCM per DB 
 Visual Studio 
 Database projects 
 Red-Gate Source Control 
 ApexSQL Source Control 
 … 
November 22 #sqlsat355 nd, 2014
Indipendentemente dal tool che si usa Team 
Explorer consente: 
 Migliore gestione dei changeset 
 Migliore associazione dei changeset ai task 
 Miglior controllo sulle fasi di commit e di 
review 
 Gestione centralizzata delle policy di checkin 
 Single point per la gestione del team project 
#sqlsatParma 
Il Team Explorer 
November 22 #sqlsat355 nd, 2014
Soluzioni e tool – development/change 
 Management Studio non basta 
 Visual Studio e Database projects 
 Integrazioni di tool di terze parti con SSMS 
 Software di terze parti non integrati con IDE 
proprietari 
 Li vedremo più avanti.. 
#sqlsatParma 
(esempio: Red-Gate SQL Source Control) 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Visual Studio + Database projects 
 Connected database development 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Visual Studio + Database projects 
 Project based development 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
DEMO 
Connessione ad un repo locale Git 
+ 
November 22 #sqlsat355 nd, 2014
 Integrazione con SQL Server Management Studio 
#sqlsatParma 
Red-Gate SQL Source Control 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Red-Gate SQL Source Control 
 Modello di sviluppo condiviso 
 Modello di sviluppo dedicato (consigliato) 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
DEMO 
Connessione ad un repo locale Git 
+ 
November 22 #sqlsat355 nd, 2014
 Integrazione con SQL Server Management Studio 
#sqlsatParma 
ApexSQL Source Control 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
ApexSQL Source Control 
 Modello di sviluppo condiviso 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
DEMO 
Connessione ad un repo locale Git 
+ 
November 22 #sqlsat355 nd, 2014
 La merge necessita di tool di terze parti 
 Non ha la gestione dei dati statici (ma è prevista per prossime release) 
#sqlsatParma 
Comparazione – ApexSQL 
 Vantaggi 
 Basso costo 
 UI efficace 
 Molti tipi di source control supportati 
 Integrazione veloce con SSMS 
 Molto rapido come tempi di risposta 
 Supporto qualificato 
 Svantaggi 
 Prodotto molto giovane (release recente/rifacimento prodotto 
precedente) 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Comparazione – Red-Gate 
 Vantaggi 
 UI efficace 
 Molti tipi di source control supportati 
 Integrazione veloce con SSMS 
 Automazione dei processi e linee di comando 
 Salvataggio dei dati statici 
 Migrazioni facilitate con refactor integrati 
 Creazione di script e integrazione con altri prodotti Red-Gate (CI) 
 Supporto qualificato 
 Svantaggi 
 Costo non molto basso 
 Nelle prossime release, prodotto molto giovane 
 Nell’attuale release la migrazione non supporta il branching nelle 
migrazioni 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Comparazione – Visual Studio 
 Vantaggi 
 Nessun costo aggiuntivo (dipende dalla licenza) 
 Prodotto usato già dagli sviluppatori 
 Estendibile (nuget) 
 Ha il Team Explorer 
 È estremamente potente 
 Integra anche progetti di BI (SSIS, SSAS, SSRS) 
 Tipi di progetto e template cross versione 
 Deploy e strumenti di refactor integrati 
 Svantaggi 
 Solo due source control supportati (VSO/TFS e Git) 
 Non ha la gestione dei dati statici 
November 22 #sqlsat355 nd, 2014
 Com’è il nostro team? 
 Requisiti minimi per la scelta del source control tool? 
 Quanto posso spendere? 
 Curva di apprendimento se cambio IDE? 
 In definitiva, il Source Control dovremmo usarlo  
#sqlsatParma 
Conclusioni 
 Altre considerazioni per la scelta 
November 22 #sqlsat355 nd, 2014
 http://www.codinghorror.com/blog/2006/12/is-your-database-under-version-control.html 
 http://odetocode.com/blogs/scott/archive/2008/01/30/three-rules-for-database-work.aspx 
 http://odetocode.com/blogs/scott/archive/2008/01/31/versioning-databases-the-baseline.aspx 
 http://odetocode.com/blogs/scott/archive/2008/02/02/versioning-databases-change-scripts. 
 http://odetocode.com/blogs/scott/archive/2008/02/02/versioning-databases-views-stored-procedures- 
 http://odetocode.com/blogs/scott/archive/2008/02/03/versioning-databases-branching-and-merging. 
 http://www.red-gate.com/products/sql-development/sql-source-control/ 
 http://apexsql.com/sql_tools_source_control.aspx 
 http://it.wikipedia.org/wiki/Application_lifecycle_management 
 http://www.getlatestversion.it/ (ALM italian community) 
 http://suxstellino.wordpress.com/tag/alm/ 
 http://blogs.dotnethell.it/suxstellino/Category_2927.aspx 
 http://blogs.msdn.com/b/ssdt/archive/2012/02/02/including-data-in-an-sql-server-database-project. 
#sqlsatParma 
Resources 
aspx 
and-the-like.aspx 
aspx 
aspx 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
Q&A 
 Domande? 
November 22 #sqlsat355 nd, 2014
#sqlsatParma 
THANKS! 
#sqlsatParma 
#sqlsat355 
November 22 #sqlsat355 nd, 2014

Más contenido relacionado

Destacado

Oraciones simples con solucionario (ppt)
Oraciones simples con solucionario (ppt)Oraciones simples con solucionario (ppt)
Oraciones simples con solucionario (ppt)
CastilloAguilera
 
Educational managment task_2
Educational managment task_2Educational managment task_2
Educational managment task_2
alexandersaa2013
 

Destacado (16)

[ENG] Sql Saturday 355 in Parma - New "SQL Server databases under source cont...
[ENG] Sql Saturday 355 in Parma - New "SQL Server databases under source cont...[ENG] Sql Saturday 355 in Parma - New "SQL Server databases under source cont...
[ENG] Sql Saturday 355 in Parma - New "SQL Server databases under source cont...
 
Slide sharing
Slide sharingSlide sharing
Slide sharing
 
DotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerDotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql Server
 
#DOAW16 - DevOps@work Roma 2016 - Databases under source control
#DOAW16 - DevOps@work Roma 2016 - Databases under source control#DOAW16 - DevOps@work Roma 2016 - Databases under source control
#DOAW16 - DevOps@work Roma 2016 - Databases under source control
 
PASS Virtual Chapter - SQL Server Continuous Deployment
PASS Virtual Chapter - SQL Server Continuous DeploymentPASS Virtual Chapter - SQL Server Continuous Deployment
PASS Virtual Chapter - SQL Server Continuous Deployment
 
PASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL ServerPASS Virtual Chapter - Unit Testing su SQL Server
PASS Virtual Chapter - Unit Testing su SQL Server
 
Oraciones simples con solucionario (ppt)
Oraciones simples con solucionario (ppt)Oraciones simples con solucionario (ppt)
Oraciones simples con solucionario (ppt)
 
Educational managment task_2
Educational managment task_2Educational managment task_2
Educational managment task_2
 
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
 
PASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous IntegrationPASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous Integration
 
Directing teaching resume 2015
Directing teaching resume 2015Directing teaching resume 2015
Directing teaching resume 2015
 
Lietuviai praranda laisvę
Lietuviai praranda laisvęLietuviai praranda laisvę
Lietuviai praranda laisvę
 
Activity 3
Activity 3Activity 3
Activity 3
 
Lista 2 - geografia
Lista 2 - geografiaLista 2 - geografia
Lista 2 - geografia
 
[Ita] Sql Saturday 462 Parma - Sql Server 2016 JSON support
[Ita] Sql Saturday 462 Parma - Sql Server 2016 JSON support[Ita] Sql Saturday 462 Parma - Sql Server 2016 JSON support
[Ita] Sql Saturday 462 Parma - Sql Server 2016 JSON support
 
#DOAW16 - DevOps@work Roma 2016 - Testing your databases
#DOAW16 - DevOps@work Roma 2016 - Testing your databases#DOAW16 - DevOps@work Roma 2016 - Testing your databases
#DOAW16 - DevOps@work Roma 2016 - Testing your databases
 

Similar a [ITA] Sql Saturday 355 in Parma - New SQL Server databases under source control

Entity Framework 7, Back To The Future!
Entity Framework 7, Back To The Future!Entity Framework 7, Back To The Future!
Entity Framework 7, Back To The Future!
Michael Denny
 
Confio Ignite - webinar by Matteo Durighetto
Confio Ignite - webinar by Matteo DurighettoConfio Ignite - webinar by Matteo Durighetto
Confio Ignite - webinar by Matteo Durighetto
Miriade Spa
 
Modernize Legacy Systems with Kubernetes
Modernize Legacy Systems with KubernetesModernize Legacy Systems with Kubernetes
Modernize Legacy Systems with Kubernetes
Giulio Roggero
 

Similar a [ITA] Sql Saturday 355 in Parma - New SQL Server databases under source control (20)

Doaw2020 - Dalla produzione alla QA, provisioning su SQL Server
Doaw2020 - Dalla produzione alla QA, provisioning su SQL ServerDoaw2020 - Dalla produzione alla QA, provisioning su SQL Server
Doaw2020 - Dalla produzione alla QA, provisioning su SQL Server
 
Database under source control
Database under source controlDatabase under source control
Database under source control
 
Entity Framework 7, Back To The Future!
Entity Framework 7, Back To The Future!Entity Framework 7, Back To The Future!
Entity Framework 7, Back To The Future!
 
Database Project in Visual Studio 2010
Database Project in Visual Studio 2010Database Project in Visual Studio 2010
Database Project in Visual Studio 2010
 
Microsoft Fast - Overview
Microsoft Fast - OverviewMicrosoft Fast - Overview
Microsoft Fast - Overview
 
Confio Ignite - webinar by Matteo Durighetto
Confio Ignite - webinar by Matteo DurighettoConfio Ignite - webinar by Matteo Durighetto
Confio Ignite - webinar by Matteo Durighetto
 
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
 
SQL Server Benchmarking, Baselining and Workload Analysis
SQL Server Benchmarking, Baselining and Workload AnalysisSQL Server Benchmarking, Baselining and Workload Analysis
SQL Server Benchmarking, Baselining and Workload Analysis
 
Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)
 
Progettare e sviluppare soluzioni serverless con AWS
Progettare e sviluppare soluzioni serverless con AWSProgettare e sviluppare soluzioni serverless con AWS
Progettare e sviluppare soluzioni serverless con AWS
 
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
 
CDays15 - AZ08 - DocumentDB: il NoSql secondo Azure
CDays15 - AZ08 - DocumentDB: il NoSql secondo AzureCDays15 - AZ08 - DocumentDB: il NoSql secondo Azure
CDays15 - AZ08 - DocumentDB: il NoSql secondo Azure
 
Webcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio OnlineWebcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio Online
 
Modernize Legacy Systems with Kubernetes
Modernize Legacy Systems with KubernetesModernize Legacy Systems with Kubernetes
Modernize Legacy Systems with Kubernetes
 
CONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERCONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVER
 
Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011
 
Costruire una chain of custody del software - una guida per Cto Cio Devops
Costruire una chain of custody del software - una guida per Cto Cio DevopsCostruire una chain of custody del software - una guida per Cto Cio Devops
Costruire una chain of custody del software - una guida per Cto Cio Devops
 
Code quality e test automatizzati con JavaScript
Code quality e test automatizzati con JavaScriptCode quality e test automatizzati con JavaScript
Code quality e test automatizzati con JavaScript
 
Azure functions
Azure functionsAzure functions
Azure functions
 
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2
MongoDB Atlas: il modo migliore per eseguire MongoDB in ambiente cloud 2
 

Más de Alessandro Alpi

Más de Alessandro Alpi (12)

Mvp4 croatia - Being a dba in a devops world
Mvp4 croatia - Being a dba in a devops worldMvp4 croatia - Being a dba in a devops world
Mvp4 croatia - Being a dba in a devops world
 
Digital warriors 2020 - Smart?
Digital warriors 2020 - Smart?Digital warriors 2020 - Smart?
Digital warriors 2020 - Smart?
 
Sql Wars - SQL the attack of the Clones and the rebellion of the Containers
Sql Wars - SQL the attack of the Clones and the rebellion of the Containers Sql Wars - SQL the attack of the Clones and the rebellion of the Containers
Sql Wars - SQL the attack of the Clones and the rebellion of the Containers
 
Sql Wars - SQL Clone vs Docker Containers
Sql Wars - SQL Clone vs Docker Containers Sql Wars - SQL Clone vs Docker Containers
Sql Wars - SQL Clone vs Docker Containers
 
Wpc2019 - Distruggere DevOps, la storia di un vero team
Wpc2019 - Distruggere DevOps, la storia di un vero teamWpc2019 - Distruggere DevOps, la storia di un vero team
Wpc2019 - Distruggere DevOps, la storia di un vero team
 
Sql start!2019 Migliorare la produttività per lo sviluppo su SQL Server
Sql start!2019 Migliorare la produttività per lo sviluppo su SQL ServerSql start!2019 Migliorare la produttività per lo sviluppo su SQL Server
Sql start!2019 Migliorare la produttività per lo sviluppo su SQL Server
 
Configuration e change management con Disciplined Agile Framework
Configuration e change management con Disciplined Agile FrameworkConfiguration e change management con Disciplined Agile Framework
Configuration e change management con Disciplined Agile Framework
 
Basta poco per distruggere DevOps
Basta poco per distruggere DevOpsBasta poco per distruggere DevOps
Basta poco per distruggere DevOps
 
Automatizzare il processo di link dei database con redgate source control
Automatizzare il processo di link dei database con redgate source controlAutomatizzare il processo di link dei database con redgate source control
Automatizzare il processo di link dei database con redgate source control
 
Sql saturday parma 2017 (#sqlsat675) - Deep space Cosmos DB
Sql saturday parma 2017 (#sqlsat675) - Deep space Cosmos DBSql saturday parma 2017 (#sqlsat675) - Deep space Cosmos DB
Sql saturday parma 2017 (#sqlsat675) - Deep space Cosmos DB
 
Sql Saturday a Pordenone - Sql Server journey, da dev a ops
Sql Saturday a Pordenone - Sql Server journey, da dev a opsSql Saturday a Pordenone - Sql Server journey, da dev a ops
Sql Saturday a Pordenone - Sql Server journey, da dev a ops
 
[Eng] Sql Saturday TorinoExpo - Sql Server 2016 JSON support
[Eng] Sql Saturday TorinoExpo - Sql Server 2016 JSON support[Eng] Sql Saturday TorinoExpo - Sql Server 2016 JSON support
[Eng] Sql Saturday TorinoExpo - Sql Server 2016 JSON support
 

[ITA] Sql Saturday 355 in Parma - New SQL Server databases under source control

  • 1. #sqlsatParma Database sotto source control Alessandro Alpi @suxstellino www.alessandroalpi.net November 22 #sqlsat355 nd, 2014
  • 2. #sqlsatParma Sponsors November 22 #sqlsat355 nd, 2014
  • 3. #sqlsatParma Organizers November 22 #sqlsat355 nd, 2014
  • 4. #sqlsatParma Speaker  SQL Server MVP dal 2008  Microsoft Certified  blog:  [ITA] http://blogs.dotnethell.it/suxstellino  [ENG] http://suxstellino.wordpress.com/  Maggiori informazioni su:  http://www.alessandroalpi.net November 22 #sqlsat355 nd, 2014
  • 5. #sqlsatParma Agenda  Concetti ALM/DLM  Source control manager  Database vs Codice  Database ALM tools  Soluzioni per il development  Conclusioni  Q&A November 22 #sqlsat355 nd, 2014
  • 6. Application Lifecycle Management (ALM) rappresenta l'unione di attività di gestione di business con attività di ingegneria del software, resa possibile dall'utilizzo di strumenti che facilitano la gestione delle fasi di: analisi dei requisiti, progetto architetturale, sviluppo, testing, gestione delle release, del change e del deployment. (fonte Wikipedia) #sqlsatParma Che cosa si intende con ALM? November 22 #sqlsat355 nd, 2014
  • 7.  Rottura delle barriere tra i team (integrazione)  Rilascio di software di qualità  Rilascio di software in tempi brevi  Soddisfazione del cliente  Migliore organizzazione del lavoro  Monitorizzazione e tracciabilità delle attività  Migliore gestione del codice (più «pulito») #sqlsatParma Perchè ALM? November 22 #sqlsat355 nd, 2014
  • 8.  La parte di database ha analisi e sviluppo  I database devono poter essere distribuiti  I database devono essere sincronizzati nell’ambiente di sviluppo  Il database avrà «cambiamenti» da associare ad «attività»  Il database dovrebbe essere testato  Di certo è una cosa di cui fare deploy  #sqlsatParma ALM e database November 22 #sqlsat355 nd, 2014
  • 9. #sqlsatParma Per raggiungere la qualità..  Continuous Integration!  SVILUPPO  SEND  BUILD  TEST November 22 #sqlsat355 nd, 2014
  • 10. DLM – Database lifecycle management DLM (sottoinsieme di ALM) è un approccio alla gestione dello schema del database, dei dati e dei metadati. Ma non solo, è l’insieme degli strumenti e delle tecnologie che consentono l’organizzazione del ciclo di vita di un database, partendo dall’analisi, passando per lo sviluppo, il testing ed il deploy, per arrivare alla fase di backup e persistenza dei dati. (fonte TechNet) #sqlsatParma November 22 #sqlsat355 nd, 2014
  • 11.  E dei cambiamenti del nostro codice (e non solo)  Entità condivisa nelle fasi di sviluppo, deploy e team management  Dotato di interfaccia (anche grafica) #sqlsatParma Source Control Manager  Gestore delle versioni November 22 #sqlsat355 nd, 2014
  • 12. #sqlsatParma SCM – Perchè li utilizziamo  Versioni del nostro codice  Salvataggio sicuro dei nostri file  Distribuzione delle linee di sviluppo al team  Creazione di un punto centrale per i deploy  Automatizzare processi di build e di test  Le necessità di ogni team.. November 22 #sqlsat355 nd, 2014
  • 13.  Il DB può essere un file «nell’applicazione»  Il DB «sta su server»  Il DB persiste dati utente  Il DB non è tutto e solo codice  Tuttavia i cambiamenti al DB devono riflettersi a Il source control potrebbe sembrare «scomodo» #sqlsatParma SCM – Parlando di database tutto il team November 22 #sqlsat355 nd, 2014
  • 14.  Come potremmo semplicemente gestire le fix?  Come prevenire regressioni?  Come avere velocemente più ambienti di sviluppo?  Come creare semplicemente una nuova linea dev?  Come utilizzare versioni differenti dello stesso DB?  Come potremmo rendere il DB sincronizzato agli #sqlsatParma Ma senza un SCM ultimi cambiamenti dell’applicazione? November 22 #sqlsat355 nd, 2014
  • 15.  Il database è comunque codice (programmabilità, ddl, grant, ecc.)  Le tabelle di «dominio» sono come tanti enum (dati statici)  Anche il DB dovrebbe essere trasformato in più line di sviluppo durante le operazioni di branch del codice #sqlsatParma DB vs. codice – così diversi? November 22 #sqlsat355 nd, 2014
  • 16.  I puntamenti ai linked server sono configurazioni (come l’app.config)  Le server login sono configurazioni di ambiente  Il database persiste i dati utente. Non è un problema *da source control* #sqlsatParma DB vs. codice – così diversi? November 22 #sqlsat355 nd, 2014
  • 17.  Versioni dei nostri oggetti (DDL) e della programmabilità su database  Le label comprendono il database, in modo da poter tornare ad una situazione precedente  Team sincronizzati sulla get di una versione (tipicamente l’ultima)  Per fare versioning anche dei dati statici #sqlsatParma Perché mettere il DB sotto SCM November 22 #sqlsat355 nd, 2014
  • 18.  Continuous Integration  Branch (più linee di sviluppo e più contesti)  Ambienti isolati per team dislocati  Atomicità tra applicazione e DB  Salvataggio della documentazione del database #sqlsatParma E ancora.. November 22 #sqlsat355 nd, 2014
  • 19. #sqlsatParma SCM – Eccone alcuni  TFS on-premises  Visual Studio Online  Git  Mercurial  Subversion (SVN)  CVS  … November 22 #sqlsat355 nd, 2014
  • 20. #sqlsatParma Operazioni possibili con SCM  Get  Commit/Checkin  Sync/Push/Pull/Fetch  Undo  Save (working folder/Git)  Delete (working folder/Git)  Edit (working folder/Git) November 22 #sqlsat355 nd, 2014
  • 21. #sqlsatParma Tool per la gestione SCM per DB  Visual Studio  Database projects  Red-Gate Source Control  ApexSQL Source Control  … November 22 #sqlsat355 nd, 2014
  • 22. Indipendentemente dal tool che si usa Team Explorer consente:  Migliore gestione dei changeset  Migliore associazione dei changeset ai task  Miglior controllo sulle fasi di commit e di review  Gestione centralizzata delle policy di checkin  Single point per la gestione del team project #sqlsatParma Il Team Explorer November 22 #sqlsat355 nd, 2014
  • 23. Soluzioni e tool – development/change  Management Studio non basta  Visual Studio e Database projects  Integrazioni di tool di terze parti con SSMS  Software di terze parti non integrati con IDE proprietari  Li vedremo più avanti.. #sqlsatParma (esempio: Red-Gate SQL Source Control) November 22 #sqlsat355 nd, 2014
  • 24. #sqlsatParma Visual Studio + Database projects  Connected database development November 22 #sqlsat355 nd, 2014
  • 25. #sqlsatParma Visual Studio + Database projects  Project based development November 22 #sqlsat355 nd, 2014
  • 26. #sqlsatParma DEMO Connessione ad un repo locale Git + November 22 #sqlsat355 nd, 2014
  • 27.  Integrazione con SQL Server Management Studio #sqlsatParma Red-Gate SQL Source Control November 22 #sqlsat355 nd, 2014
  • 28. #sqlsatParma Red-Gate SQL Source Control  Modello di sviluppo condiviso  Modello di sviluppo dedicato (consigliato) November 22 #sqlsat355 nd, 2014
  • 29. #sqlsatParma DEMO Connessione ad un repo locale Git + November 22 #sqlsat355 nd, 2014
  • 30.  Integrazione con SQL Server Management Studio #sqlsatParma ApexSQL Source Control November 22 #sqlsat355 nd, 2014
  • 31. #sqlsatParma ApexSQL Source Control  Modello di sviluppo condiviso November 22 #sqlsat355 nd, 2014
  • 32. #sqlsatParma DEMO Connessione ad un repo locale Git + November 22 #sqlsat355 nd, 2014
  • 33.  La merge necessita di tool di terze parti  Non ha la gestione dei dati statici (ma è prevista per prossime release) #sqlsatParma Comparazione – ApexSQL  Vantaggi  Basso costo  UI efficace  Molti tipi di source control supportati  Integrazione veloce con SSMS  Molto rapido come tempi di risposta  Supporto qualificato  Svantaggi  Prodotto molto giovane (release recente/rifacimento prodotto precedente) November 22 #sqlsat355 nd, 2014
  • 34. #sqlsatParma Comparazione – Red-Gate  Vantaggi  UI efficace  Molti tipi di source control supportati  Integrazione veloce con SSMS  Automazione dei processi e linee di comando  Salvataggio dei dati statici  Migrazioni facilitate con refactor integrati  Creazione di script e integrazione con altri prodotti Red-Gate (CI)  Supporto qualificato  Svantaggi  Costo non molto basso  Nelle prossime release, prodotto molto giovane  Nell’attuale release la migrazione non supporta il branching nelle migrazioni November 22 #sqlsat355 nd, 2014
  • 35. #sqlsatParma Comparazione – Visual Studio  Vantaggi  Nessun costo aggiuntivo (dipende dalla licenza)  Prodotto usato già dagli sviluppatori  Estendibile (nuget)  Ha il Team Explorer  È estremamente potente  Integra anche progetti di BI (SSIS, SSAS, SSRS)  Tipi di progetto e template cross versione  Deploy e strumenti di refactor integrati  Svantaggi  Solo due source control supportati (VSO/TFS e Git)  Non ha la gestione dei dati statici November 22 #sqlsat355 nd, 2014
  • 36.  Com’è il nostro team?  Requisiti minimi per la scelta del source control tool?  Quanto posso spendere?  Curva di apprendimento se cambio IDE?  In definitiva, il Source Control dovremmo usarlo  #sqlsatParma Conclusioni  Altre considerazioni per la scelta November 22 #sqlsat355 nd, 2014
  • 37.  http://www.codinghorror.com/blog/2006/12/is-your-database-under-version-control.html  http://odetocode.com/blogs/scott/archive/2008/01/30/three-rules-for-database-work.aspx  http://odetocode.com/blogs/scott/archive/2008/01/31/versioning-databases-the-baseline.aspx  http://odetocode.com/blogs/scott/archive/2008/02/02/versioning-databases-change-scripts.  http://odetocode.com/blogs/scott/archive/2008/02/02/versioning-databases-views-stored-procedures-  http://odetocode.com/blogs/scott/archive/2008/02/03/versioning-databases-branching-and-merging.  http://www.red-gate.com/products/sql-development/sql-source-control/  http://apexsql.com/sql_tools_source_control.aspx  http://it.wikipedia.org/wiki/Application_lifecycle_management  http://www.getlatestversion.it/ (ALM italian community)  http://suxstellino.wordpress.com/tag/alm/  http://blogs.dotnethell.it/suxstellino/Category_2927.aspx  http://blogs.msdn.com/b/ssdt/archive/2012/02/02/including-data-in-an-sql-server-database-project. #sqlsatParma Resources aspx and-the-like.aspx aspx aspx November 22 #sqlsat355 nd, 2014
  • 38. #sqlsatParma Q&A  Domande? November 22 #sqlsat355 nd, 2014
  • 39. #sqlsatParma THANKS! #sqlsatParma #sqlsat355 November 22 #sqlsat355 nd, 2014