#doh19 · 2019. 10. 28. · build automazione completa con tfs 2017 generazione automatica degli...

Post on 01-Jan-2021

4 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

#DOH19

#DOH19 2

Organizer & sponsors

GetLatestVersion.it

Umile piccola storia di un team di BI

Dobbiamo essere

“AGILE”!

… OK ...

...

Benefici dell’Agile

A

Buongiorno a tutti!

A

● Individui e interazioni vengono prima di processi e strumenti

● La collaborazione con il cliente è più importante della negoziazione

del contratto

● Fornire strumenti di analisi utilizzabili è più importante di una

documentazione completa

● Iterazione, feedback e sperimentazione, invece di progettazione

iniziale comprensiva

● Responsabilità interfunzionali invece che compartimentali

A

Cosa ne dite?

IO CI CREDO!

Anch’io ci credo... Io non

credo MAI!

Facciamo “Cose Strane”

Ok, niente paura!

Ho l’uomo che fa per voi!

Veramente noi facciamo BI su

altre tecnologie...

Fortunatamente il vostro stack per lo sviluppo applicativo basato su

tecnologia MS si integra perfettamente...

Ok, siamo pronti a mettere in

campo l’Agile!

Abbiamo chiarito gli

aspetti culturali e metodologici...

… e come utilizzare TFS 2017 per la gestione del

lavoro...

Ehm...Si?Mmm...

A

Sommario

● Chi Siamo (Dove stiamo andando e perché)

● La nostra esperienza BI DevOps

○ Il nostro scenario

○ Sfide Tecnologiche e Metodologiche

○ Soluzione: Visione e stato avanzamento lavori (con Demo)

Un DevOps Hero contro uno Scenario Mostruoso

ECCOMI QUA!

Ah, Ah!

WOW!Che figo il mantello!

Ed il Database sul petto!

No, è la pila dei dischetti

dell’MVP!

Ma ora raccontatemi

del vostro scenario...

Scenario

● Team e Organizzazione○ BI Team (4 persone)

○ Dipartimento sviluppa sistemi gestionali (5 Dev Teams, 50+ Persone)

○ Recente introduzione metodologia Agile

● Attività di Sviluppo○ Data Warehouse che contiene i dati integrati dei sistemi gestionali

○ Modelli dimensionali / mart per applicazioni specifiche

○ Flussi ETL per la movimentazione dei dati

○ Applicazioni analitiche, reports a dashboards

● Tecnologie○ Databases: Vertica, MS SqlServer

○ ETL: SSIS, SQL

○ Presentazione: SAP Business Objects, SSRS, PowerBI

○ (DevOps: TFS 2017, TFVC, PowerShell)

Vertica

OLTPOLTP

OLTPOLTP

OLTP

Stg DWH

RepRep

Rep

MartMart

Mart

E quali sono i vostri obiettivi?

● Orientamento al cliente e condivisione delle responsabilità○ Migliorare la comunicazione e la trasparenza

○ Sviluppare la capacità di gestire il cambiamento per supportare l’evoluzione dei bisogni

○ Promuovere la condivisione delle responsabilità ed il coinvolgimento

● Migliorare la condizione del team○ Teamwork e condivisione della conoscenza

○ Sviluppo professionale e crescita delle competenze

○ Migliorare modalità e sostenibilità del lavoro

● Ottimizzare la generazione del valore○ Riduzione del tempo di generazione

○ Qualità, consistenza e predicibilità delle consegne

○ Miglioramento continuo (feedback, revisione retrospettiva, monitoraggio)

○ Semplicità, riutilizzo, riproducibilità, ...

Obiettivi Culturali e Metodologici

● Ridefinizione dei processi di base: Sviluppo, Build e Rilascio

● Automazione degli stessi (Riutilizzando le technologie in essere)

● Eliminazione delle attività ripetitive e semplificazione del flusso di lavoro

quotidiano

