-
1.
DevOps by examples
Giulio Vian
http://blog.casavian.eu/
giulio.dev@casavian.eu
@giulio_vian
http://www.getlatestversion.it/
-
2.
1990
1992 1999 2014
2010 2016
1995
freelance
2014 2015
TFS Aggregator
2017
?
-
3.
L’ultimo progetto cui ho partecipato
© 2016 IMG Universe, LLC.
All Rights Reserved
3
-
4.
Inquadramento della Sessione
Livello 100/200
Cogliere l’essenziale dell’approccio DevOps
Interrompere solo per domande fulminee
Sì, No, Può ripetere, ...
4
-
5.
Di che si chiacchiera?
DevOps?
Esempi
Un ambiente per il codice
Una applicazione
Il suo rilascio
Riconfigurazione
Riassunto e riferimenti
5
-
6.
Tocca a voi
Azure?
Visual Studio Team Services (VSTS)?
ASP.NET ?
Linux (Ubuntu) ?
6
-
7.
«Antipasto»
7
-
8.
DevOps è un lavoro?
8
-
9.
DevOps è un prodotto?
9
-
10.
DevOps is a culture, movement or practice
DevOps is a term used to refer to a set of practices that
emphasizes the collaboration and communication of
both software developers and other information-
technology (IT) professionals while automating the
process of software delivery and infrastructure changes.
DevOps represents a change in IT culture, focusing on rapid IT service delivery through the
adoption of agile, lean practices in the context of a system-oriented approach. DevOps
emphasizes people (and culture), and seeks to improve collaboration between operations and
development teams. DevOps implementations utilize technology — especially automation tools
that can leverage an increasingly programmable and dynamic infrastructure from a life cycle
perspective.
DevOps is the union of people, process, and products to
enable continuous delivery of value to our end users.
Wikipedia (2017)
Gartner
Microsoft (Donovan Brown)
10
-
11.
Evoluzione di Continuous Delivery…
Source: Jez Humble © 2010
11
-
12.
…fondata sui principi Agile
Individuals and interactions
over processes and tools
Working software
over comprehensive documentation
Customer collaboration
over contract negotiation
Responding to change
over following a plan
http://agilemanifesto.org/
-
13.
«Le portate»
Dove? Infrastructure-as-Code
Cosa? Build & Package
Come? Deploy
13
-
14.
Ambiente di esecuzione
Sistema Operativo
Moduli S.O.
Servizi locali, Librerie
Applicazione
Rete e Servizi esterni
Dati
14
-
15.
Ambiente di esecuzione (alternativo)
Base container
Custom Container
Applicazione
(in container)
Rete e Servizi esterni
(e.g. Kubernetes)
Dati
15
-
16.
Considerazioni sull’ambiente di esecuzione
Tempi di allestimento
Capacity planning
Costi di esercizio
16
-
17.
Infrastructure-as-
Code
Azure Resource Manager
• Codice
• Automazione
17
-
18.
Infrastructure-as-Code – Considerazioni
Dichiarativo o imperativo
Version Control
Continuous Integration
Dinamico o Statico
Azure Resource Manager
Dichiarativo, Json-based
Estendibile (script, DSC)
Tutta l’infrastruttura
AWS CloudFormation
Dichiarativo, Json-based
Docker
Non cosi dichiarativo
Livello di singolo container
Swarm, Kubernetes, Mesos, …
Ansible, Puppet, Chef, CFEngine, …
18
-
19.
Applicazione
Pagina web con dati da DB
• Ambiente
• Configurazione
19
-
20.
Build & Packaging
Raccogliere tutto quanto possa servire
20
-
21.
Build & Packaging – Considerazioni
Version Control
Continuous Integration
Semantic Versioning
Artifacts
Immagini (Docker, AMI, Azure VM images)
21
-
22.
Deploy
VSTS Release Management
• Automazione controllata
22
-
23.
Password e chiavi (secrets)
Build time
Signing
Deploy time
Credentials
Run time
Tokens
Avoid exposures
git push hook
Static analysis
.gitignore
Version Control centralizzato
Repositories dedicati
Azure Key Vault
AWS Key Management Service
23
-
24.
Deploy – Considerazioni
Categoria
Dev / QA / Prod
Integrato (dinamico)
Frequenza di Rilascio
Feature toggles
24
Source: Pete Hodgson
-
25.
Configurazione
dinamica
Feature Toggle
25
-
26.
Non abbiamo il tempo di parlare di
Monitoraggio delle applicazione
Risoluzione dei problemi
Feedback verso Dev
…e molto altro
26
OpsDev
-
27.
Persone
(Photo: DoD)
27
-
28.
Automazione
(Photo: Alexander Dummer)
28
-
29.
Risorse
29
(Photo: User:Elya, Wikimedia)
-
30.
Call to action
(Photo: Gorge Deep)
30
-
31.
Bibliografia & Riferimenti
https://github.com/giuliov/DevOps-by-examples
http://www.slideshare.net/giuliov/presentations
http://martinfowler.com/articles/feature-toggles.html
https://leanpub.com/build
https://launchdarkly.com/
http://agilemanifesto.org/
https://azure.microsoft.com/en-us/services/application-insights/
https://github.com/tfsaggregator/tfsaggregator
https://github.com/aspnet
https://azure.microsoft.com/en-us/services/key-vault/
https://aws.amazon.com/kms/
https://blogs.msdn.microsoft.com/buckh/2016/09/30/controlling-exposure-through-feature-flags-in-vs-
team-services/
31
-
32.
Bibliografia (2)
Continuous Delivery: Reliable Software
Releases through Build, Test, and
Deployment Automation — J.Humble,
D.Farley (Addison-Wesley)
https://www.amazon.com/Continuous-
Delivery/dp/0321601912/
The Phoenix Project — G.Kim, K.Behr,
G.Spafford (IT Revolution Press)
https://www.amazon.com/Phoenix-Project-
DevOps-Helping-Business/dp/0988262509/
32
-
33.
Bibliografia (3)
The DevOps Handbook — G.Kim,
P.Debois, J.Willis, J.Humble (IT
Revolution Press)
https://www.amazon.com/DevOps-
Handbook-World-Class-Reliability-
Organizations/dp/1942788002/
Continuous Delivery with Visual Studio
ALM 2015 — M.Olausson, J.Ehn (Apress)
http://www.amazon.it/Continuous-Delivery-
Visual-Studio-2015/dp/1484212738/
33
-
34.
Compiti per casa
Dove tengo la configurazione
Come aggiorno la configurazione
Come separo configurazioni di sviluppo da produzione
Dove tengo le chiavi segrete e chi vi ha accesso
Come traccio le versioni
Chi autorizza i cambiamenti e come
Come conservo i Dati
Come aggiorno schemi database e interfacce tra moduli
Costruisco immagini o faccio il deploy via script
Che finestre di rilascio ho
Come traccio le attività e gli errori
Come raccolgo informazioni dalla produzione
34
-
35.
Fine delle trasmissioni
35
http://www.gartner.com/it-glossary/devops/
DevOps is a term used to refer to a set of practices that emphasize the collaboration and communication of both software developers and information technology (IT) professionals while automating the process of software delivery and infrastructure changes. It aims at establishing a culture and environment, where building, testing, and releasing software can happen rapidly, frequently, and more reliably.
Wikipedia (2017)
http://martinfowler.com/articles/feature-toggles.html
Nota con VSTS cloud non significa pubblico!
http://www.gartner.com/it-glossary/devops/
DevOps is a term used to refer to a set of practices that emphasize the collaboration and communication of both software developers and information technology (IT) professionals while automating the process of software delivery and infrastructure changes. It aims at establishing a culture and environment, where building, testing, and releasing software can happen rapidly, frequently, and more reliably.
Wikipedia (2017)