CI/CD with GitHub Actions & DevOps Pipelines · Lezione

Rilasci Canary con Actions

Implementi pattern di rilascio Canary per distribuire gradualmente nuove funzionalità a un sottoinsieme di utenti, monitorando prestazioni e stabilità.

Lezione 2 di 411 passaggi

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:

  1. Distribuzione della nuova versione: una nuova versione dell'applicazione viene distribuita su un piccolo insieme di server o istanze, insieme alla versione stabile esistente.
  2. 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.
  3. Monitoraggio: le prestazioni, i tassi di errore e il feedback degli utenti vengono monitorati attentamente per il gruppo Canary.
  4. 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.

Gratis per iniziare

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

  1. Deploy Blue/Green
  2. Rilasci Canary con Actions
  3. Rollback e disaster recovery
  4. Feature flag e rilasci progressivi
← Torna a CI/CD with GitHub Actions & DevOps Pipelines