SlideShare a Scribd company logo
1 of 17
Monica Colangelo
Come avverare i
tuoi sogni di
100% uptime con
la strategia
blue/green
Test
Rilascio
Verifica
Finalizzazione
Come garantire un uptime 100%
durante un rilascio
Preparazione
creazione dell’ambiente green e configurazione
load balancer
esecuzione test su ambiente green e
monitoraggio risultati e stabilità
swap versioni blue/green
monitoraggio del traffico, eventuale
rollback
ritiro dalla produzione
dell’ambiente blue
Realtà
Infrastrutture legacy sistemi obsoleti che limitano la
modernizzazione
No budget ostacoli finanziari e/o
organizzativi alla trasformazione
digitale
Tradizione orale conoscenza trasmessa di
persona, scarsamente o per
niente documentata
“Se funziona
quanto basta
non toccarlo
che si guasta”
(antico haiku della sala
macchine)
Architettura
“monolite”
Batteria di web server “in prima linea” che servono migliaia di siti
erogati da backend eterogenei (tra cui CMS)
Blast radius Anni (decenni?) di configurazioni stratificate, costruite una sull’altra e
talvolta inestricabili, inserite manualmente con rischio operativo
elevatissimo
Ownership Assenza di una ownership di progetto ben definita perché le
applicazioni di backend afferiscono a team diversi e/o non più esistenti
Test Ambiente di test inaffidabile per differenze di configurazioni e/o di
backend
Security Macchine mai aggiornate
Situazione
VINCOLI
Non intervenire sul
“contenuto”
dell’applicazione
Mantenere
l’architettura logica
OBIETTIVI
Migliorare sicurezza
e affidabilità
Ridurre il rischio
operativo
IDEA
Upgrade tecnologico
senza modifiche
applicative
Idea e obiettivi
Cosa vuol dire
upgrade tecnologico
PRIMA DOPO
Configurazioni inserite manualmente
senza uno storico
Configurazioni salvate e versionate con Git
Check manuali Test di correttezza sintattica
Modifiche puntuali Generazione di container images con una pipeline automatica
Macchine virtuali Orchestratore per gestire elasticità
Gestione accessi, sicurezza, OS Minimizzazione dell’effort di gestione
Rilasci manuali Rilasci automatizzati
Rollback sanguinosi Rollback semplificati
Strategia della speranza TEST, TEST, TEST
Test?
Senza test, automatizzare
significa fallire più
velocemente
Per ogni sistema e attività c’è
un test più o meno
significativo
Photo by Ryan Cheng on Unsplash
Test!
Photo by Christin Hume on Unsplash
No regression sulle configurazioni
precedenti
Lista di URL dinamica
Estrazione da access log con accorgimenti
specifici
...dipende tutto dallo use case!
CodeBuild
CodePipeline CodeDeploy
ECS Fargate Lambda
Check sintattico
e build
Orchestratore di container
semplice e senza macchine
Ecosistema tecnologico
Per eseguire i test
Rilasci automatici alla
commit delle nuove
configurazioni
Supporto nativo della
strategia blue/green
Architettura completa
1. Commit su repo  unico intervento umano
2. L’evento di commit è rilevato da Eventbridge e
una CodePipeline parte automaticamente
3. CodeBuild genera la container image e la salva su
ECR
4. CodeDeploy crea l’ambiente green, lancia la
Lambda per eseguire i test, e a seconda del
risultato:
a) se KO, distrugge l’ambiente green e termina il
rilascio
b) se OK, redirige gradualmente il traffico verso
l’ambiente green; quando l’ambiente blue non
riceve più traffico, lo termina
Configurazione
Il load balancer viene creato con due listener su porte
diverse
Vengono associati due target group, di cui uno
inizialmente vuoto
La configurazione del rilascio viene effettuata
direttamente su CodeDeploy
Risultati
Durata di
un rilascio
Tempo di
rollback
Tasso di
errori
Uptime DevOps
happiness
Prima 3-4 ore 1-2 ore 40% 99.5% (downtime 1h
a settimana =
2g/anno)
Dopo 15 minuti immediato 2% 99.999% (downtime
non misurato)
https://github.com/theonlymonica/bluegreen-ecs-fargate-examples
https://letsmake.cloud/bluegreen-fargate
https://www.linkedin.com/in/monicacolangelo/
https://twitter.com/monicaontech
https://letsmakecloud.beehiiv.com/subscribe
Riferimenti
Domande?
Grazie! SEDI:
Milano
Roma
Napoli
Genova
Bologna NEW!
Torino
Pisa
Treviso
Cosenza
Salerno
Bari
WE ARE HIRING!

