SlideShare a Scribd company logo
1 of 40
Database e processi ALM
Alessandro Alpi
@suxstellino

Gian Maria Ricci
@alkampfer

December 13th, 2013

#sqlsat264
Sponsors & Media Partners

December 13th, 2013

#sqlsat264
Organizers

December 13th, 2013

#sqlsat264
About us
 Entrambi MVPs (SQL e VS ALM) 
 Entrambi Microsoft Certified * 
 blogs:
 http://blogs.dotnethell.it/suxstellino
 http://www.codewrecks.com/blog/

 Maggiori informazioni su:
 http://www.alessandroalpi.net
 http://www.getlatestversion.it/

 Funzionerà? 
December 13th, 2013

#sqlsat264
Agenda










Concetti ALM
Source control manager
Database vs Codice
Database ALM tools
Soluzioni per il development
Soluzioni per il testing
Soluzioni per il deployment
Conclusioni
Q&A

December 13th, 2013

#sqlsat264
Che cosa si intende con ALM?
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)

December 13th, 2013

#sqlsat264
Perchè ALM?








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»)

December 13th, 2013

#sqlsat264
Continuous integration
 Verifica costante dell’integrità del database
(strutture e dati statici)
 Esecuzione automatizzata di unit test
 Esecuzione automatizzata di analisi di codice
 «compilazione» non prevista su database

December 13th, 2013

#sqlsat264
Continous delivery/deployment
 Procedure di aggiornamento database
automatizzate
 Sincronizzazione dei dati statici
automatizzata
 Creazione di pipeline di deploy
 Test di integrazione (ove possibile)
 Deploy automatizzato del «package» (ove
possibile)
December 13th, 2013

#sqlsat264
Task based work
 Ogni modifica dovrebbe avere una
«motivazione»
 Un progetto Agile è definito dal suo Backlog
 Progetti più «tradizionali» sono basati solo su
Requisiti
 I task sono assegnati e sviluppati in iterazioni
(nuovo punto di vista sulle stime)

December 13th, 2013

#sqlsat264
ALM e database
 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 
December 13th, 2013

#sqlsat264
Source Control Manager
 Gestore delle versioni, dei cambiamenti del
nostro codice (e non solo)
 Entità condivisa nelle fasi di sviluppo, deploy
e team management
 Dotato di interfaccia (anche grafica)

December 13th, 2013

#sqlsat264
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
I bisogni di ogni team..

December 13th, 2013

#sqlsat264
SCM – Parlando di database






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
tutto il team

Il source control potrebbe sembrare «scomodo»
December 13th, 2013

#sqlsat264
Ma senza un SCM







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
ultimi cambiamenti dell’applicazione?

December 13th, 2013

#sqlsat264
DB vs. codice – così diversi?
 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
December 13th, 2013

#sqlsat264
DB vs. codice – così diversi?
 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*

December 13th, 2013

#sqlsat264
Perché mettere il DB sotto SCM
 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
December 13th, 2013

#sqlsat264
E ancora..






Continuous Integration (con test)
Branch (più linee di sviluppo e più contesti)
Ambienti isolati per team dislocati
Atomicità tra applicazione e DB
Salvataggio della documentazione del
database

December 13th, 2013

#sqlsat264
SCM – Eccone alcuni








TFS (on-premises e Visual Studio Online)
Git
Mercurial
Subversion
CVS
Perforce
…

December 13th, 2013

#sqlsat264
Operazioni possibili con SCM
 Alcune delle operazioni sono:







Get
Commit/Checkin
Undo
Save (working folder)
Delete (working folder)
Edit (working folder)

December 13th, 2013

#sqlsat264
Tool per la gestione SCM per DB
 Visual Studio
 Database projects

 Red-Gate Source Control
 SQL Test (for CI)

 ApexSQL Versions
…

December 13th, 2013

#sqlsat264
Il Team Explorer
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

December 13th, 2013

#sqlsat264
Soluzioni e tool – development/change
 Management Studio non basta
 Visual Studio e Database projects
 Integrazioni di tool di terze parti con SSMS
(esempio: Red-Gate SQL Source Control)

 Software di terze parti non integrati con IDE
