0Pricing
Azure Fundamentals · Lezione

Slot di distribuzione e swap

Crei slot di staging per distribuzioni blue-green, prepari una nuova versione nello slot di staging e la scambi con quella in produzione senza tempi di inattività.

Slot di distribuzione e swap è una lezione Azure Fundamentals 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 Azure Fundamentals, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Azure Fundamentals include 4 lezioni in totale.

Che cosa sono gli slot di distribuzione

Gli slot di distribuzione sono ambienti attivi e separati per un'app Web di App Service, ciascuno con il proprio nome host (ad esempio myapp-staging.azurewebsites.net). Gli slot condividono lo stesso piano App Service e le stesse risorse dello slot di produzione, ma vengono eseguiti in modo indipendente. Consentono le distribuzioni blue-green: è possibile convalidare una nuova versione in uno slot di staging e poi scambiarla con quella in produzione senza tempi di inattività. Gli slot sono disponibili a partire dal livello Standard.

Creazione di uno slot di distribuzione

Aggiunga un nuovo slot di distribuzione all'app Web usando il portale Azure o l'interfaccia della riga di comando. Ogni slot dispone di un proprio URL, di impostazioni dell'applicazione e di stringhe di connessione. È possibile creare fino a 5 slot nel livello Standard e fino a 20 slot nel livello Premium. I nomi comuni degli slot includono staging, canary, hotfix e integration, che riflettono le diverse fasi della pipeline di rilascio.

# Create a staging deployment slot
az webapp deployment slot create \
  --name MyUniqueWebApp \
  --resource-group MyRG \
  --slot staging

# Deploy code to the staging slot
az webapp deploy \
  --name MyUniqueWebApp \
  --resource-group MyRG \
  --slot staging \
  --src-path app.zip

# The staging slot is live at:
# https://MyUniqueWebApp-staging.azurewebsites.net

Preparazione dello slot di staging

Prima dello scambio, è fondamentale preparare lo slot di staging, in modo che la nuova versione sia completamente inizializzata. Un'istanza di App Service non preparata risponde lentamente alle prime richieste mentre il runtime si inizializza, una situazione inaccettabile in produzione. Abiliti Auto Swap oppure invii manualmente richieste HTTP di preparazione allo slot di staging. App Service supporta anche una configurazione applicationInitialization per definire i percorsi di preparazione che devono restituire 200 prima che lo slot venga considerato pronto.

# web.config snippet for warm-up (IIS/Windows)
# <system.webServer>
#   <applicationInitialization>
#     <add initializationPage='/health' hostName='MyUniqueWebApp-staging.azurewebsites.net'/>
#   </applicationInitialization>
# </system.webServer>

# Or use a startup probe via the App Service health check
az webapp config set \
  --name MyUniqueWebApp \
  --resource-group MyRG \
  --slot staging \
  --generic-configurations '{"healthCheckPath": "/health"}'

Scambio degli slot

Uno scambio sostituisce atomicamente gli slot di staging e di produzione. Durante uno scambio, App Service indirizza innanzitutto il traffico alle istanze di staging che eseguono il nuovo codice, attende che si inizializzino, quindi reindirizza tutto il traffico di produzione alle nuove istanze; le precedenti istanze di produzione diventano così il nuovo slot di staging. In questo modo il rollback è semplicissimo: è sufficiente eseguire nuovamente lo scambio per ripristinare la versione precedente.

# Swap staging into production
az webapp deployment slot swap \
  --name MyUniqueWebApp \
  --resource-group MyRG \
  --slot staging \
  --target-slot production

# Rollback: swap production back to staging
az webapp deployment slot swap \
  --name MyUniqueWebApp \
  --resource-group MyRG \
  --slot production \
  --target-slot staging

Impostazioni associate o non associate allo slot

Le impostazioni dell'applicazione possono essere contrassegnate come associate (specifiche dello slot) o non associate (scambiabili). Le impostazioni non associate seguono lo slot di distribuzione durante lo scambio, quindi la stringa di connessione al database di staging segue il codice in produzione. Le impostazioni associate restano con lo slot indipendentemente dagli scambi, quindi la produzione conserva sempre la propria stringa di connessione al database di produzione. Contrassegni le impostazioni come associate usando la casella di controllo 'deployment slot setting' o l'interfaccia della riga di comando.

# Mark a setting as sticky (slot-specific) -- it won't swap
az webapp config appsettings set \
  --name MyUniqueWebApp \
  --resource-group MyRG \
  --slot staging \
  --slot-settings DATABASE_URL='postgresql://staging-db/...'

# Set a non-sticky setting (it WILL travel with a swap)
az webapp config appsettings set \
  --name MyUniqueWebApp \
  --resource-group MyRG \
  --slot staging \
  --settings FEATURE_FLAG_NEW_UI=true

Suddivisione del traffico per i rilasci canary

App Service supporta la suddivisione del traffico, ovvero l'instradamento di una percentuale del traffico di produzione verso uno slot non di produzione senza eseguire uno scambio completo. Ciò consente i rilasci canary, in cui si sposta gradualmente il traffico dal 5% al 10% e poi al 50% man mano che aumenta la fiducia nella nuova versione, monitorando i tassi di errore a ogni passaggio. Gli utenti che accedono allo slot canary ricevono un cookie persistente che li mantiene sulla stessa versione, garantendo la coerenza della sessione.

# Route 10% of traffic to the staging slot (canary)
az webapp traffic-routing set \
  --name MyUniqueWebApp \
  --resource-group MyRG \
  --distribution staging=10

# View current traffic distribution
az webapp traffic-routing show \
  --name MyUniqueWebApp \
  --resource-group MyRG

