SlideShare a Scribd company logo
1 of 33
Continuous Integration con SQL Server
Realizzare CI con SQL Server e prepararsi al DevOps
Alessandro Alpi
Microsoft MVP – SQL Server dal 2008
Blog ITA: http://blogs.dotnethell.it/suxstellino
Blog ENG: http://suxstellino.wordpress.com/
Website: http://www.alessandroalpi.net
CTO Engage IT Services S.r.l.
www.engageitservices.it
Team leader (Agile)
Communities
Getlatestversion.it
Parleremo di
Development teams
Codice, codice, codice e tsql, tsql, tsql
Source control
Checkin, invio dei changeset
Build e automazione
Costruzione di un ambiente in automatico
Testing
Esecuzione degli unit test, sempre in automatico
Continuous integration
È una pratica che consiste nell’allineamento
frequente (più volte al giorno) degli ambienti di
lavoro di sviluppo verso l’ambiente condiviso. Si
applica in contesti in cui lo sviluppo avviene
tramite un sistema di versioning (version
control system).
(fonte Wikipedia)
Continuous integration, workflow
Sviluppo
Commit/Checkin
Trigger della Build
Build del database
Creazione del package
Test sul database
Best practices
Check-in frequenti durante la giornata
Merge dei cambiamenti per ogni check-in
Evitare la «rottura» delle build
Comunicare l’eventuale «rottura» a tutto il team (evitare get)
Fare check-in solo se la build è «riparata»
Notificare quando è possibile fare una get da source control
Continuous Integration e DB
Poter fare get/commit dei cambiamenti come per il codice
Le build costruiscono una sandbox su cui eseguire i test
Commit frequenti sulla linea principale come per il codice
Rendere atomici database e applicazione
Sfruttare strumenti condivisi (Visual Studio, Team Explorer)
Vantaggi
Annulla la problematica «sul mio pc funziona» 
Consente l’automazione dei processi
Migliora la qualità del codice (proprio per i processi frequenti)
Rende subito disponibile il sorgente/db ad un nuovo dev
Non dimentica nessuna linea di sviluppo
Separa il deploy dallo sviluppo
Aumenta la visibilità del «prodotto»
Serve un..
..Source Control Manager
Source control manager
Gestore delle versioni
cambiamenti del nostro codice (ddl, programmabilità)
cambiamenti di altri elementi (snippet, strumenti dev)
cambiamenti sui dati «statici»
Entità condivisa in sviluppo (e team management)
Dotato di interfaccia (anche grafica)
Può sembrare scomodo su database
Strumenti
Visual Studio Database Projects
Red-Gate Source Control
ApexSQL Source Control
…
Management studio non basta!
Unitamente al Team Explorer (per chi usa Visual Studio)
Come inviamo i change..
..al Source Control Manager?
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
Management Studio
Integrato con SSMS
DEMO
Management Studio
Red Gate Source Control
Visual Studio Team Services
E ora..
..qualche test
Perchè unit test
Perchè unit test
Testare funzionalità mission-critical di business
Sviluppo evolutivo
Per capire precocemente alcuni bug
Supporto di alert automatici
Per prevenire regressioni il più possibile
Avere copertura di test
Scrivere in maniera «testabile» i nostri metodi
Cosa testare?
Calcoli in procedure e funzioni
Constraint (schema)
Casi limite e comportamenti attesi sui dati
Sicurezza
Standard
Strumenti
Framework
tSQLt
tSQLUnit (consigliato per SQL Server 2000)
SQLCop (per gli standard e le metriche)
Tools
SQLTest di Red-Gate (tSQLt + SQLCop)
Unit test project con Visual Studio
DEMO
tSQLt con SQL Test
Management Studio
Automatizziamo il tutto!
Build
Build codice = compilazione automatica dopo check-in
Build database:
Parte al check-in dei changeset
Crea un package (nuget in questo caso)
Crea un database per i test
Valida gli oggetti creati
Automazione
Red Gate SQL CI + plugin TFS + Script SC (DLM Automation
Suite)
1) Al check-in su source control fa partire la build
1) Crea automaticamente un database per i test
1) Crea un package nuget
2) Esegue i test
3) Allinea il package su db di QA/Staging
4) Pubblica il package su un nuget feed
Processo completo
Thanks to Steve Jones
using System;
using System.Collections.Generic;
using System.Text;
using eBay.Service.Core.Sdk;
using eBay.Service.Core.Soap;
namespace Trading_Samples
{
class Program
{
static void Main(string[] args)
{
MakeGetOrders();
Console.ReadLine();
Create table Orders
( OrderID int
, OrderDate datetime
, salesrep int
, customerid int
, status tnyint
)
Create procedure GetOrders
@o datetime
As
Begin
Select *
from orders
Where orderdate > @o
Development
Dev
Testing
Alter table Orders
Add status tinyint;
Create procedure GetOrders
…..
QA
Build
Commit
Test
Publish
Continuous Integration
Processo completo
Thanks to Steve Jones
using System;
using System.Collections.Generic;
using System.Text;
using eBay.Service.Core.Sdk;
using eBay.Service.Core.Soap;
namespace Trading_Samples
{
class Program
{
static void Main(string[] args)
{
MakeGetOrders();
Console.ReadLine();
Create table Orders
( OrderID int
, OrderDate datetime
, salesrep int
, customerid int
, status tnyint
)
Create procedure GetOrders
@o datetime
As
Begin
Select *
from orders
Where orderdate > @o
Development
Dev
Testing
Alter table Orders
Add status tinyint;
Create procedure GetOrders
…..
QA
Build
Commit
Test
Publish
Continuous Integration
Continuous Integration!
Tutto automatizzato
CI e DevOps
Solo buzzword?
Automazione vs tempi ottimizzati
Effort vs ripetibilità e affidabilità
Senza CI non esiste DevOps
Rilasciare i change non appena disponibili
Automatizzare il processo di delivery
.. verso Operations
Il DevOps continua anche dopo il Delivery
Conclusioni
Capire quale source control è il migliore per noi:
già utilizzato in passato?
servizio oppure on-premises?
costi?
Capire quale strumento per gestire il source control del database:
curva di apprendimento dell’IDE usato
costi
comodità (dati statici, filtri, team management)
Conclusioni
Per il testing:
Esistono tool per testare
Esiste la possibilità di isolare
È semplice creare un database nuovo su cui testare
Miglioriamo la qualità del nostro software
Preveniamo le regressioni
Perché non usare un source control?!
Perché non testare?!
Perché non automatizzare?!

Risorse
Source control resources
https://msdn.microsoft.com/it-it/library/dn894015.aspx (Article on Source Control)
http://www.red-gate.com/products/sql-development/sql-source-control/
http://apexsql.com/sql_tools_source_control.aspx
http://suxstellino.wordpress.com/tag/alm/
http://blogs.dotnethell.it/suxstellino/Category_2927.aspx
Unit testing resources
http://www.red-gate.com/products/sql-development/sql-test/
http://tsqlt.org/
http://sourceforge.net/projects/tsqlunit/
https://msdn.microsoft.com/it-it/library/mt169842 (Article on Unit Testing)
http://en.wikipedia.org/wiki/Unit_testing
https://www.simple-talk.com/sql/t-sql-programming/getting-started-testing-databases-with-tsqlt/
https://github.com/chrisoldwood/SS-Unit
CI resources
http://msdn.microsoft.com/it-it/library/dn383992.aspx (Article on CI)
http://www.red-gate.com/products/dlm/dlm-automation-suite/
http://www.red-gate.com/products/dlm/dlm-automation-suite/sql-ci
http://www.red-gate.com/products/dlm/dlm-automation-suite/sql-release
http://documentation.red-gate.com/display/DAS/DLM+Automation+Suite
https://marketplace.visualstudio.com/items?itemName=redgatesoftware.red
gateDlmAutomationBuild
GRAZIE!
Continuate a seguire i PASS GLOBAL Italian Virtual Chapters
http://globalitalian.sqlpass.org/

More Related Content

Viewers also liked

Oraciones simples con solucionario (ppt)
Oraciones simples con solucionario (ppt)Oraciones simples con solucionario (ppt)
Oraciones simples con solucionario (ppt)CastilloAguilera
 
#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
 
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
 
Lietuviai praranda laisvę
Lietuviai praranda laisvęLietuviai praranda laisvę
Lietuviai praranda laisvęErika Bražienė
 
#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 databasesAlessandro Alpi
 
[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
 
[ITA] Sql Saturday 355 in Parma - New SQL Server databases under source control
[ITA] Sql Saturday 355 in Parma - New SQL Server databases under source control[ITA] Sql Saturday 355 in Parma - New SQL Server databases under source control
[ITA] Sql Saturday 355 in Parma - New SQL Server databases under source controlAlessandro Alpi
 
Cwit interview
Cwit interviewCwit interview
Cwit interviewakhtarsaad
 
[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
 
[ITA] SQL Saturday 257 - Put databases under source control
[ITA] SQL Saturday 257 - Put databases under source control[ITA] SQL Saturday 257 - Put databases under source control
[ITA] SQL Saturday 257 - Put databases under source controlAlessandro Alpi
 
2 67-1379416025-9. automation nad virtual.full
2 67-1379416025-9. automation nad virtual.full2 67-1379416025-9. automation nad virtual.full
2 67-1379416025-9. automation nad virtual.fullKier Francisco
 
Educational managment task_2
Educational managment task_2Educational managment task_2
Educational managment task_2alexandersaa2013
 
[ITA] SQL Saturday 264 - Put databases in ALM backgrounds
[ITA] SQL Saturday 264 - Put databases in ALM backgrounds[ITA] SQL Saturday 264 - Put databases in ALM backgrounds
[ITA] SQL Saturday 264 - Put databases in ALM backgroundsAlessandro Alpi
 

Viewers also liked (20)

Lista 2 - geografia
Lista 2 - geografiaLista 2 - geografia
Lista 2 - geografia
 
Oraciones simples con solucionario (ppt)
Oraciones simples con solucionario (ppt)Oraciones simples con solucionario (ppt)
Oraciones simples con solucionario (ppt)
 
#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
 
Lietuviai praranda laisvę
Lietuviai praranda laisvęLietuviai praranda laisvę
Lietuviai praranda laisvę
 
#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
 
[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
 
[ITA] Sql Saturday 355 in Parma - New SQL Server databases under source control
[ITA] Sql Saturday 355 in Parma - New SQL Server databases under source control[ITA] Sql Saturday 355 in Parma - New SQL Server databases under source control
[ITA] Sql Saturday 355 in Parma - New SQL Server databases under source control
 
Cwit interview
Cwit interviewCwit interview
Cwit interview
 
[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...
 
Gordonas sausio
Gordonas sausioGordonas sausio
Gordonas sausio
 
Slide sharing
Slide sharingSlide sharing
Slide sharing
 
Activity 3
Activity 3Activity 3
Activity 3
 
[ITA] SQL Saturday 257 - Put databases under source control
[ITA] SQL Saturday 257 - Put databases under source control[ITA] SQL Saturday 257 - Put databases under source control
[ITA] SQL Saturday 257 - Put databases under source control
 
2 67-1379416025-9. automation nad virtual.full
2 67-1379416025-9. automation nad virtual.full2 67-1379416025-9. automation nad virtual.full
2 67-1379416025-9. automation nad virtual.full
 
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
 
Lista 5
Lista 5Lista 5
Lista 5
 
Educational managment task_2
Educational managment task_2Educational managment task_2
Educational managment task_2
 
[ITA] SQL Saturday 264 - Put databases in ALM backgrounds
[ITA] SQL Saturday 264 - Put databases in ALM backgrounds[ITA] SQL Saturday 264 - Put databases in ALM backgrounds
[ITA] SQL Saturday 264 - Put databases in ALM backgrounds
 
Directing teaching resume 2015
Directing teaching resume 2015Directing teaching resume 2015
Directing teaching resume 2015
 

Similar to PASS Virtual Chapter - SQL Server Continuous Integration

CONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERCONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERDotNetCampus
 
Webcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio OnlineWebcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio OnlineDavide Benvegnù
 
Il buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita feliceIl buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita feliceAndrea Dottor
 
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
 
Windows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoWindows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoAndrea Dottor
 
ASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuroASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuroAndrea Dottor
 
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
 
Database under source control
Database under source controlDatabase under source control
Database under source controlKlab
 
DevOps: l'IT al servizio del Business
DevOps: l'IT al servizio del BusinessDevOps: l'IT al servizio del Business
DevOps: l'IT al servizio del BusinessFelice Pescatore
 
Qualità del Software
Qualità del SoftwareQualità del Software
Qualità del SoftwareYeser Rema
 
Rich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsRich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsGiorgio Di Nardo
 
DevOps by examples - Agile O'Day 2017
DevOps by examples - Agile O'Day 2017DevOps by examples - Agile O'Day 2017
DevOps by examples - Agile O'Day 2017Giulio Vian
 
Machine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devopsMachine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devopsIgor Antonacci
 
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 2011Gian Maria Ricci
 
Software Testing & Test Driven Development
Software Testing & Test Driven DevelopmentSoftware Testing & Test Driven Development
Software Testing & Test Driven DevelopmentSergio Santoro
 

Similar to PASS Virtual Chapter - SQL Server Continuous Integration (20)

CONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERCONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVER
 
Testing
TestingTesting
Testing
 
Webcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio OnlineWebcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio Online
 
Il buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita feliceIl buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita felice
 
Tfs Basic - Quick Intro
Tfs Basic - Quick IntroTfs Basic - Quick Intro
Tfs Basic - Quick Intro
 
Database Project in Visual Studio 2010
Database Project in Visual Studio 2010Database Project in Visual Studio 2010
Database Project in Visual Studio 2010
 
Windows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoWindows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppo
 
Software Testing e TDD
Software Testing e TDDSoftware Testing e TDD
Software Testing e TDD
 
Continuos Integration
Continuos IntegrationContinuos Integration
Continuos Integration
 
Build Automation Tips
Build Automation TipsBuild Automation Tips
Build Automation Tips
 
ASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuroASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuro
 
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
 
Database under source control
Database under source controlDatabase under source control
Database under source control
 
DevOps: l'IT al servizio del Business
DevOps: l'IT al servizio del BusinessDevOps: l'IT al servizio del Business
DevOps: l'IT al servizio del Business
 
Qualità del Software
Qualità del SoftwareQualità del Software
Qualità del Software
 
Rich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsRich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.js
 
DevOps by examples - Agile O'Day 2017
DevOps by examples - Agile O'Day 2017DevOps by examples - Agile O'Day 2017
DevOps by examples - Agile O'Day 2017
 
Machine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devopsMachine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devops
 
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
 
Software Testing & Test Driven Development
Software Testing & Test Driven DevelopmentSoftware Testing & Test Driven Development
Software Testing & Test Driven Development
 

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
 
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
 
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 (13)

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

PASS Virtual Chapter - SQL Server Continuous Integration

  • 1. Continuous Integration con SQL Server Realizzare CI con SQL Server e prepararsi al DevOps
  • 2. Alessandro Alpi Microsoft MVP – SQL Server dal 2008 Blog ITA: http://blogs.dotnethell.it/suxstellino Blog ENG: http://suxstellino.wordpress.com/ Website: http://www.alessandroalpi.net CTO Engage IT Services S.r.l. www.engageitservices.it Team leader (Agile) Communities Getlatestversion.it
  • 3. Parleremo di Development teams Codice, codice, codice e tsql, tsql, tsql Source control Checkin, invio dei changeset Build e automazione Costruzione di un ambiente in automatico Testing Esecuzione degli unit test, sempre in automatico
  • 4. Continuous integration È una pratica che consiste nell’allineamento frequente (più volte al giorno) degli ambienti di lavoro di sviluppo verso l’ambiente condiviso. Si applica in contesti in cui lo sviluppo avviene tramite un sistema di versioning (version control system). (fonte Wikipedia)
  • 5. Continuous integration, workflow Sviluppo Commit/Checkin Trigger della Build Build del database Creazione del package Test sul database
  • 6. Best practices Check-in frequenti durante la giornata Merge dei cambiamenti per ogni check-in Evitare la «rottura» delle build Comunicare l’eventuale «rottura» a tutto il team (evitare get) Fare check-in solo se la build è «riparata» Notificare quando è possibile fare una get da source control
  • 7. Continuous Integration e DB Poter fare get/commit dei cambiamenti come per il codice Le build costruiscono una sandbox su cui eseguire i test Commit frequenti sulla linea principale come per il codice Rendere atomici database e applicazione Sfruttare strumenti condivisi (Visual Studio, Team Explorer)
  • 8. Vantaggi Annulla la problematica «sul mio pc funziona»  Consente l’automazione dei processi Migliora la qualità del codice (proprio per i processi frequenti) Rende subito disponibile il sorgente/db ad un nuovo dev Non dimentica nessuna linea di sviluppo Separa il deploy dallo sviluppo Aumenta la visibilità del «prodotto»
  • 10. Source control manager Gestore delle versioni cambiamenti del nostro codice (ddl, programmabilità) cambiamenti di altri elementi (snippet, strumenti dev) cambiamenti sui dati «statici» Entità condivisa in sviluppo (e team management) Dotato di interfaccia (anche grafica) Può sembrare scomodo su database
  • 11. Strumenti Visual Studio Database Projects Red-Gate Source Control ApexSQL Source Control … Management studio non basta! Unitamente al Team Explorer (per chi usa Visual Studio)
  • 12. Come inviamo i change.. ..al Source Control Manager?
  • 13. 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
  • 15. DEMO Management Studio Red Gate Source Control Visual Studio Team Services
  • 18. Perchè unit test Testare funzionalità mission-critical di business Sviluppo evolutivo Per capire precocemente alcuni bug Supporto di alert automatici Per prevenire regressioni il più possibile Avere copertura di test Scrivere in maniera «testabile» i nostri metodi
  • 19. Cosa testare? Calcoli in procedure e funzioni Constraint (schema) Casi limite e comportamenti attesi sui dati Sicurezza Standard
  • 20. Strumenti Framework tSQLt tSQLUnit (consigliato per SQL Server 2000) SQLCop (per gli standard e le metriche) Tools SQLTest di Red-Gate (tSQLt + SQLCop) Unit test project con Visual Studio
  • 21. DEMO tSQLt con SQL Test Management Studio
  • 23. Build Build codice = compilazione automatica dopo check-in Build database: Parte al check-in dei changeset Crea un package (nuget in questo caso) Crea un database per i test Valida gli oggetti creati
  • 24. Automazione Red Gate SQL CI + plugin TFS + Script SC (DLM Automation Suite) 1) Al check-in su source control fa partire la build 1) Crea automaticamente un database per i test 1) Crea un package nuget 2) Esegue i test 3) Allinea il package su db di QA/Staging 4) Pubblica il package su un nuget feed
  • 25. Processo completo Thanks to Steve Jones using System; using System.Collections.Generic; using System.Text; using eBay.Service.Core.Sdk; using eBay.Service.Core.Soap; namespace Trading_Samples { class Program { static void Main(string[] args) { MakeGetOrders(); Console.ReadLine(); Create table Orders ( OrderID int , OrderDate datetime , salesrep int , customerid int , status tnyint ) Create procedure GetOrders @o datetime As Begin Select * from orders Where orderdate > @o Development Dev Testing Alter table Orders Add status tinyint; Create procedure GetOrders ….. QA Build Commit Test Publish Continuous Integration
  • 26. Processo completo Thanks to Steve Jones using System; using System.Collections.Generic; using System.Text; using eBay.Service.Core.Sdk; using eBay.Service.Core.Soap; namespace Trading_Samples { class Program { static void Main(string[] args) { MakeGetOrders(); Console.ReadLine(); Create table Orders ( OrderID int , OrderDate datetime , salesrep int , customerid int , status tnyint ) Create procedure GetOrders @o datetime As Begin Select * from orders Where orderdate > @o Development Dev Testing Alter table Orders Add status tinyint; Create procedure GetOrders ….. QA Build Commit Test Publish Continuous Integration
  • 28. CI e DevOps Solo buzzword? Automazione vs tempi ottimizzati Effort vs ripetibilità e affidabilità Senza CI non esiste DevOps Rilasciare i change non appena disponibili Automatizzare il processo di delivery .. verso Operations Il DevOps continua anche dopo il Delivery
  • 29. Conclusioni Capire quale source control è il migliore per noi: già utilizzato in passato? servizio oppure on-premises? costi? Capire quale strumento per gestire il source control del database: curva di apprendimento dell’IDE usato costi comodità (dati statici, filtri, team management)
  • 30. Conclusioni Per il testing: Esistono tool per testare Esiste la possibilità di isolare È semplice creare un database nuovo su cui testare Miglioriamo la qualità del nostro software Preveniamo le regressioni
  • 31. Perché non usare un source control?! Perché non testare?! Perché non automatizzare?! 
  • 32. Risorse Source control resources https://msdn.microsoft.com/it-it/library/dn894015.aspx (Article on Source Control) http://www.red-gate.com/products/sql-development/sql-source-control/ http://apexsql.com/sql_tools_source_control.aspx http://suxstellino.wordpress.com/tag/alm/ http://blogs.dotnethell.it/suxstellino/Category_2927.aspx Unit testing resources http://www.red-gate.com/products/sql-development/sql-test/ http://tsqlt.org/ http://sourceforge.net/projects/tsqlunit/ https://msdn.microsoft.com/it-it/library/mt169842 (Article on Unit Testing) http://en.wikipedia.org/wiki/Unit_testing https://www.simple-talk.com/sql/t-sql-programming/getting-started-testing-databases-with-tsqlt/ https://github.com/chrisoldwood/SS-Unit CI resources http://msdn.microsoft.com/it-it/library/dn383992.aspx (Article on CI) http://www.red-gate.com/products/dlm/dlm-automation-suite/ http://www.red-gate.com/products/dlm/dlm-automation-suite/sql-ci http://www.red-gate.com/products/dlm/dlm-automation-suite/sql-release http://documentation.red-gate.com/display/DAS/DLM+Automation+Suite https://marketplace.visualstudio.com/items?itemName=redgatesoftware.red gateDlmAutomationBuild
  • 33. GRAZIE! Continuate a seguire i PASS GLOBAL Italian Virtual Chapters http://globalitalian.sqlpass.org/