● Porre le basi per il miglioramento sistematico dell’efficienza e della qualità

(Test automatici)

Obiettivi Tecnici e Procedurali

Solo una cosa che non mi è

completamente chiara...

OK, tutto chiaro...

(Ovviamente! Sono un

DevOps Hero di Classe S!)

つづく

Sfide Tecnologiche

...Che diavolo è

Vertica ?!?

Cos’è Vertica

● Database colonnare

● Caratteristiche○ Performance di query superiori per workflow analitici e funzionalità analitiche in SQL

○ Alta disponibilità e scalabilità lineare su più nodi

○ Economicamente vantaggioso

○ “On Prem Native”

■ => Di nicchia, ma ottimo in funzione del nostro caso d’uso

● Storia○ Nasce nel 2005 come progetto accademico del MIT (C-Store)

○ Commercializzato dall’omonima società fondata nello stesso anno

○ Successivamente acquisito da HP nel 2011 e poi da Micro Focus nel 2017

● Nota terminologica○ Schema (Vertica) = Database (SqlServer)

Schema Compare?

Integrazione con TFS 2017?

Pronto, ma supportate

qualche strumento di sviluppo per

Vertica?

OK, verifichiamo che strumenti ci

sono a disposizione...

Strumenti di sviluppo avanzati,

tipo Database Projects?

Nop...

Va beh, sentiamo Micro Focus...

Nop

Conclusioni

● Mancanza di strumenti di sviluppo specifici per Vertica

● Mancanza di strumenti per la comparazione e l’allineamento degli schemi

● Non ci sono strumenti DevOps per Vertica nei progetti futuri di Micro

Focus

➔ E’ un rischio, ma dovremo sviluppare gli strumenti necessari

internamente

Visione della soluzione

Ok ragazzi, gli obiettivi e le sfide tecnologiche sono

chiari...

Ma niente paura! Grazie al potere della mia super visione...

Ma per cominciare ci serve avere una

visione chiara della soluzione da

implementare...

… Anzi no ripensandoci, forse è meglio se facciamo un brainstorming...

● Esplorazione dei dati○ Resta fondamentale. Accesso a dati anonimizzati in ambiente di integrazione

○ Finalizzata alla individuazione di pattern di dati per lo sviluppo

● Sviluppo○ Riorganizzazione del codice sorgente

■ Separare nettamente le componenti dell’applicazione dalle logiche di build e rilascio

○ Migliorare l’ambiente di sviluppo

■ Sandbox completa dedicata per ciascuno sviluppatore, facilmente ricreabile

● Build○ Automazione completa con TFS 2017

○ Generazione automatica degli script di deploy incrementali (tool sviluppato internamente)

● Rilascio○ Automazione completa con TFS 2017

○ Test (Sviluppo, funzionali, integrazione) inizialmente manuali

Visione

Processo di Sviluppo

Ora ragazzi è giunto il

momento di mostrarvi il mio

vero potere...

IL POTERE DEL

GUSCIO!

… ? ...Ehm… si

insomma...

…me la cavo con

PowerShell...

Premesse

● Riorganizzazione del codice sorgente

○ Livello logico - Definizione del database. Script separati per ciascun oggetto

○ Livello fisico - Strutture dati di supporto specifiche per ambiente

○ Logiche di build

● Miglioramento dell’ambiente di sviluppo

○ Sandbox dedicata per ciascuno sviluppatore

○ Macchina personale con ambiente di sviluppo Windows

■ VS2017, VSCode, SQL Client, SQL Server, BO Dev Tools, PBI Desktop

○ Macchina virtuale Linux per Vertica

Processo

● Get Latest Version

● Build e deploy su ambiente di sviluppo

○ Progetti SSIS

○ Build da zero schemi Vertica + provisioning dei dati (Script PowerShell)

● Sviluppo su Sandbox

● Test manuali

● Definizione del Changeset candidato