# Reset all traffic to production
az webapp traffic-routing clear \
  --name MyUniqueWebApp \
  --resource-group MyRG

Auto Swap

Auto Swap trasferisce automaticamente uno slot di staging in produzione ogni volta che vi viene distribuito nuovo codice. È ideale per le pipeline CI/CD in cui si desidera rendere immediatamente disponibile ogni distribuzione completata correttamente. Auto Swap attende che le richieste HTTP dello slot di staging restituiscano 200 prima di completare lo scambio. Lo abiliti per ogni slot nel portale o nell'interfaccia della riga di comando, ma lo utilizzi con cautela, poiché tra la distribuzione e la produzione non è previsto alcun passaggio di approvazione manuale.

# Enable Auto Swap for the staging slot
az webapp deployment slot auto-swap \
  --name MyUniqueWebApp \
  --resource-group MyRG \
  --slot staging \
  --auto-swap-slot production

# Disable Auto Swap
az webapp deployment slot auto-swap \
  --name MyUniqueWebApp \
  --resource-group MyRG \
  --slot staging \
  --disable

Procedure consigliate per gli slot di distribuzione

Segua queste procedure consigliate per gli slot di distribuzione: convalidi sempre in staging prima dello scambio con la produzione, utilizzi impostazioni associate per mantenere isolate dalle connessioni di staging quelle dei database di produzione, esegua smoke test sull'URL dello slot di staging dopo la distribuzione, configuri i percorsi dei controlli di integrità per assicurarsi che App Service non completi lo scambio se la nuova versione non è integra e assegni tag alle distribuzioni per poter identificare quale commit è attivo in ogni slot.

Slot nelle pipeline CI/CD

In una pipeline CI/CD tipica, la fase di compilazione compila e testa il codice, la fase di distribuzione invia l'artefatto allo slot di staging, una fase di test di integrazione esegue test automatici sull'URL di staging e la fase di scambio trasferisce lo staging in produzione, facoltativamente con l'approvazione manuale come requisito. Questo modello è supportato nativamente sia da Azure Pipelines sia da GitHub Actions con l'azione di distribuzione di App Service.

# GitHub Actions step: deploy to staging slot
# - name: Deploy to Staging Slot
#   uses: azure/webapps-deploy@v2
#   with:
#     app-name: MyUniqueWebApp
#     slot-name: staging
#     publish-profile: ${{ secrets.AZURE_STAGING_PUBLISH_PROFILE }}
#
# - name: Swap to Production
#   uses: azure/CLI@v1
#   with:
#     inlineScript: |
#       az webapp deployment slot swap \
#         --name MyUniqueWebApp \
#         --resource-group MyRG \
#         --slot staging

Monitoraggio dell'integrità dello scambio

Durante e dopo uno scambio di slot, monitori le metriche chiave in Azure Monitor per confermare che la nuova versione sia integra. Controlli eventuali picchi negli errori HTTP 5xx, nel tempo medio di risposta e nell'utilizzo di CPU/memoria. Configuri avvisi sulle metriche che si attivino se i tassi di errore superano una soglia: ciò fornisce un segnale per eseguire rapidamente lo scambio inverso. Il rilevamento intelligente di Application Insights può avvisarla automaticamente delle anomalie dopo una distribuzione.

# Create an alert rule for HTTP 5xx errors post-swap
az monitor metrics alert create \
  --name 'HighErrorRate' \
  --resource-group MyRG \
  --scopes '/subscriptions/.../providers/Microsoft.Web/sites/MyUniqueWebApp' \
  --condition 'avg Http5xx > 10' \
  --window-size 5m \
  --evaluation-frequency 1m \
  --action-group MyActionGroup

Slot e più app a confronto

Gli slot di distribuzione sono preferibili alla gestione di app App Service completamente separate per staging e produzione, perché condividono lo stesso piano (senza costi aggiuntivi), consentono uno scambio con rollback in un clic, supportano la suddivisione del traffico e sono gestiti all'interno della stessa risorsa App Service. Utilizzi app separate solo quando lo staging richiede SKU del piano sostanzialmente diversi, requisiti di isolamento o una fatturazione completamente separata.

Verifica rapida

Verifichi la Sua comprensione dei concetti di Microsoft Azure Fundamentals (AZ-900) trattati in questa lezione.

Riepilogo della lezione

In questa lezione ha appreso che gli slot di distribuzione forniscono ambienti isolati che consentono distribuzioni blue-green; le impostazioni associate allo slot mantengono la configurazione specifica dell'ambiente (come gli URL dei database) legata allo slot anziché al codice; e la suddivisione del traffico consente rilasci canary indirizzando una percentuale del traffico di produzione verso una nuova versione. Nella prossima lezione esamineremo il ridimensionamento automatico e i domini personalizzati.

Domande Frequenti

La lezione «Slot di distribuzione e swap» è gratuita?

Sì — il testo completo di «Slot di distribuzione e swap» è 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 Azure Fundamentals, passa a CoddyKit PRO. Il corso Azure Fundamentals include 4 lezioni in totale.

Cosa imparerò in «Slot di distribuzione e swap»?

Crei slot di staging per distribuzioni blue-green, prepari una nuova versione nello slot di staging e la scambi con quella in produzione senza tempi di inattività. Eserciti Azure Fundamentals 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 Azure Fundamentals?

Non è richiesta alcuna esperienza precedente. Azure Fundamentals 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 «Slot di distribuzione e swap»?

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 Azure Fundamentals?

Sì. Ogni lezione Azure Fundamentals 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. Creazione di un piano App Service e di una web app
  2. Slot di distribuzione e swap
  3. Ridimensionamento automatico e domini personalizzati
  4. Autenticazione e rete di App Service
← Torna a Azure Fundamentals