2. DevOps Elephant!
Lean, Agile and DevOps
The Three Ways of DevOps
La Cultura al centro di tutto
DevOps: Goal, Principi e Pratiche
Tools
Risorse e Riferimenti
Agenda
3. DevOps Elephant!
…a movement, a philosophy, a way of thinking;
…is a person who can perform both Dev/Ops roles;
…means cross skilling people;
…is continuous delivery;
…is a job title;
…is automation;
…is a team of developers and operation staff;
…is a culture movement;
…is monitoring.
DevOps is…
It’s DevOps!
It’s DevOps!
It’s DevOps!
It’s DevOps!
4. DevOps
DevOps è un approccio Culturale in cui l’intera Line of Business si
assume la responsabilità della creazione di Valore per il cliente.
In tale scenario, Developers e Operations sperimentano continuamente
nuovi modi di lavorare insieme, andando a standardizzare e
padroneggiare i processi attraverso la ripetitività e la pratica.
DevOps: Delivery Enhanced Values Over Processes Smells [f.p.]
5. DevOps….
…non sostituisce un approccio
Agile
Viene esteso il concetto di “Done”: quanto realizzato è considerato completato
solo quando i test di accettazione sono superati ed è in erogazione.
…non significa NoOps
…non è applicabile solo al
mondo dell’Open Source
Entrambi spingono ad automatizzare quanto più possibile processi, configurazioni,
deployment, e contemplano una governance di Change Management.
I sistemisti non diventano “inutili” ma innalzano l’asticella delle proprie
competenze e delle proprie attività.
…non rimpiazza la
metodologia ITIL
…non è solo “infrastructure as
a code” o automazione
…non è solo per le Startup e le
Unicorn
Soluzioni applicative per DevOps esistono sia in ambito commerciale che
OpenSource, quest’ultimo spesso laboratorio di nuove idee.
Il cuore di questo approccio è la condivisione degli obiettivi lungo l’intero
Stream di Valore che sottende la realizzazione di soluzioni IT.
DevOps è un approccio applicabile a qualsiasi realtà aziendale, soprattutto
quelle che riconoscono nell’IT la propria dorsale di supporto.
6. Lean, Agile and DevOps
LEAN
Value Stream – End-to-End Flow
Solution Vision & Customer Delivery
[Lean Startup, Running Lean]
Agile Solution Development
[Scrum, Kanban] [XP, TDD]
Solution Delivery
[Continuous Delivery e Deployment]
Values
and
Principles
Practices
DevOps
Portfolio management
Business process management
Big Data/Analytics
Idea
Value
AGILE @Scale Framework
(SAFe, DAD, LeSS, Nexus)
Consistent
Environment
Individualmente, nessuno di questi approcci è in grado di ottimizzare la creazione del Valore nel complesso.
Bisogna adottarli all’unisono per migliorare il proprio business.
7. L’Agile non è sufficiente
Le varie build di iterazione si accumulano se non si è in grado di effettuarne
il delivery e il deploy in modo rapido. Sulla Visione complessiva di
Deployment si rischia spesso di lavorare con un approccio waterfall.
Functional
Testing
Acceptance
Testing
Ready to
Production
Deploy
Delivery
UAT & QA
OPS
Agile Team
8. The Three Ways of DevOps
DEV
OPS
BUSINESS
The First Way: System Thinking
The Second Way: Amplify Feedback Loop
The Third Way: Culture of Continual Experimentation
and Learning
CULTURA
CUSTOMER
Con DevOps si vuole creare un approccio Culturale
focalizzato sul Delivery di Valore per il cliente, invece
di prendersi cura solo dei problemi tecnici .
9. DevOps è prima di tutto Cultura!
tra DEV e OPS… e il resto dell’azienda.
MIGLIORARE
“DevOps isn’t something you can buy -- it’s something you
have to do, and you have to do it yourself.”
John Michelsen, CTO, CA Technologies
Comunicazione Integrazione AutomazioneCollaborazione
10. Comunicazione e Integrazione
Comunicazione
Integrazione
Unico value-path per Sviluppo, Operation… e il resto dall’azienda
Migliorare e automatizzare i processi
Rimuovere gli Ostacoli e i Colli di Bottiglia
Favorire il flusso informativo dall’Idea alla Consegna al cliente
Creare Loop di Feedback ad ogni fase
Abbattere le barriere tra le aree funzionali aziendali
Condividere le responsabilità individuando nuovi ruoli
Distillare la conoscenza
Focalizzarsi sui servizi a supporto del business, non sulla tecnologia
Creare un senso di fiducia reciproco
11. Collaborazione e Automazione
Collaborazione
Relazioni Face-to-face, real time
Ridurre al minimo, idealmente abolire, le comunicazioni formali
Team di piccole dimensioni focalizzati sul Business
Condividere i problemi con i pari e gli altri colleghi
Uso di strumenti di Visual Management / Information Radiator
Automazione
Automatizzare l’esecuzione dei Task ripetitivi
Automatizzare i Processi, connettendo task e decisioni
Automatizzare Delivery e Deployment
Trigger Decisionali sfruttando Analytics e Monitoraggio
12. Shorten
Cycle Time
Optimize
Resources
Improve
Quality and
Availability
DevOps: Goal, Principi e Pratiche
Evidenziare sempre i problemi e risolverli velocemente;
Build Quality in, software di qualità;
«Done» significa «Rilasciato»;
Tutti sono responsabili per il Delivery e il Deployment;
Continuous Improvement: miglioramento continuo.
Principi
Creare processi affidabili, ripetibili, versionabili e verificabili;
Automatizzare il più possibile i diversi step del processo;
Gli Script sono la vera documentazione up-to-date;
Tutti gli elementi del progetto vanno nel sistema di source control;
Le build avvengono sempre e solo dal codice sorgente;
Configurazione automatica degli ambienti
Pratiche
13. DevOps Goal
Shorten Cycle Time
Passare in modo efficace da lunghi cicli di
rilascio a rilasci settimanali o giornalieri
indispensabili per supportare adeguatamente i
clienti e le trasformazione del business.
14. Full Application Lifecycle Management
Continuous
Delivery
Continuous
Deployment
Agile
Project
Manag.
IDE
Version
Control
System
Continuous
Integration
Agile Project Management and Development
Agile Team
Analysis + Design
Development
Testing
1 2 3 4 n
Integration
Quality + Acceptance Test
Release
Operation
Ops
Agile Deployment Pipeline: the «last mile»
Customer
& Business
Agile Team & QA Team
15. Agile Project Management and Development
I tool di Agile Project Management consento di gestire le varie fasi di
sviluppo legando direttamente i vari artefatti alle attività annesse al processo.
Un Integrated Development Environment è un ambiente omnicomprensivo
che permette di sviluppare nel linguaggio di riferimento, sfruttando le
funzionalità dei framework interconnettendosi con i vari sistemi a supporto.
Agile Project
Management
IDE
Version Control
System
Un Version Control System (VCS) consente una gestione efficace della propria
code-base, persistendo i file, tracciando le modifiche e gestendo l’history di
sviluppo.
16. L’Agile Deployment Pipeline (ADP) descrive il processo
che porta il software dal version control system nelle
«mani» dell’utente finale.
Si tratta di un concetto ispirato dal “Value Stream
Maps” di Lean Software Development: ogni step
produce un output che è prelevato (pull) dallo step
successivo quando è pronto ad elaborarlo.
L’ADP è anche nota come Continuous Integration
Pipeline, build pipeline, ecc
Agile Deployment Pipeline: the «last mile»
.
Agile Project
Management
IDE
Version Control
System
Continuous Integration
Continuous Delivery
Continuous Deployment
17. The «last mile»
La Continuous Integration è una pratica di sviluppo software dove i membri
di un team integrano il lavoro frequentemente, almeno una volta al giorno.
La Continuous Delivery è un set di principi e di pratiche volte a rilasciare il
software in ambiente di pre-produzione, velocemente e frequentamene,
sfruttando strumenti automatizzati di building e testing.
La Continuous Deployment è la fase successiva alla Continuous Delivery,
incentrata sul rilascio automatizzato in ambiente di produzione della
soluzione precedentemente convalidata in pre-prod. Solo le build che
superano gli UAT e i QA Test vengono messe in erogazione automaticamente.
Continuous Integration
Continuous Delivery
Continuous Deployment
18. Agile Deployment Pipeline: automation levels
build
unit
tests
integration
tests
validation
tests
deploy to
production
build
unit
tests
integration
tests
build
unit
tests
integration
tests
validation
tests
Continuos Integration
Code Unit Test +
Integration Build +
Integration Test
Continuous Delivery
Continuous Integration +
QA Test & ATDD
Continuos Deployment
Continuos Delivery +
automatic deploy in prod
Manual Actions
Manual Actions
20. L’«ultimo miglio» nella realtà
La Continuous Integration è relativamente semplice da implementare:
è tutta una questione di comunicazione, vista la maturità dei tool.
La Continuous Delivery è difficile, ma un po' tutte le software house trovano
una soluzione contestuale per adottarla:
• alcune cose sono difficili da testare in modo automatico;
• è necessario avere dei tecnici dedicati alla scrittura di parte dei test.
La Continuous Deployment è adottata molto raramente
• i Clienti non la vogliono;
• inadatta alle soluzioni Mission Critical.
Continuous Integration
Continuous Delivery
Continuous Deployment
22. Ogni membro del team deve disporre di una workstation con IDE e strumenti appropriati
al proprio ruolo per essere sempre produttivo.
I team progettano, sviluppano e dispiegano le applicazioni utilizzando una suite
integrata per la gestione del ciclo di vita della soluzione.
E’ fondamentale disporre di ambienti di pre-produzione per lo sviluppo, l’integrazione e
l’esecuzione dei test di Quality Assurance e di Accettazione.
Developer Workstation
Team Collaboration Environment
Dev and Test Environments
Cloud Services for Development
Sfruttare servizi cloud-oriented, public o on-premise.
Software Development Infrastructure
23. High Cost
Inability to
Delivery Value
Deploying Software
Manually
Software Development Infrastructure Issue
Mantenere un’efficace infrastruttura di sviluppo e test può
diventare costoso.
Processi lunghi e burocratizzati minano la capacita del
team di consegnare Valore.
Il Deploy Manuale è un anti-pattern, che incide negativamente
sulla creazione di Valore.
25. Improve quality & availability
Plan
Develop & test Release
Monitor & learn
All stakeholders
Developers
& testers
Operations
26. Hypothesis-Driven Development
La Hypothesis-Driven Development è un approccio allo sviluppo che
si basa su una serie di continui esperimenti al fine di determinare se
un’idea è valida o fino all’ottenimento del risultato desiderato.
Le ipotesi vengono testate nel giro di ore grazie alle pratiche di
Continuous Delivery (Deployment) e gli strumenti di Monitoring
We believe <that if we write a blog post on our new product>
Will result in <people that will want to buy it>
We will have confidence to proceed when <30 people sign up within 24 hours>
28. Parlarsi!
Misurare
Gestire la complessità senza abituarsi ad essa
Creare micro-processi che accompagnano
l’intero ciclo rilascio
Procedere con piccoli esperimenti
Automatizzare il processo di rilascio
Iniziare con un processo di rilascio condiviso
Creare molti punti di feedback
Cambiare il sistema di incentivazione in
funzione dei risultati generali
Adattare l’organizzazione
Eliminating Waste: do and repeat it!
Investire su Formazione,
Comunicazioni e capacità
Cross- Skilling
Valutare nuovi Processi e
Tool avanzati per
supportare DevOps
Rivalutare, modificare e
migliorare il ciclo di
Delivery e Deployment
Valutare nuove Pratiche e
Tecniche a supporto di
DevOps
Sperimentare i
cambiamenti in modo
localizzato: Singola Area
Aziendale, Progetto Pilota
29. DevOps Tools
Platform and Stand-alone
Per raggiungere un alto livello di automazione,
andando a ridurre gli errori, è imprescindibile
l’utilizzo di adeguati strumenti a supporto.
30. DevOps Tools Families
Configuration Manager
Software
Provisioning Software
Packaging Software
Consentono di definire da codice lo stato di una specifica macchina,
andando ad esplicitare la configurazione, il software installato, ecc..
Consentono di istanziare una macchina virtuale da codice e configurarla a
livello di sistema operativo. Si interfacciano con i Configuration Manager
Software per completarne la configurazione applicativa.
Consentono di impacchettare il software in un’unità atomica
auto contenuta.
Monitoring Software
Consentono di monitorare il corretto funzionamento del
software e segnalare le relative anomalie
33. Risorse e Riferimenti
DevOps Jump Start - L'approccio DevOps
Agile Application Lifecycle Management con VSO/TFS
Pubblicare un package nuget grazie alla build
Gestire la Semantic Versioning con GitFlow e GitVersion in
una vNext Build
Lean Startup, Jump Start!
Agile@Scale: visione olistica del valore
Lean Philosophy
Introduzione a Kanban
Application Lifecycle Management (ALM) con VSO
getlatestversion
Gene Kim propone i “The Three Ways”, un set di principi basilari utili a guidare l’azienda nella propria e specifica trasformazione:
Cycle Time è il tempo impiegato per ogni singola attività.
Da non confondersi con i Lead Time pari al tempo totale per lo sviluppo della nuova unità incrementale, data dal Cycle Time * WIP
Deploy Manuale:
richiede molta documentazione che dettaglia ogni singola attività da eseguire;
non viene tipicamente avvallato da test in ambienti di pre-produzione simili a quelli di produzione;
vengono effettuate correzioni ai package durante il deploy;
il deploy non è confermato da test automatizzati;
l’attività di rilascio di una nuova versione richiede diverse ore;
frequenti rollback per malfunzionamento: sulla mia macchina funzionava!
tipicamente fatti di notte.
[Slide goal]
Describe how DevOps enables organizations to increase the flow of value by focusing on improving quality and availability
[Talk track]
Continuous inspection throughout the lifecycle as well as production monitoring enable teams to detect and remediate defects before customers encounter them.
Defining acceptance tests along with user stories increases likelihood of detecting a defect early in the lifecycle.
Automated unit, performance and acceptance tests throughout the lifecycle improve the chances of detecting a defect before it goes to production.
Availability and performance monitoring as well as alerting reduces the mean-time-to-detection (MTTD) if a defect does make it to production.
Ensuring development and operations teams have access to the monitoring/alerting production data is vital to driving down MTTD.
[Slide goal]
Describe how DevOps enables organizations to increase the flow of value by focusing on hypothesis-driven development and continuous learning.
[Talk track]
N/A
[Slide goal]
Describe how continuous learning can contribute to the flow of value
[Talk track]
Too often, determining the next set of investments is difficult. Without insights into what customers are really doing, experiencing and achieving, planning becomes mostly guessing - increasing the probability of making poor decisions.
By having visibility to usage data, companies can prioritize and validate investment decisions allowing them to continuously learn and improve.
Continuous learning and hypothesis-driven development share process patterns, as well as the tools to implement them.