proprietari
 Li vedremo più avanti..

December 13th, 2013

#sqlsat264
Visual Studio + Database projects
 Connected database development

December 13th, 2013

#sqlsat264
Visual Studio + Database projects
 Project based development

December 13th, 2013

#sqlsat264
DEMO
Connessione al VSOnline e introduzione ai
Database Project con Visual Studio
 Intro al tipo di progetto
 Connessione
 Sviluppo
 Refactor
 Checkin
 Associazione changeset
December 13th, 2013

#sqlsat264
Red-Gate SQL Source Control
 Integrazione con SQL Server Management Studio

December 13th, 2013

#sqlsat264
Red-Gate SQL Source Control
 Integrazione con Visual Studio (SQLConnect)

December 13th, 2013

#sqlsat264
Red-Gate SQL Source Control
 Modello di sviluppo condiviso

 Modello di sviluppo dedicato (consigliato)

December 13th, 2013

#sqlsat264
DEMO
Connessione al VSOnline e introduzione al RedGate SQL Source Control
 Integrazione SSMS
 Tipo di progetto (shared, dedicated)
 SCM
 Working folder
 Connessione diretta al SCM

 Dati statici
 Checkin/Save
 Associazione changeset
December 13th, 2013

#sqlsat264
Soluzioni e tool – Unit testing
 Visual Studio
 Database sandbox
 Database unit testing
 Backdoor manipulation

 Red-Gate SQL Source Control
 Framework tSQLt
 SQLTest plugin
 Integrato con SSMS
 Builtin test classes
 Naming conventions
December 13th, 2013

#sqlsat264
DEMO
Unit testing con Visual Studio e Red-Gate SQL
Source Control

December 13th, 2013

#sqlsat264
Soluzioni e tool – Deployment
 Visual Studio Data compare
Live database
Snapshot
Database project

 Deploy da:
Data compare
Publish
F5
Dati con post build script
December 13th, 2013

#sqlsat264
Soluzioni e tool – Deployment
 Red-Gate SQL Compare e Data Compare








Live database
Working folder
Backup
Integrato con SSMS
Script di deploy e migrazione
Customizzazione dei progetti di comparazione
Dati e strutture gestiti autonomamente

 Deploy da:





Compare project (strutture)
Compare project (dati)
Script folder
Nuget

December 13th, 2013

#sqlsat264
DEMO
Deployment con VS e Red-Gate SQL Source
Control

December 13th, 2013

#sqlsat264
Conclusioni
 Quali tool utilizzare?
 Ogni tool ha le sue peculiarità
 Red-Gate SQL Source Control consente di gestire i dati in una
maniera molto semplice
 Visual Studio garantirà la stessa struttura del progetto database
 Visual Studio è più comodo per gli sviluppatori (o SQL Connect)
 Quali parametri dovremmo considerare?
 Com’è il nostro team
 Quali sono i requisiti minimi per la scelta del source control tool
 Quanto posso spendere?
 Posso permettermi la curva di apprendimento se cambio IDE?

 In definitiva però, il Source Control dovrei usarlo 

December 13th, 2013

#sqlsat264
Resources














http://blog.knodev.com/search/label/ALM (blog di Davide Vernole su ALM)
http://mattvsts.blogspot.it/ (blog di Matteo Emili su ALM)
http://www.getlatestversion.it (Portale ALM Italiano)
http://www.getlatestversion.it/2013/11/28/la-difficile-arte-della-stima/
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-changescripts.aspx
http://odetocode.com/blogs/scott/archive/2008/02/02/versioning-databases-views-storedprocedures-and-the-like.aspx
http://odetocode.com/blogs/scott/archive/2008/02/03/versioning-databases-branching-andmerging.aspx
http://www.red-gate.com/products/sql-development/sql-source-control/
http://vsaralmassessment.codeplex.com
http://it.wikipedia.org/wiki/Application_lifecycle_management

December 13th, 2013

#sqlsat264
Q&A
 Domande?

December 13th, 2013

#sqlsat264
#sqlsat264

THANKS!

December 13th, 2013

#sqlsat264

More Related Content

Viewers also liked

Lietuviai praranda laisvę
Lietuviai praranda laisvęLietuviai praranda laisvę
Lietuviai praranda laisvęErika Bražienė
 