● Rebuild e deploy (changeset candidato) e test

● “Pre Integrazione” (Get Latest Version)

● Commit

Automazione

● Sviluppo

○ Build, rilascio e tests manuali

○ Tools IDE + Script Powershell per provisioning DB Vertica

● Integrazione

○ Forte automazione dei processi di Build e Rilascio

○ TFS 2017 Pipelines + PowerShell

■ Strumenti integrati per SSIS e SqlServer

■ Scripts PowerShell per azioni personalizzate

Demo

Processo di Integrazione

Ok, allora il processo è

chiaro a tutti?Certo!

Certo!Certo!

Obiettivi

● Organizzazione del codice (Solo script di Definizione su SC)

● Automazione completa Build e Release

Problemi

● Generazione script di rilascio incrementali

○ Vincoli: Mancanza tool automatici per allineamento degli schemi

Soluzione

● Sviluppo interno di un tool automatico di allineamento○ Comparazione tra schemi

○ Generazione Scripts incrementali di allineamento

○ Automatico ed integrato nella pipeline di Build

ShadowDB

Comp. Tool

INT DB

DB Def. Scripts

(SC)

DB Inc. Scripts(Artif.)

Build (Integrazione - Vertica)

Obiettivi

● Organizzazione del codice

● Automazione completa Build e Release

● Integrazione Continua (Schedulata) / Flessibilità di rilascio

Problemi

● (Fattibilità di sviluppare internamente il tool di allineamento automatico)

● Necessità di collezionare e ordinare gli script incrementali parziali

● Necessità di tracciare lo stato del database obiettivo

● Inconsistenze tra stato database e sviluppi in caso di errori di esecuzione

● Script contenenti Mix di Features

Conclusioni

● Necessità di prevedere gestione degli errori e revisione degli obiettivi

Obiettivi

● Organizzazione del codice

● Automazione “Ragionevole” di Build e Release

● Integrazione Continua (Flessibilità di rilascio)

● Gestione degli errori di integrazione (per gestire le inconsistenze)

Soluzione

● Script di rilascio incrementali sviluppati ed eseguiti manualmente

○ Creati in fase di sviluppo (Con eventuale supporto di un tool di comparazione

sviluppato internamente)

● Script di rilascio incrementali parziali atomici per Feature

● Possibilità di ripristinare lo stato del database mediante scripts di rollback

Problemi / Soluzioni

● Fattibilità di sviluppare internamente il tool di allineamento automatico

➔ Non è più necessario (Gestione Manuale)

● Necessità di collezionare e ordinare gli script incrementali parziali

➔ Gestione Manuale

● Necessità di tracciare lo stato del database obiettivo

➔ Non è necessario (Gestione Manuale)

● Inconsistenze tra stato database e sviluppi in caso di errori di esecuzione

➔ Gestibile con scripts di rollback

● Script contenenti Mix di Features (in caso di Build Schedulate)

➔ Script parziali atomici per feature

Code Def. (SC)

SSIS, OtherSSIS,

Other(Artif.)

Build

DB Def. Scripts

(SC)

Vertica

DB Inc. Scripts(Artif.)

DB Inc. Scripts

(SC)

INT Env

INTDB

DB Inc. Scripts(NO SC)

DB Inc. Scripts

(SC)

SSIS, Other(Artif.)

Release (INTEGRATION)

Tests

PROD Env

PRODDB

DB Inc. Scripts(Artif.)

SSIS, Other(Artif.)

Release (PRODUCTION)

Conclusioni

Cosa abbiamo imparato

● Sviluppare una visione è utile

➔ Per fare DevOps, bisogna essere Agile!

● … ma concretizzarla nella pratica il prima possibile

● Pragmatismo nella definizione degli obiettivi

● Iterare!

➔ Iterazione, feedback e sperimentazione➔ Strumenti utilizzabili

A

Grazie!

#DOH19

THANK YOU!

top related