More Related Content

Similar to Come avverare i tuoi sogni di 100% uptime con la strategia blue/green

Presentazione: Sviluppo di un hub di comunicazione in una applicazione per po...
Presentazione: Sviluppo di un hub di comunicazione in una applicazione per po...Presentazione: Sviluppo di un hub di comunicazione in una applicazione per po...
Presentazione: Sviluppo di un hub di comunicazione in una applicazione per po...
gwalter85
 
Presentazione tesi magistrale
Presentazione tesi magistralePresentazione tesi magistrale
Presentazione tesi magistrale
Federico Cacco
 
Uno sguardo a CQRS ed EventSourcing
Uno sguardo a CQRS ed EventSourcingUno sguardo a CQRS ed EventSourcing
Uno sguardo a CQRS ed EventSourcing
Alessandro Melchiori
 

Similar to Come avverare i tuoi sogni di 100% uptime con la strategia blue/green (20)

PASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous IntegrationPASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous Integration
 
"Sistemi managed in alta affidabilità e in open source" by Andrea Di Marco
"Sistemi managed in alta affidabilità e in open source" by Andrea Di Marco"Sistemi managed in alta affidabilità e in open source" by Andrea Di Marco
"Sistemi managed in alta affidabilità e in open source" by Andrea Di Marco
 
Predictive Maintenance per le aziende del nord-est con Azure e IoT
Predictive Maintenance per le aziende del nord-est con Azure e IoTPredictive Maintenance per le aziende del nord-est con Azure e IoT
Predictive Maintenance per le aziende del nord-est con Azure e IoT
 
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
 
Summary of “The Case for Writing Network Drivers in High-Level Programming La...
Summary of “The Case for Writing Network Drivers in High-Level Programming La...Summary of “The Case for Writing Network Drivers in High-Level Programming La...
Summary of “The Case for Writing Network Drivers in High-Level Programming La...
 
Sistemi domotici integrati per la gestione intelligente d’ambiente
Sistemi domotici integrati per la gestione intelligente d’ambienteSistemi domotici integrati per la gestione intelligente d’ambiente
Sistemi domotici integrati per la gestione intelligente d’ambiente
 
Semi-Active Replication Protocol
Semi-Active Replication ProtocolSemi-Active Replication Protocol
Semi-Active Replication Protocol
 
MySQL Day Milano 2018 - MySQL e le architetture a microservizi
MySQL Day Milano 2018 - MySQL e le architetture a microserviziMySQL Day Milano 2018 - MySQL e le architetture a microservizi
MySQL Day Milano 2018 - MySQL e le architetture a microservizi
 
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
 
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
 
Presentazione: Sviluppo di un hub di comunicazione in una applicazione per po...
Presentazione: Sviluppo di un hub di comunicazione in una applicazione per po...Presentazione: Sviluppo di un hub di comunicazione in una applicazione per po...
Presentazione: Sviluppo di un hub di comunicazione in una applicazione per po...
 
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
 
Presentazione tesi magistrale
Presentazione tesi magistralePresentazione tesi magistrale
Presentazione tesi magistrale
 
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
 
Database Project in Visual Studio 2010
Database Project in Visual Studio 2010Database Project in Visual Studio 2010
Database Project in Visual Studio 2010
 
Database Data Aggregator
Database Data AggregatorDatabase Data Aggregator
Database Data Aggregator
 
Final presentation of Project Management course (Gestione Progetti Software) ...
Final presentation of Project Management course (Gestione Progetti Software) ...Final presentation of Project Management course (Gestione Progetti Software) ...
Final presentation of Project Management course (Gestione Progetti Software) ...
 
Uno sguardo a CQRS ed EventSourcing
Uno sguardo a CQRS ed EventSourcingUno sguardo a CQRS ed EventSourcing
Uno sguardo a CQRS ed EventSourcing
 
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
 

Come avverare i tuoi sogni di 100% uptime con la strategia blue/green