[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 supportAlessandro Alpi
 
#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 controlAlessandro Alpi
 
Oraciones simples con solucionario (ppt)
Oraciones simples con solucionario (ppt)Oraciones simples con solucionario (ppt)
Oraciones simples con solucionario (ppt)CastilloAguilera
 
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 DeploymentAlessandro Alpi
 
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 ServerAlessandro Alpi
 
[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...Alessandro Alpi
 
Quick intro sul Source Control su SQL Server
Quick intro sul Source Control su SQL ServerQuick intro sul Source Control su SQL Server
Quick intro sul Source Control su SQL ServerAlessandro Alpi
 
Educational managment task_2
Educational managment task_2Educational managment task_2
Educational managment task_2alexandersaa2013
 
Cwit interview
Cwit interviewCwit interview
Cwit interviewakhtarsaad
 

Viewers also liked (16)

Lietuviai praranda laisvę
Lietuviai praranda laisvęLietuviai praranda laisvę
Lietuviai praranda laisvę
 
Gordonas sausio
Gordonas sausioGordonas sausio
Gordonas sausio
 
[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
 
Lista 5
Lista 5Lista 5
Lista 5
 
#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
 
Directing teaching resume 2015
Directing teaching resume 2015Directing teaching resume 2015
Directing teaching resume 2015
 
Acting In The Digital Age Workshop @UMFF
Acting In The Digital Age Workshop @UMFFActing In The Digital Age Workshop @UMFF
Acting In The Digital Age Workshop @UMFF
 
Oraciones simples con solucionario (ppt)
Oraciones simples con solucionario (ppt)Oraciones simples con solucionario (ppt)
Oraciones simples con solucionario (ppt)
 
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
 
Lista 2 - geografia
Lista 2 - geografiaLista 2 - geografia
Lista 2 - geografia
 
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
 
[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...
 
Quick intro sul Source Control su SQL Server
Quick intro sul Source Control su SQL ServerQuick intro sul Source Control su SQL Server
Quick intro sul Source Control su SQL Server
 
Educational managment task_2
Educational managment task_2Educational managment task_2
Educational managment task_2
 
Cwit interview
Cwit interviewCwit interview
Cwit interview
 
Activity 3
Activity 3Activity 3
Activity 3
 

Similar to [ITA] SQL Saturday 264 - Put databases in ALM backgrounds

Database under source control
Database under source controlDatabase under source control
Database under source controlKlab
 
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 DatabaseEmanuele Zanchettin
 
Database Project in Visual Studio 2010
Database Project in Visual Studio 2010Database Project in Visual Studio 2010
Database Project in Visual Studio 2010Gian Maria Ricci
 
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 DatabaseEmanuele Zanchettin
 
Implementare e mantenere un progetto azure sql database v.2
Implementare e mantenere un progetto azure sql database v.2Implementare e mantenere un progetto azure sql database v.2
Implementare e mantenere un progetto azure sql database v.2Emanuele Zanchettin
 
Business Intelligence & Analytics
Business Intelligence & AnalyticsBusiness Intelligence & Analytics
Business Intelligence & AnalyticsDavide Mauri
 
noSQL La nuova frontiera dei Database [DB05-S]
noSQL La nuova frontiera dei Database [DB05-S]noSQL La nuova frontiera dei Database [DB05-S]
noSQL La nuova frontiera dei Database [DB05-S]Andrea Maddalena
 
Be02 portare la nostra applicazione su azure
Be02   portare la nostra applicazione su azureBe02   portare la nostra applicazione su azure
Be02 portare la nostra applicazione su azureDotNetCampus
 
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 2MongoDB
 
CONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERCONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERDotNetCampus
 
Tesina di fine seminario sas ed sql
Tesina di fine seminario sas ed sqlTesina di fine seminario sas ed sql
Tesina di fine seminario sas ed sqlMarco D'Alessandro
 
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 ServerAlessandro Alpi
 
Il cielo è sempre più azure
Il cielo è sempre più azureIl cielo è sempre più azure
Il cielo è sempre più azureKlab
 
2° Ciclo Microsoft Fondazione CRUI 5° Sessione: Process Automation, implement...
2° Ciclo Microsoft Fondazione CRUI 5° Sessione: Process Automation, implement...2° Ciclo Microsoft Fondazione CRUI 5° Sessione: Process Automation, implement...
2° Ciclo Microsoft Fondazione CRUI 5° Sessione: Process Automation, implement...Jürgen Ambrosi
 
GWT vs CSS3
GWT vs CSS3GWT vs CSS3
GWT vs CSS3GWTcon
 
Database project alla riscossa
Database project alla riscossaDatabase project alla riscossa
Database project alla riscossaGian Maria Ricci
 
Yashi Enterprise e Microsoft Perchè aggiornare a windows server 2012 r2
Yashi Enterprise e Microsoft Perchè aggiornare a windows server 2012 r2Yashi Enterprise e Microsoft Perchè aggiornare a windows server 2012 r2
Yashi Enterprise e Microsoft Perchè aggiornare a windows server 2012 r2Yashi Italia
 

Similar to [ITA] SQL Saturday 264 - Put databases in ALM backgrounds (20)

Database under source control
Database under source controlDatabase under source control
Database under source control
 
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
 
Database Project in Visual Studio 2010
Database Project in Visual Studio 2010Database Project in Visual Studio 2010
Database Project in Visual Studio 2010
 
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
 
Implementare e mantenere un progetto azure sql database v.2
Implementare e mantenere un progetto azure sql database v.2Implementare e mantenere un progetto azure sql database v.2
Implementare e mantenere un progetto azure sql database v.2
 
Business Intelligence & Analytics
Business Intelligence & AnalyticsBusiness Intelligence & Analytics
Business Intelligence & Analytics
 
noSQL La nuova frontiera dei Database [DB05-S]
noSQL La nuova frontiera dei Database [DB05-S]noSQL La nuova frontiera dei Database [DB05-S]
noSQL La nuova frontiera dei Database [DB05-S]
 
Be02 portare la nostra applicazione su azure
Be02   portare la nostra applicazione su azureBe02   portare la nostra applicazione su azure
Be02 portare la nostra applicazione su azure
 
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
 
CONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERCONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVER
 
Tesina di fine seminario sas ed sql
Tesina di fine seminario sas ed sqlTesina di fine seminario sas ed sql
Tesina di fine seminario sas ed sql
 
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
 
Azure functions
Azure functionsAzure functions
Azure functions
 
Il cielo è sempre più azure
Il cielo è sempre più azureIl cielo è sempre più azure
Il cielo è sempre più azure
 
Microsoft Fast - Overview
Microsoft Fast - OverviewMicrosoft Fast - Overview
Microsoft Fast - Overview
 
2° Ciclo Microsoft Fondazione CRUI 5° Sessione: Process Automation, implement...
2° Ciclo Microsoft Fondazione CRUI 5° Sessione: Process Automation, implement...2° Ciclo Microsoft Fondazione CRUI 5° Sessione: Process Automation, implement...
2° Ciclo Microsoft Fondazione CRUI 5° Sessione: Process Automation, implement...
 
GWT vs CSS3
GWT vs CSS3GWT vs CSS3
GWT vs CSS3
 
Power bi
Power biPower bi
Power bi
 
Database project alla riscossa
Database project alla riscossaDatabase project alla riscossa
Database project alla riscossa
 
Yashi Enterprise e Microsoft Perchè aggiornare a windows server 2012 r2
Yashi Enterprise e Microsoft Perchè aggiornare a windows server 2012 r2Yashi Enterprise e Microsoft Perchè aggiornare a windows server 2012 r2
Yashi Enterprise e Microsoft Perchè aggiornare a windows server 2012 r2
 

More from Alessandro Alpi

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 worldAlessandro Alpi
 
Digital warriors 2020 - Smart?
Digital warriors 2020 - Smart?Digital warriors 2020 - Smart?
Digital warriors 2020 - Smart?Alessandro Alpi
 
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 Alessandro Alpi
 
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 Alessandro Alpi
 
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 teamAlessandro Alpi
 
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 ServerAlessandro Alpi
 
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 FrameworkAlessandro Alpi
 
Basta poco per distruggere DevOps
Basta poco per distruggere DevOpsBasta poco per distruggere DevOps
Basta poco per distruggere DevOpsAlessandro Alpi
 
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 controlAlessandro Alpi
 
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 DBAlessandro Alpi
 
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 opsAlessandro Alpi
 
[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 supportAlessandro Alpi
 

More from 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 264 - Put databases in ALM backgrounds

  • 1. Database e processi ALM Alessandro Alpi @suxstellino Gian Maria Ricci @alkampfer December 13th, 2013 #sqlsat264
  • 2. Sponsors & Media Partners December 13th, 2013 #sqlsat264
  • 4. About us  Entrambi MVPs (SQL e VS ALM)   Entrambi Microsoft Certified *   blogs:  http://blogs.dotnethell.it/suxstellino  http://www.codewrecks.com/blog/  Maggiori informazioni su:  http://www.alessandroalpi.net  http://www.getlatestversion.it/  Funzionerà?  December 13th, 2013 #sqlsat264
  • 5. Agenda          Concetti ALM Source control manager Database vs Codice Database ALM tools Soluzioni per il development Soluzioni per il testing Soluzioni per il deployment Conclusioni Q&A December 13th, 2013 #sqlsat264
  • 6. Che cosa si intende con ALM? 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) December 13th, 2013 #sqlsat264
  • 7. Perchè ALM?        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») December 13th, 2013 #sqlsat264
  • 8. Continuous integration  Verifica costante dell’integrità del database (strutture e dati statici)  Esecuzione automatizzata di unit test  Esecuzione automatizzata di analisi di codice  «compilazione» non prevista su database December 13th, 2013 #sqlsat264
  • 9. Continous delivery/deployment  Procedure di aggiornamento database automatizzate  Sincronizzazione dei dati statici automatizzata  Creazione di pipeline di deploy  Test di integrazione (ove possibile)  Deploy automatizzato del «package» (ove possibile) December 13th, 2013 #sqlsat264
  • 10. Task based work  Ogni modifica dovrebbe avere una «motivazione»  Un progetto Agile è definito dal suo Backlog  Progetti più «tradizionali» sono basati solo su Requisiti  I task sono assegnati e sviluppati in iterazioni (nuovo punto di vista sulle stime) December 13th, 2013 #sqlsat264
  • 11. ALM e database  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  December 13th, 2013 #sqlsat264
  • 12. Source Control Manager  Gestore delle versioni, dei cambiamenti del nostro codice (e non solo)  Entità condivisa nelle fasi di sviluppo, deploy e team management  Dotato di interfaccia (anche grafica) December 13th, 2013 #sqlsat264
  • 13. 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 I bisogni di ogni team.. December 13th, 2013 #sqlsat264
  • 14. SCM – Parlando di database      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 tutto il team Il source control potrebbe sembrare «scomodo» December 13th, 2013 #sqlsat264
  • 15. Ma senza un SCM       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 ultimi cambiamenti dell’applicazione? December 13th, 2013 #sqlsat264
  • 16. DB vs. codice – così diversi?  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 December 13th, 2013 #sqlsat264
  • 17. DB vs. codice – così diversi?  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* December 13th, 2013 #sqlsat264
  • 18. Perché mettere il DB sotto SCM  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 December 13th, 2013 #sqlsat264
  • 19. E ancora..      Continuous Integration (con test) Branch (più linee di sviluppo e più contesti) Ambienti isolati per team dislocati Atomicità tra applicazione e DB Salvataggio della documentazione del database December 13th, 2013 #sqlsat264
  • 20. SCM – Eccone alcuni        TFS (on-premises e Visual Studio Online) Git Mercurial Subversion CVS Perforce … December 13th, 2013 #sqlsat264
  • 21. Operazioni possibili con SCM  Alcune delle operazioni sono:       Get Commit/Checkin Undo Save (working folder) Delete (working folder) Edit (working folder) December 13th, 2013 #sqlsat264
  • 22. Tool per la gestione SCM per DB  Visual Studio  Database projects  Red-Gate Source Control  SQL Test (for CI)  ApexSQL Versions … December 13th, 2013 #sqlsat264
  • 23. Il Team Explorer 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 December 13th, 2013 #sqlsat264
  • 24. Soluzioni e tool – development/change  Management Studio non basta  Visual Studio e Database projects  Integrazioni di tool di terze parti con SSMS (esempio: Red-Gate SQL Source Control)  Software di terze parti non integrati con IDE proprietari  Li vedremo più avanti.. December 13th, 2013 #sqlsat264
  • 25. Visual Studio + Database projects  Connected database development December 13th, 2013 #sqlsat264
  • 26. Visual Studio + Database projects  Project based development December 13th, 2013 #sqlsat264
  • 27. DEMO Connessione al VSOnline e introduzione ai Database Project con Visual Studio  Intro al tipo di progetto  Connessione  Sviluppo  Refactor  Checkin  Associazione changeset December 13th, 2013 #sqlsat264
  • 28. Red-Gate SQL Source Control  Integrazione con SQL Server Management Studio December 13th, 2013 #sqlsat264
  • 29. Red-Gate SQL Source Control  Integrazione con Visual Studio (SQLConnect) December 13th, 2013 #sqlsat264
  • 30. Red-Gate SQL Source Control  Modello di sviluppo condiviso  Modello di sviluppo dedicato (consigliato) December 13th, 2013 #sqlsat264
  • 31. DEMO Connessione al VSOnline e introduzione al RedGate SQL Source Control  Integrazione SSMS  Tipo di progetto (shared, dedicated)  SCM  Working folder  Connessione diretta al SCM  Dati statici  Checkin/Save  Associazione changeset December 13th, 2013 #sqlsat264
  • 32. Soluzioni e tool – Unit testing  Visual Studio  Database sandbox  Database unit testing  Backdoor manipulation  Red-Gate SQL Source Control  Framework tSQLt  SQLTest plugin  Integrato con SSMS  Builtin test classes  Naming conventions December 13th, 2013 #sqlsat264
  • 33. DEMO Unit testing con Visual Studio e Red-Gate SQL Source Control December 13th, 2013 #sqlsat264
  • 34. Soluzioni e tool – Deployment  Visual Studio Data compare Live database Snapshot Database project  Deploy da: Data compare Publish F5 Dati con post build script December 13th, 2013 #sqlsat264
  • 35. Soluzioni e tool – Deployment  Red-Gate SQL Compare e Data Compare        Live database Working folder Backup Integrato con SSMS Script di deploy e migrazione Customizzazione dei progetti di comparazione Dati e strutture gestiti autonomamente  Deploy da:     Compare project (strutture) Compare project (dati) Script folder Nuget December 13th, 2013 #sqlsat264
  • 36. DEMO Deployment con VS e Red-Gate SQL Source Control December 13th, 2013 #sqlsat264
  • 37. Conclusioni  Quali tool utilizzare?  Ogni tool ha le sue peculiarità  Red-Gate SQL Source Control consente di gestire i dati in una maniera molto semplice  Visual Studio garantirà la stessa struttura del progetto database  Visual Studio è più comodo per gli sviluppatori (o SQL Connect)  Quali parametri dovremmo considerare?  Com’è il nostro team  Quali sono i requisiti minimi per la scelta del source control tool  Quanto posso spendere?  Posso permettermi la curva di apprendimento se cambio IDE?  In definitiva però, il Source Control dovrei usarlo  December 13th, 2013 #sqlsat264
  • 38. Resources              http://blog.knodev.com/search/label/ALM (blog di Davide Vernole su ALM) http://mattvsts.blogspot.it/ (blog di Matteo Emili su ALM) http://www.getlatestversion.it (Portale ALM Italiano) http://www.getlatestversion.it/2013/11/28/la-difficile-arte-della-stima/ 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-changescripts.aspx http://odetocode.com/blogs/scott/archive/2008/02/02/versioning-databases-views-storedprocedures-and-the-like.aspx http://odetocode.com/blogs/scott/archive/2008/02/03/versioning-databases-branching-andmerging.aspx http://www.red-gate.com/products/sql-development/sql-source-control/ http://vsaralmassessment.codeplex.com http://it.wikipedia.org/wiki/Application_lifecycle_management December 13th, 2013 #sqlsat264