Dev Ops Flashcards
Com’é cambiata formazione dei teams di sviluppo
Inizialmente teams differenti responsabili di development , release e supporto
Dev team passava final version a release team
Release team buildava testa e preparava documentazione, per poi passare ai clienti
Team di supporto responsabile per customer support
Fattori responsabili delle modifiche alla tipologia di sviluppo
Agile che riduce tempi di sviluppo
Amazon che ridusse dimensioni dei service
Ora gestibili in dev e support da singolo team
Saas release possibile
Key changes nella metodologia di sviluppo
Tutti responsabili di tutto
Ogni cosa che può essere automatizzata va automatizzata
Bisogna collezionare dati continuamente sullo stato del sistema
Dev ops benefici
Deployment faster
Rischi ridotti
Riparazioni velocizzate
Team diventano più produttivi
Team differenziati
Designer
Software eng
Security eng
Infrastrutture en
Customer interaction
Responsabilitá ogni membro del team
Tutti nel team devono essere coinvolti nei meeting e metodologie
Ogni membro deve condividere proprie conoscenze
Developers sempre pronti a gestire problemi anche nel weekend
Programma per gestire il codice, cosa permettono.
Utilizzo di code management software
Semplificazione nella creazione di eseguibili e run dei test automatici
Continuos integration cos’é, come funziona versione integrativa sistema?
Ogni volta che dev commit dei changes una build é bulidata e testata
Tante operazioni da effettuare system building
Una versione integrativa del sistema viene creata e testa ogni volta che un change é pushed nella repository shared
Vantaggi e pericoli continous integration
Vantaggi:
Veloce, versione sempre funzionante del sistema disponibile, ogni membro del team non vuole rompere la build
Incremental build esegue test solo se file collegati a quei test sono stati modificati
Pericoli:
Non rompere build, testa sulla tua versione locale prima che le tue modifiche non vadano in conflitto con quelle degli altri devs
Continuos reasoning cos’é
Possibile analisi statica del codice per verificare quali cambiamenti potrebbero aver portato errori
Continuos delivery cos’é
Creazione di una versione eseguibile del sistema e dei test
Effettuata con containers per replicare nel modo migliore possibile production environment
Per deliver vengono effettuati test una volta bulinato sistema
Per deployare software e dati sono trasferiti ai server di produzione e si può switchare a nuova versione
Vantaggi Continous delivery
Costi ridotti
Velocità nel problem solving
Miglior feedback dei clienti
Versione di prova per una cerchia stretta di utenti
Non va deployato ogni singolo change:
Versione incompleta
Continue modifiche UI
Cos’é infrastruttura as code
Automatizzare il processo di update del software sui server utilizzando una definizione leggibile dalla macchina di modello di infrastruttura
Vantaggi Infrastruttura as Code
Infrastruttura disponibile per tutto il DevOps team
Riproducibile in modo semplice da ogni membro del team
Reliability automatizzazione evita errori umani
Recovery semplice tornare a versione precedenti dell’infrastruttura
Parametri misurabili durante DevOps
Misurare processi per collezionare e analizzare dati dev/test/deployment
Misurare dati su performance, affidabilità e accettabilità dei customer
Misurare utilizzo dei customer del prodotto
Misurare successo che prodotto crea per business
Tipologie di dati raccolti con deployment
Tramite Jenkins dati relativi a deployment
Monitoraggio services
Dati dei customer con problemi del servizio
Strumenti per verificare performances
Come code managment software evitano problemi di lavoro in parallelo
Creazione di shared repository che contengono code files, configuration files, build scripts, librerie condivise
Features
Identificazione della versione e della release, ad ogni versione del codice sono associati degli identificativi
Registrata history delle versioni
Più devs possono lavorare indipendentemente
Efficienti nel manage di più copie differenti con poche differenze
Come viene managed il source code decentralizzato, comandi anche
User effettua check in e check out dei file
Attenzione quando file nel check out già in uso
Quando effettuiamo il check in sistema si assicura che le copie del file non vadano in conflitto
Più conosciuto oggi git
Partiva dal kernel linux
Master branch quella principale
Nuove versioni con nuovi branches possono essere create
Quando user effettua un git clone crea propria copia del master branch dove può lavorare indipendentemente
Vantaggi managed source code decentralizzato
Resilienza:
Ognuno ha propria copia, si può lavorare offline anche in caso di problemi alla versione centrale
Velocità: commit delle operazioni immediato essendo versione locale
Flessibilità: più facile testing locale
Branch cos’é
Versione stand alone creata quando un dev vuole effettuare dei cambiamenti
Ogni dev crea proprio branch
Semplice revert
Source code managment centralizzato
Utenti fanno check in e check out dei files, warning se file già in uso, al check in viene creata nuova versione del file, system si accerterà assenza di conflitti.
Perchè confronti su git convenienti
Vengono confrontati i files riga per riga, quindi senza modifiche stessa riga non avremo conflitti. Altrimenti vengono evidenziate righe problematiche.
Perchè git si presta bene open source?
Github, permette a ciascun dev di lavorare su propria copia locale, committare modifiche che sono alla fine saranno accettate dai gestori della versione centrale.
Differenza tra continous deployment e continous delivery
Per continous deployment ad ogni modifica effettuata viene creata una versione funzionante del sistema, che viene poi testata ed è pronta per la messa in prod.
Per continous delivery, intendiamo continous deployment durante il quale il sistema viene automaticamente messo in produzione
Cos’è separation logic?
Partendo da logica di Hoare, abbiamo precondizione, data una trasformazione, otteniamo una postcondizione.
Permette di analizzare tramite logica di Hoare i programmi.
Software per continous deployment
Jenkins
Software per infrastructure as code
Puppet
Programma per verificare performance applicazione?
New Relic
Cos’é Web hooks ?
Utilizzo di meccanismo chiamato Web hooks per triggerare DevOps operations in risposta agli update della repository del progetto
Come si scrive una pipeline per Jenkins?
pipeline {
agent none
stages {
stage(‘Build’) {
agent {
docker {
image ‘python:2-alpine’
}
}
steps {
sh ‘python -m py_compile
sources/add2vals.py
sources/calc.py’
stash(name: ‘compiled-results’,
includes:
‘sources/.py’)
}
}
}
}
Come aggiungo una linea per il testing ?
stage(‘Test’) {
agent {
docker {
image ‘qnib/pytest’
}
}
steps {
sh ‘py.test –junit-xml test-reports/results.xml
sources/test_calc.py’
}
post {
always {
junit ‘test-reports/results.xml’
}
}
}