Informazioni sull'attività di distribuzione del database

Completato

L'integrazione delle attività di distribuzione del database nei flussi di lavoro ci/CD di Azure Pipelines e GitHub Actions automatizza il provisioning e gli aggiornamenti del database insieme alle distribuzioni delle applicazioni. Questa integrazione consente un coordinamento trasparente tra cicli di vita di applicazioni e database, riducendo al contempo gli errori e le incoerenze dalle distribuzioni manuali. L'automazione del provisioning del database accelera i cicli di rilascio, riduce al minimo gli errori umani e migliora la collaborazione tra team di sviluppo, operazioni e database.

Considerazioni

Le distribuzioni automatizzate dei database richiedono un'attenta considerazione dell'integrità dei dati e della prevenzione della perdita. Affrontare questi rischi tramite le disposizioni seguenti:

  • Separazione dei dati: mantenere una netta separazione tra le modifiche dello schema del database e le operazioni di manipolazione dei dati. Le modifiche dello schema del database, ad esempio le modifiche alla tabella o gli aggiornamenti dello schema, devono essere gestite separatamente dalle operazioni di manipolazione dei dati, ad esempio il seeding dei dati iniziali o l'importazione e l'esportazione di set di dati.
  • Conservazione dei dati: implementare strategie per conservare i dati esistenti durante la ridistribuzione della pipeline o del flusso di lavoro. Ciò può comportare il backup di dati critici prima di distribuire le modifiche o usare script di migrazione dei dati per trasferire dati tra ambienti senza sovrascrivere i dati esistenti.
  • Operazioni Idempotenti: assicurarsi che le operazioni di distribuzione del database siano idempotenti, il che significa che possono essere rieseguite più volte, ottenendo sempre lo stesso risultato. L'idempotenza deve eliminare la possibilità di creare oggetti e record dello schema duplicati.
  • Controllo delle versioni e rollback: mantenere il controllo della versione sulle modifiche dello schema del database, sulle migrazioni dei dati e sugli script di distribuzione per tenere traccia delle modifiche e facilitare le procedure di rollback. Usare i repository di controllo del codice sorgente per gestire gli script del database, applicare tag di versione o etichette alle modifiche del database e implementare strategie di rollback che ripristinano le modifiche del database.
  • Test e convalida: eseguire test approfonditi e convalida delle modifiche del database in un ambiente di staging o test prima della distribuzione nell'ambiente di produzione. Usare framework di test automatizzati, unit test del database e test di integrazione per verificare le distribuzioni del database e garantire la compatibilità con i dati esistenti.
  • Monitoraggio e avvisi: implementare meccanismi di monitoraggio e avviso per rilevare anomalie, errori o problemi di prestazioni durante le distribuzioni di database. Monitorare le metriche di integrità del database, tenere traccia dei log di controllo e configurare gli avvisi attivati da eventuali comportamenti o errori imprevisti.

I flussi di lavoro di Azure Pipelines e GitHub Actions condividono concetti e attività simili per la distribuzione di database. L'incorporamento della distribuzione di database in Azure Pipelines richiede diverse attività di implementazione:

  • Creazione di script di distribuzione del database per definire lo schema del database, i dati di inizializzazione e applicare eventuali configurazioni aggiuntive. Gli script devono trovarsi nel repository del controllo del codice sorgente per facilitare il rilevamento delle modifiche e il controllo delle versioni.
  • Creazione di stringhe di connessione al database e archiviazione sicura come variabili segrete o segreti di Azure Key Vault. È anche necessario concedere alle pipeline l'accesso ai segreti.
  • Uso delle attività di Azure DevOps o delle estensioni di terze parti per eseguire script di distribuzione del database come parte della pipeline.
  • Configurazione della pipeline per distribuire le dipendenze necessarie, ad esempio le istanze di SQL Server, insieme agli strumenti e alle utilità necessari.
  • Incluse le attività di test del database nella pipeline per convalidare le modifiche del database e assicurarsi che le distribuzioni siano riuscite. Ciò comporta in genere l'esecuzione di unit test del database, test di integrazione o controlli di convalida dei dati.
  • Implementazione di meccanismi di rollback e ripristino nella pipeline per gestire gli errori di distribuzione o gli errori imprevisti. Ciò può includere la creazione di snapshot del database, backup o script di rollback transazionale per ripristinare le modifiche in caso di problemi.

Le specifiche delle attività di implementazione variano in modo significativo in base alla tecnologia di database di destinazione. La sezione seguente esamina queste specifiche per le distribuzioni del servizio SQL di Azure.

Tecniche e strumenti specifici di SQL Server e Azure SQL

Quando si usa SQL Server o il database SQL di Azure nelle pipeline CI/CD, sono disponibili numerosi strumenti e tecniche che è possibile sfruttare, tra cui quelli seguenti:

  • SQL Server Data Tools (SSDT): set di strumenti di sviluppo che consente agli sviluppatori di database di compilare, eseguire il debug, gestire e effettuare il refactoring di schemi e oggetti di database in Visual Studio. È possibile usare progetti SSDT per gestire le modifiche dello schema del database e generare script di distribuzione per SQL Server o il database SQL di Azure.
  • SQLPackage.exe: un'utilità della riga di comando inclusa in SSDT che semplifica l'automazione delle distribuzioni di database DI SQL Server tramite file DACPAC (Data-Tier Application Component). È possibile usare SQLPackage.exe nelle pipeline CI/CD per distribuire le modifiche del database in SQL Server o nel database SQL di Azure.
  • Attività di Azure DevOps: attività predefinite, ad esempio distribuzione del database SQL di Azure e SqlAzureDacpacDeployment che consentono di distribuire le modifiche del database direttamente dai file DACPAC al database SQL di Azure. Queste attività integrano la distribuzione del database nelle pipeline CI/CD senza richiedere script personalizzati.
  • Interfaccia Command-Line di Azure: un'utilità che consente di interagire con le risorse di Azure, incluso il database SQL di Azure, dalla riga di comando. È possibile usare i comandi dell'interfaccia della riga di comando di Azure nelle pipeline CI/CD per automatizzare il provisioning del database, la configurazione e le attività di distribuzione, ad esempio la creazione di server di database, la distribuzione di file DACPAC e l'esecuzione di script SQL.
  • SQL Server Management Studio (SSMS): uno strumento grafico fornito da Microsoft per la gestione dei database di SQL Server. Sebbene sia usato principalmente per le attività di amministrazione manuale, SSMS può anche generare script di distribuzione e automatizzare le distribuzioni di database tramite la procedura guidata Genera script o la funzionalità Distribuisci database nel database SQL di Microsoft Azure.
  • Entity Framework (EF): una tecnica programmatica che supporta la funzionalità Object-Relational Mapper (ORM). È possibile sfruttare la funzionalità di migrazione basata su ENTITY per gestire le modifiche dello schema del database e automatizzare le migrazioni di database nelle pipeline CI/CD. Le migrazioni di Entity Framework consentono di definire le modifiche apportate allo schema del database usando migrazioni code-first e applicarle automaticamente durante l'avvio dell'applicazione.
  • Script personalizzati: script di PowerShell, Bash o SQL che automatizzano le attività di distribuzione del database nelle pipeline CI/CD. Questi script possono usare moduli SQLCMD o Azure PowerShell per eseguire script SQL, distribuire file DACPAC o interagire con il database SQL di Azure a livello di codice.