Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Distribuzioni canary di Amazon ECS
Le implementazioni Canary indirizzano innanzitutto una piccola percentuale di traffico verso la nuova revisione per i test iniziali, quindi spostano tutto il traffico rimanente contemporaneamente dopo il completamento con successo della fase canaria. Con le implementazioni di Amazon ECS Canary, convalida le nuove revisioni dei servizi con traffico utente reale, riducendo al minimo l'esposizione al rischio. Questo approccio offre un modo controllato per implementare le modifiche con la possibilità di monitorare le prestazioni e ripristinare rapidamente se vengono rilevati problemi.
Risorse coinvolte nell'implementazione di un canarino
Le seguenti sono le risorse coinvolte nelle implementazioni di Amazon ECS Canary:
-
Spostamento del traffico: il processo utilizzato da Amazon ECS per spostare il traffico di produzione. Per le implementazioni di Amazon ECS Canary, il traffico viene spostato in due fasi: prima verso la percentuale canaria, quindi verso il completamento della distribuzione.
-
Percentuale canaria: la percentuale di traffico indirizzato alla nuova versione durante il periodo di valutazione.
-
Tempo di cottura di Canary: la durata del monitoraggio della versione Canary prima di procedere con la distribuzione completa.
-
Tempo di attesa dell'implementazione: il tempo, in minuti, che Amazon ECS attende dopo aver spostato tutto il traffico di produzione alla nuova revisione del servizio, prima di terminare la vecchia revisione del servizio. Si tratta del periodo in cui le revisioni blu e verde del servizio vengono eseguite contemporaneamente dopo lo spostamento del traffico di produzione.
-
Fasi del ciclo di vita: una serie di eventi nell'operazione di implementazione, ad esempio “dopo lo spostamento del traffico di produzione”.
-
Lifecycle hook: una funzione Lambda che viene eseguita in una fase specifica del ciclo di vita. È possibile creare una funzione che verifichi la distribuzione.
-
Gruppo target: una risorsa ELB utilizzata per indirizzare le richieste verso uno o più obiettivi registrati (ad esempio, EC2 istanze). Quando si crea un listener, si specifica un gruppo di destinazione per l'operazione predefinita. Il traffico viene inoltrato al gruppo di destinazione specificato nella regola del listener.
-
Listener: una risorsa ELB che verifica le richieste di connessione utilizzando il protocollo e la porta configurati. Le regole definite per un listener determinano il modo in cui Amazon ECS instrada le richieste alle destinazioni registrate.
-
Regola: una risorsa ELB associata a un listener. Una regola definisce il modo in cui le richieste vengono instradate e consiste in un'azione, una condizione e una priorità.
Considerazioni
Si tenga in considerazione quanto segue quando si sceglie un tipo di implementazione:
-
Utilizzo delle risorse: le implementazioni Canary eseguono contemporaneamente sia i set di attività originali che quelli di Canary durante il periodo di valutazione, aumentando l'utilizzo delle risorse.
-
Volume di traffico: assicurati che la percentuale di Canary generi traffico sufficiente per una convalida significativa della nuova versione.
-
Complessità del monitoraggio: le implementazioni di Canary richiedono il monitoraggio e il confronto delle metriche tra due versioni diverse contemporaneamente.
-
Velocità di rollback: le implementazioni Canary consentono un ripristino rapido riportando il traffico al set di attività originale.
-
Mitigazione del rischio: le implementazioni Canary offrono un'eccellente mitigazione del rischio limitando l'esposizione a una piccola percentuale di utenti.
-
Durata dell'implementazione: le implementazioni di Canary includono periodi di valutazione che prolungano il tempo complessivo di implementazione ma offrono opportunità di convalida.
Come funzionano le implementazioni di Canary
Il processo di distribuzione di Amazon ECS Canary segue un approccio strutturato con sei fasi distinte che garantiscono aggiornamenti delle applicazioni sicuri e affidabili. Ogni fase ha uno scopo specifico nella convalida e nella transizione dell'applicazione dalla versione attuale (blu) alla nuova versione (verde).
-
Fase di preparazione: creare l'ambiente verde insieme a quello blu esistente.
-
Fase di implementazione: implementazione della nuova revisione del servizio nell'ambiente verde. Amazon ECS avvia nuove attività utilizzando la revisione aggiornata del servizio mentre l'ambiente blu continua a servire il traffico di produzione.
-
Fase di test: convalida dell'ambiente verde utilizzando l'instradamento del traffico di test. L'Application Load Balancer indirizza le richieste di test verso l'ambiente verde mentre il traffico di produzione rimane sul blu.
-
Fase di trasferimento del traffico nelle Canarie: sposta la percentuale di traffico configurata verso la nuova revisione del servizio verde durante la fase canaria, seguita dallo spostamento del 100,0% del traffico verso la revisione del servizio verde
-
Fase di monitoraggio: monitoraggio dello stato delle applicazioni, delle metriche delle prestazioni e degli stati di allarme durante il periodo di tempo di incorporamento. Quando vengono rilevati problemi, viene avviata un'operazione di rollback.
-
Fase di completamento: finalizza l'implementazione chiudendo l'ambiente blu.
La fase di trasferimento del traffico nelle Canarie segue le seguenti fasi:
-
Iniziale: l'implementazione inizia con il 100% del traffico indirizzato alla revisione blu (attuale) del servizio. La (nuova) revisione del servizio verde riceve traffico di prova ma inizialmente nessun traffico di produzione.
-
Spostamento del traffico nelle Canarie - Questa è una strategia di spostamento del traffico in due fasi.
-
Fase 1:10,0% verso il verde, 90,0% verso il blu
-
Fase 2:100,0% verso il verde, 0,0% verso il blu
-
-
Tempo di cottura per Canary Traffic - Attende una durata configurabile (Canary Bake Time) dopo il cambio di marcia per consentire il monitoraggio e la convalida delle prestazioni della nuova revisione con l'aumento del traffico.
-
Lifecycle Hook: le funzioni Lambda opzionali possono essere eseguite in varie fasi del ciclo di vita durante l'implementazione per eseguire convalida, monitoraggio o logica personalizzata automatizzati. Le funzioni Lambda o gli hook del ciclo di vita configurati per PRODUCTION_TRAFFIC_SHIFT verranno richiamati in ogni fase del trasferimento del traffico di produzione.
Fasi del ciclo di vita dell'implementazione
Il processo di implementazione di Canary procede attraverso fasi distinte del ciclo di vita, ognuna con responsabilità e punti di controllo di convalida specifici. La comprensione di queste fasi consente di monitorare l'avanzamento dell'implementazione e risolvere i problemi in modo efficace.
Ogni fase del ciclo di vita può durare fino a 24 ore e inoltre ogni fase di spostamento del traffico in PRODUCTION_TRAFFIC_SHIFT può durare fino a 24 ore. Si consiglia di mantenere il valore al di sotto della soglia delle 24 ore. Questo perché i processi asincroni richiedono tempo per attivare gli hook. Il sistema scade, fallisce l'implementazione e quindi avvia un rollback dopo che una fase raggiunge le 24 ore.
CloudFormation le distribuzioni hanno restrizioni di timeout aggiuntive. Sebbene il limite delle fasi di 24 ore rimanga in vigore, CloudFormation impone un limite di 36 ore all'intera implementazione. CloudFormation fallisce l'implementazione e quindi avvia un rollback se il processo non viene completato entro 36 ore.
| Fasi del ciclo di vita | Description | Supporto per Lifecycle Hook |
|---|---|---|
| RECONCILE_SERVICE | Questa fase si verifica solo quando si avvia una nuova implementazione del servizio con più di 1 revisione del servizio in uno stato ACTIVE. | Sì |
| PRE_SCALE_UP | La revisione del servizio verde non è stata avviata. La revisione del servizio blu gestisce il 100% del traffico di produzione. Non è previsto alcun traffico di test. | Sì |
| SCALE_UP | Il momento in cui la revisione del servizio verde aumenta fino al 100% e avvia nuove attività. La revisione del servizio verde non serve alcun traffico a questo punto. | No |
| POST_SCALE_UP | La revisione del servizio verde è stata avviata. La revisione del servizio blu gestisce il 100% del traffico di produzione. Non è previsto alcun traffico di test. | Sì |
| TEST_TRAFFIC_SHIFT | Le revisioni del servizio blu e verde sono in esecuzione. La revisione del servizio blu gestisce il 100% del traffico di produzione. La revisione del servizio verde migra dallo 0% al 100% del traffico di test. | Sì |
| POST_TEST_TRAFFIC_SHIFT | Lo spostamento del traffico di test è completo. La revisione del servizio verde gestisce il 100% del traffico di test. | Sì |
| PRODUCTION_TRAFFIC_SHIFT | Il traffico di produzione delle Canarie viene indirizzato alla revisione verde e lifecycle hook viene richiamato con un timeout di 24 ore. La seconda fase sposta il traffico di produzione residuo verso la revisione verde. | Sì |
| POST_PRODUCTION_TRAFFIC_SHIFT | Lo spostamento del traffico di produzione è completo. | Sì |
| BAKE_TIME | La durata in cui le revisioni del servizio blu e verde vengono eseguite contemporaneamente. | No |
| CLEAN_UP | La revisione del servizio blu è stata completamente ridotta a 0 attività in esecuzione. La revisione del servizio verde è ora la revisione del servizio di produzione dopo questa fase. | No |
Parametri di configurazione
Le implementazioni Canary richiedono i seguenti parametri di configurazione:
-
Percentuale delle Canarie: la percentuale di traffico da indirizzare verso la nuova revisione del servizio durante la fase canaria. Ciò consente di eseguire test con un sottoinsieme controllato del traffico di produzione.
-
Tempo di cottura delle Canarie: la durata di attesa durante la fase canaria prima di spostare il traffico rimanente verso la nuova revisione del servizio. Ciò fornisce il tempo necessario per monitorare e convalidare la nuova versione.
Gestione del traffico
Le implementazioni Canary utilizzano gruppi target di sistemi di bilanciamento del carico per gestire la distribuzione del traffico:
-
Gruppo target originale: contiene le attività dell'attuale versione stabile e riceve la maggior parte del traffico.
-
Gruppo target Canary: contiene le attività della nuova versione e riceve una piccola percentuale di traffico per i test.
-
Routing ponderato: il load balancer utilizza regole di routing ponderate per distribuire il traffico tra i gruppi target in base alla percentuale di canarie configurata.
Monitoraggio e convalida
Le implementazioni efficaci di Canary si basano su un monitoraggio completo:
-
Controlli sanitari: entrambi i set di attività devono superare i controlli di integrità prima di ricevere traffico.
-
Confronto delle metriche: confronta gli indicatori chiave delle prestazioni tra la versione originale e quella di Canary, come il tempo di risposta, il tasso di errore e la velocità effettiva.
-
Rollback automatico: configura gli CloudWatch allarmi per attivare automaticamente il rollback se la versione Canary mostra prestazioni inferiori.
-
Convalida manuale: utilizza il periodo di valutazione per esaminare manualmente i registri, le metriche e il feedback degli utenti prima di procedere.
Le migliori pratiche per le implementazioni di Canary
Segui queste best practice per garantire il successo delle implementazioni di Canary con i relativi servizi.
Scegli le percentuali di traffico appropriate
Considera questi fattori quando selezioni le percentuali di traffico delle Canarie:
-
Inizia in piccolo: inizia con il 5-10% del traffico per ridurre al minimo l'impatto in caso di problemi.
-
Considerate la criticità delle applicazioni: utilizzate percentuali più basse per le applicazioni mission critical e percentuali più alte per i servizi meno critici.
-
Tieni conto del volume di traffico: assicurati che la percentuale canaria generi traffico sufficiente per una convalida significativa.
Stabilisci periodi di valutazione appropriati
Configura i periodi di valutazione in base a queste considerazioni:
-
Concedi un tempo sufficiente: imposta periodi di valutazione sufficientemente lunghi da acquisire dati significativi sulle prestazioni, in genere 10-30 minuti.
-
Considerate i modelli di traffico: tenete conto dei modelli di traffico dell'applicazione e dei periodi di picco di utilizzo.
-
Equilibra velocità e sicurezza: periodi di valutazione più lunghi forniscono più dati ma rallentano la velocità di implementazione.
Implementa un monitoraggio completo
Imposta il monitoraggio per monitorare le prestazioni di implementazione di Canary:
-
Metriche chiave: monitora il tempo di risposta, il tasso di errore, la velocità effettiva e l'utilizzo delle risorse per entrambi i set di attività.
-
Rollback basato sugli allarmi: configura gli CloudWatch allarmi per attivare automaticamente il rollback quando le metriche superano le soglie.
-
Analisi comparativa: configura dashboard per confrontare le metriche tra la versione originale e quella di Canary. side-by-side
-
Metriche aziendali: oltre alle metriche tecniche, includi metriche specifiche aziendali come i tassi di conversione o il coinvolgimento degli utenti.
Pianifica le strategie di rollback
Preparati a potenziali scenari di rollback con queste strategie:
-
Rollback automatizzato: configura i trigger di rollback automatici in base ai controlli di integrità e alle metriche delle prestazioni.
-
Procedure di rollback manuali: documenta procedure chiare per il rollback manuale quando i trigger automatici non rilevano tutti i problemi.
-
Test di rollback: verifica regolarmente le procedure di rollback per assicurarti che funzionino correttamente quando necessario.
Effettua una convalida completa prima dell'implementazione
Garantisci una convalida completa prima di procedere con le implementazioni di Canary:
-
Test pre-implementazione: verifica accuratamente le modifiche negli ambienti di staging prima dell'implementazione di Canary.
-
Configurazione del controllo dello stato: assicurati che i controlli dello stato riflettano accuratamente la disponibilità e la funzionalità delle applicazioni.
-
Convalida delle dipendenze: verifica che le nuove versioni siano compatibili con i servizi downstream e upstream.
-
Coerenza dei dati: assicurati che le modifiche allo schema del database e le migrazioni dei dati siano compatibili con le versioni precedenti.
Coordina il coinvolgimento del team
Garantisci un coordinamento efficace del team durante l'impiego dei canarini:
-
Finestre di implementazione: pianifica le implementazioni di Canary durante l'orario lavorativo, quando i team sono disponibili per il monitoraggio e la risposta.
-
Canali di comunicazione: stabilisci canali di comunicazione chiari per lo stato dell'implementazione e la risoluzione dei problemi.
-
Assegnazione dei ruoli: definisci ruoli e responsabilità per il monitoraggio, il processo decisionale e l'esecuzione del rollback.