Rilasci Canary con Actions
Implementi pattern di rilascio Canary per distribuire gradualmente nuove funzionalità a un sottoinsieme di utenti, monitorando prestazioni e stabilità.
Rilasci Canary con Actions è una lezione CI/CD with GitHub Actions & DevOps Pipelines gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento CI/CD with GitHub Actions & DevOps Pipelines, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso CI/CD with GitHub Actions & DevOps Pipelines include 4 lezioni in totale.
Introduzione ai rilasci Canary
Immagini di lanciare una nuova funzionalità o un aggiornamento. E se contenesse un bug che riguardasse tutti gli utenti? Fa paura, vero?
I rilasci Canary aiutano a ridurre questo rischio distribuendo gradualmente le modifiche, inizialmente a un piccolo sottoinsieme di utenti. È come mandare un «canarino in miniera» per testare l'aria prima che entrino tutti gli altri.
Vantaggi dei rilasci Canary
I rilasci Canary offrono diversi vantaggi fondamentali:
- Rischio ridotto: limitano l'impatto dei problemi a un piccolo gruppo di utenti.
- Feedback dal mondo reale: forniscono dati di produzione su prestazioni e stabilità.
- Rollback rapido: se si verificano problemi, è possibile ripristinare rapidamente solo il piccolo gruppo Canary o l'intero servizio.
- Esposizione controllata: aumentano gradualmente il numero di utenti coinvolti man mano che cresce la fiducia.
Canary a confronto con Blue/Green
Forse ricorda le distribuzioni Blue/Green, in cui il traffico viene spostato istantaneamente tra due ambienti identici.
I rilasci Canary sono diversi. Invece di uno spostamento istantaneo, prevedono un passaggio graduale del traffico. La nuova versione viene eseguita insieme a quella precedente e inizialmente solo una piccola percentuale di utenti vede la nuova versione. Ciò consente un monitoraggio dettagliato prima del rilascio completo.
Come funzionano i rilasci Canary
Ecco il flusso di base di un rilascio Canary:
- Distribuzione della nuova versione: una nuova versione dell'applicazione viene distribuita su un piccolo insieme di server o istanze, insieme alla versione stabile esistente.
- Instradamento di una piccola quota di traffico: un load balancer o una service mesh viene configurato per inviare una piccola percentuale (ad esempio, il 5-10%) del traffico degli utenti alla nuova versione.
- Monitoraggio: le prestazioni, i tassi di errore e il feedback degli utenti vengono monitorati attentamente per il gruppo Canary.
- Promozione o rollback: se tutto procede bene, il traffico viene aumentato gradualmente oppure la nuova versione viene promossa al 100%. Se si verificano problemi, si esegue il rollback della versione Canary e si reindirizza il traffico alla versione stabile.
Orchestrare con GitHub Actions
GitHub Actions può orchestrare l'intero processo di rilascio canary. Non gestisce direttamente il traffico (questo è compito della vostra infrastruttura), ma attiva i vari passaggi:
- Creazione e test dell'applicazione.
- Distribuzione della nuova versione in un ambiente canary.
- Avvio dello spostamento del traffico tramite chiamate API al bilanciatore del carico o alla service mesh.
- Attesa dei risultati del monitoraggio o delle approvazioni manuali.
- Promozione del canary o avvio di un rollback.
Schema di un workflow canary
Un workflow tipico di GitHub Actions per un rilascio canary potrebbe essere simile al seguente:
name: Canary Deployment
on: push
jobs:
build:
# ... build and test steps ...
deploy-canary:
needs: build
steps:
- name: Deploy to Canary Group
# ... call script/tool to deploy and shift 10% traffic ...
monitor-canary:
needs: deploy-canary
# ... wait for monitoring/approval ...
promote-or-rollback:
needs: monitor-canary
# ... conditionally promote to 100% or rollback ...Ogni passaggio interagirebbe con i vostri strumenti di distribuzione.
Simulare la logica del rollout canary
Sebbene GitHub Actions svolga il ruolo di orchestratore, le decisioni effettive e i comandi di distribuzione vengono spesso eseguiti all'interno di script. Ecco un esempio in Python che simula la logica di un rollout canary. Immaginate un'Action che esegue questo script:
def deploy_version(version, traffic_percent):
print(f"Deploying {version} to {traffic_percent}% traffic.")
if traffic_percent == 100:
print("Full rollout complete!")
elif traffic_percent > 0:
print("Canary deployed. Monitoring for stability...")
else:
print("Version removed (rollback).")
if __name__ == "__main__":
print("--- Starting Canary Workflow ---")
new_app_version = "v2.1-canary"
stable_app_version = "v2.0"
# Step 1: Deploy new version to 10% traffic
deploy_version(new_app_version, 10)
# Step 2: Simulate monitoring (e.g., waiting for metrics)
print("Monitoring canary performance...")
import random
canary_successful = random.choice([True, True, True, False]) # 75% chance of success
if canary_successful:
print("Canary looks good! Proceeding to full rollout.")
# Step 3a: Promote new version to 100%
deploy_version(new_app_version, 100)
else:
print("Canary issues detected! Rolling back.")
# Step 3b: Rollback to stable version
deploy_version(stable_app_version, 100)
print("--- Canary Workflow Finished ---")Monitorare il canary
Un monitoraggio efficace è fondamentale. Il vostro workflow di GitHub Actions può integrarsi con i sistemi di monitoraggio in diversi modi:
- Chiamate API: interrogare gli strumenti di monitoraggio (ad esempio Datadog e Prometheus) per ottenere le metriche principali.
- Controlli di integrità: interrogare periodicamente gli endpoint di health check dell'applicazione.
- Gate manuali: mettere in pausa il workflow per consentire la revisione e l'approvazione da parte di una persona.
- Attese basate sul tempo: attendere un periodo stabilito affinché le metriche si stabilizzino.
Il workflow utilizza quindi questi segnali per decidere se promuovere il canary o eseguire un rollback.
Promozione o rollback condizionale
Al termine della fase di monitoraggio, GitHub Actions utilizza una logica condizionale per decidere il passaggio successivo. È possibile usare istruzioni if nelle definizioni dei job o dei passaggi.
promote-or-rollback:
needs: monitor-canary
if: success() && needs.monitor-canary.outputs.canary_ok == 'true'
steps:
- name: Promote Full Rollout
# ... command to shift 100% traffic to new version ...
rollback:
needs: monitor-canary
if: failure() || needs.monitor-canary.outputs.canary_ok == 'false'
steps:
- name: Rollback to Stable
# ... command to shift 100% traffic to old version ...In questo modo si garantisce una reazione automatica alle prestazioni del canary.
Verifica del rilascio canary
Avete appreso i vantaggi e il funzionamento dei rilasci canary. Verifichiamo la vostra comprensione.
Riepilogo: rilasci canary con Actions
In questa lezione avete appreso i rilasci canary, una strategia di distribuzione efficace per distribuire gradualmente nuove versioni del software a un sottoinsieme di utenti.
- I rilasci canary riducono al minimo i rischi e forniscono feedback dal mondo reale.
- GitHub Actions orchestra la compilazione, la distribuzione nel canary, il monitoraggio e i passaggi di promozione o rollback condizionali.
- Un monitoraggio efficace e una logica condizionale sono fondamentali per pipeline canary di successo.
Utilizzando i canary, potete distribuire con maggiore sicurezza e controllo.
Impara CI/CD with GitHub Actions & DevOps Pipelines con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 12
- Lezioni
- 48
Domande Frequenti
La lezione «Rilasci Canary con Actions» è gratuita?
Sì — il testo completo di «Rilasci Canary con Actions» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso CI/CD with GitHub Actions & DevOps Pipelines, passa a CoddyKit PRO. Il corso CI/CD with GitHub Actions & DevOps Pipelines include 4 lezioni in totale.
Cosa imparerò in «Rilasci Canary con Actions»?
Implementi pattern di rilascio Canary per distribuire gradualmente nuove funzionalità a un sottoinsieme di utenti, monitorando prestazioni e stabilità. Eserciti CI/CD with GitHub Actions & DevOps Pipelines con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare CI/CD with GitHub Actions & DevOps Pipelines?
Non è richiesta alcuna esperienza precedente. CI/CD with GitHub Actions & DevOps Pipelines su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Rilasci Canary con Actions»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione CI/CD with GitHub Actions & DevOps Pipelines?
Sì. Ogni lezione CI/CD with GitHub Actions & DevOps Pipelines include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Deploy Blue/Green
- Rilasci Canary con Actions
- Rollback e disaster recovery
- Feature flag e rilasci progressivi