Introduzione a Python in Azure

Usare questo documento come elenco di controllo e una guida per iniziare a sviluppare applicazioni Python ospitate nel cloud o usare i servizi cloud. Se si seguono i collegamenti e le istruzioni in questo documento, sarà possibile:

  • avere una conoscenza fondamentale del cloud e del modo in cui si progetta l'applicazione tenendo conto del cloud.
  • configurare l'ambiente di sviluppo locale, inclusi gli strumenti e le librerie necessari per creare applicazioni basate sul cloud.
  • comprendere il flusso di lavoro durante lo sviluppo di applicazioni basate sul cloud.

Fase 1: Informazioni sui concetti

Se non si ha familiarità con lo sviluppo di applicazioni per il cloud, questa breve serie di articoli con video consentirà di ottenere rapidamente velocità.

Dopo aver compreso le nozioni di base sullo sviluppo di applicazioni per il cloud, è necessario configurare l'ambiente di sviluppo e seguire una guida introduttiva o un'esercitazione per creare la prima app.

Fase 2: Configurare l'ambiente Python locale per lo sviluppo di Azure

Per sviluppare applicazioni Python con Azure, è prima necessario configurare l'ambiente di sviluppo locale. La configurazione include la creazione di un account Azure, l'installazione di strumenti per lo sviluppo di Azure e la connessione di tali strumenti all'account Azure.

Lo sviluppo in Azure richiede Python 3.8 o versione successiva. Per verificare la versione di Python nella workstation, in una finestra della console digitare il comando python3 --version per macOS/Linux o py --version per Windows.

Creare un account Azure

Per sviluppare applicazioni Python con Azure, è necessario un account Azure. L'account Azure è le credenziali usate per accedere ad Azure con e le risorse usate per creare risorse di Azure.

Se si usa Azure al lavoro, rivolgersi all'amministratore cloud dell'azienda per ottenere le credenziali usate per accedere ad Azure.

In caso contrario, è possibile creare un account Azure gratuitamente e ricevere 12 mesi di servizi popolari gratuitamente e un credito di $ 200 per esplorare Azure per 30 giorni.

Usare il portale di Azure

Dopo aver ottenuto le credenziali, è possibile accedere al portale di Azure all'indirizzo .https://portal.azure.com Il portale di Azure è in genere un modo più semplice per iniziare a usare Azure, soprattutto se non si ha familiarità con Azure e lo sviluppo cloud. Nella portale di Azure è possibile eseguire varie attività di gestione, ad esempio la creazione e l'eliminazione di risorse.

Se si ha già esperienza con lo sviluppo di Azure e cloud, è probabile che si inizierà a usare strumenti come Visual Studio Code e l'interfaccia della riga di comando di Azure. Gli articoli nel Centro per sviluppatori Python illustrano come usare le portale di Azure, Visual Studio Code e l'interfaccia della riga di comando di Azure.

Utilizzare Visual Studio Code

È possibile usare qualsiasi editor o IDE per scrivere codice Python durante lo sviluppo per Azure. Tuttavia, è consigliabile prendere in considerazione l'uso di Visual Studio Code per lo sviluppo di Azure e Python. Visual Studio Code offre molte estensioni e personalizzazioni per Azure e Python, che semplificano il ciclo di sviluppo e la distribuzione da un ambiente locale ad Azure.

Per lo sviluppo python con Visual Studio Code, installare:

  • Estensione Python. Questa estensione include IntelliSense (Pylance), Linting, Debugging (multithreading, remote), Jupyter Notebooks, formattazione del codice, refactoring, unit test e altro ancora.

  • Pacchetto di estensione Strumenti di Azure. Il pacchetto di estensione contiene estensioni per l'uso di app Azure Service, Funzioni di Azure, Archiviazione di Azure, Azure Cosmos DB e Azure Macchine virtuali in un unico pacchetto pratico. Le estensioni di Azure semplificano l'individuazione e l'interazione con Azure.

Per installare le estensioni da Visual Studio Code:

  1. Premere CTRL+MAIUSC+X per aprire la finestra Estensioni .
  2. Cercare l'estensione Strumenti di Azure.
  3. Selezionare il pulsante Installa.

Screenshot of the Visual Studio Code showing extensions panel searching for the Azure Tools extension pack.

Per altre informazioni sull'installazione delle estensioni in Visual Studio Code, vedere il documento Extension Marketplace nel sito Web di Visual Studio Code.

Dopo aver installato l'estensione Strumenti di Azure, accedere con l'account Azure. Nel pannello a sinistra verrà visualizzata un'icona di Azure. Selezionare questa icona e verrà visualizzato un pannello di controllo per i servizi di Azure. Scegliere Accedi ad Azure... per completare il processo di autenticazione.

Screenshot of the Visual Studio Code showing how to sign-in the Azure tools to Azure.

Nota

Se viene visualizzato l'errore "Cannot find subscription with name [subscription ID]" (Non è possibile trovare la sottoscrizione denominata [ID sottoscrizione]), è possibile che si usi un proxy e che non sia possibile raggiungere l'API di Azure. Configurare le variabili di ambiente HTTP_PROXY e HTTPS_PROXY con le informazioni del proxy nel terminale:

# Windows
set HTTPS_PROXY=https://username:password@proxy:8080
set HTTP_PROXY=http://username:password@proxy:8080
# macOS/Linux
export HTTPS_PROXY=https://username:password@proxy:8080
export HTTP_PROXY=http://username:password@proxy:8080

Usare l'interfaccia della riga di comando di Azure

Oltre alle portale di Azure e a Visual Studio Code, Azure offre anche lo strumento da riga di comando dell'interfaccia della riga di comando di Azure per creare e gestire le risorse di Azure. L'interfaccia della riga di comando di Azure offre i vantaggi dell'efficienza, della ripetibilità e della possibilità di creare script di attività ricorrenti. In pratica, la maggior parte degli sviluppatori usa sia la portale di Azure che l'interfaccia della riga di comando di Azure.

Dopo aver installato l'interfaccia della riga di comando di Azure, accedere all'account Azure dall'interfaccia della riga di comando di Azure digitando il comando az login in una finestra del terminale nella workstation.

az login

L'interfaccia della riga di comando di Azure aprirà il browser predefinito per completare il processo di accesso.

Configurare l'ambiente virtuale Python

Quando si creano applicazioni Python per Azure, è consigliabile creare un ambiente virtuale per ogni applicazione. Un ambiente virtuale è una directory autonoma per una versione specifica di Python e gli altri pacchetti necessari per tale applicazione.

Per creare un ambiente virtuale, seguire questa procedura.

  1. Aprire un terminale o un prompt dei comandi.

  2. Creare una cartella per il progetto.

  3. Creare l'ambiente virtuale:

    # py -3 uses the global python interpreter. You can also use python3 -m venv .venv.
    py -3 -m venv .venv
    

    Questo comando esegue il modulo Python venv e crea un ambiente virtuale in una cartella ".venv". In genere, i file con estensione gitignore hanno una voce "venv", in modo che l'ambiente virtuale non venga archiviato con i checkins del codice.

  4. Attivare l'ambiente virtuale:

    .venv\Scripts\activate
    

    Nota

    Se si usa la shell dei comandi di Windows, attivare l'ambiente virtuale con .venv\Scripts\activate. Se si usa Git Bash in Visual Studio Code in Windows, usare invece il comando source .venv/Scripts/activate .

Una volta attivato l'ambiente (cosa che Visual Studio Code fa automaticamente), l'esecuzione di pip install installa una libreria solo al suo interno. Il codice Python in esecuzione in un ambiente virtuale usa le versioni del pacchetto specifiche installate in tale ambiente virtuale. L'uso di ambienti virtuali diversi consente a applicazioni diverse di usare versioni diverse di un pacchetto, che a volte è necessario. Per altre informazioni sugli ambienti virtuali, vedere Ambienti virtuali e pacchetti nella documentazione di Python.

Ad esempio, se i requisiti si trovano in un file requirements.txt , all'interno dell'ambiente virtuale attivato, è possibile installarli con:

pip install -r requirements.txt

Fase 3: Comprendere il flusso di lavoro di sviluppo di Azure

Articolo precedente: provisioning, accesso e gestione delle risorse

Ora che si conosce il modello di servizi e risorse di Azure, è possibile capire il flusso complessivo dello sviluppo di applicazioni cloud con Azure: provisioning, scrittura di codice, test, distribuzionee gestione.

Procedi Strumenti principali Attività
Provisioning di Interfaccia della riga di comando di Azure, portale di Azure, estensioni degli strumenti di Azure di VS Code, Cloud Shell, script Python con librerie di gestione di Azure SDK Creare gruppi di risorse e creare risorse in tali gruppi; configurare le risorse in modo che siano pronte per l'uso dal codice dell'app e/o pronte per ricevere il codice Python nelle distribuzioni.
Codice Editor di codice (ad esempio Visual Studio Code e PyCharm), librerie client di Azure SDK, documentazione di riferimento Scrivere codice Python usando le librerie client di Azure SDK per interagire con le risorse sottoposte a provisioning.
  Test Runtime di Python, debugger Esecuzione del codice Python in locale sulle risorse cloud attive (in genere risorse di sviluppo o test anziché risorse di produzione). Il codice stesso non è ancora ospitato in Azure, che consente di eseguire rapidamente il debug e l'iterazione.
Distribuzione VS Code, interfaccia della riga di comando di Azure, GitHub Actions, Azure Pipelines Dopo che il codice è stato testato localmente, viene distribuito in un servizio di hosting di Azure appropriato, in cui il codice stesso può essere eseguito nel cloud. Il codice distribuito viene in genere eseguito sulle risorse di staging o di produzione.
Gestione Interfaccia della riga di comando di Azure, portale di Azure, VS Code, script Python, Monitoraggio di Azure Monitoraggio delle prestazioni e della velocità di risposta delle app, modifiche nell'ambiente di produzione, migrazione dei miglioramenti nell'ambiente di sviluppo per il ciclo di provisioning e sviluppo successivo.

Passaggio 1: Effettuare il provisioning e configurare le risorse

Come descritto nell'articolo precedente di questa serie, il primo passaggio per lo sviluppo di un'applicazione consiste nell'effettuare il provisioning e la configurazione delle risorse che costituiscono l'ambiente di destinazione.

Il provisioning inizia con la creazione di un gruppo di risorse in un'area di Azure appropriata. È possibile creare un gruppo di risorse tramite il portale di Azure, VS Code con le estensioni degli strumenti di Azure, l'interfaccia della riga di comando di Azure o con uno script personalizzato che usa le librerie di gestione di Azure SDK (o l'API REST).

All'interno di tale gruppo di risorse si effettua quindi il provisioning e si configurano le singole risorse necessarie, usando di nuovo il portale, VS Code, l'interfaccia della riga di comando o Azure SDK. Anche in questo caso, vedere la guida per sviluppatori di Azure per una panoramica dei tipi di risorsa disponibili.

La configurazione include l'impostazione di criteri di accesso che controllano quali identità (entità servizio e/o ID applicazione) sono in grado di accedere a tali risorse. I criteri di accesso vengono gestiti tramite i Controllo di accesso basati sui ruoli di Azure. Alcuni servizi dispongono anche di controlli di accesso più specifici. In qualità di sviluppatore cloud che lavora con Azure, assicurarsi di acquisire familiarità con il controllo degli accessi in base al ruolo di Azure perché viene usato con qualsiasi risorsa con problemi di sicurezza.

Per la maggior parte degli scenari dell'applicazione, in genere si creano script di provisioning con l'interfaccia della riga di comando di Azure e/o il codice Python usando le librerie di gestione di Azure SDK. Tali script descrivono la totalità delle esigenze dell'applicazione in termini di risorse, definendo essenzialmente il computer cloud personalizzato in cui si intende distribuire l'applicazione. Uno script consente di ricreare facilmente lo stesso set di risorse all'interno di ambienti diversi, ad esempio sviluppo, test, gestione temporanea e produzione. Quando si automatizza, è possibile evitare di eseguire manualmente molti passaggi ripetuti in portale di Azure o VS Code. Gli script facilitano inoltre il provisioning di un ambiente in un'area diversa o l'uso di gruppi di risorse diversi. Se si gestiscono questi script anche nei repository del controllo del codice sorgente, si potrà avere controllo completo e accedere alla cronologia delle modifiche.

Passaggio 2: Scrivere il codice dell'app per usare le risorse

Dopo aver effettuato il provisioning delle risorse necessarie per l'applicazione, scrivere il codice dell'applicazione per gestire tutti gli aspetti della fase di esecuzione di tali risorse.

Nel passaggio di provisioning, ad esempio, è possibile che sia stato creato un account di archiviazione di Azure con un contenitore BLOB al suo interno e che siano stati impostati i criteri di accesso per l'applicazione in tale contenitore. Questo processo di provisioning viene illustrato in Esempio - Effettuare il provisioning di Archiviazione di Azure. Dal codice è possibile eseguire l'autenticazione con l'account di archiviazione e quindi creare, aggiornare o eliminare BLOB all'interno del contenitore. Questo processo della fase di esecuzione è illustrato in Esempio - Usare Archiviazione di Azure. Analogamente, è possibile che sia stato effettuato il provisioning di un database con uno schema e le autorizzazioni appropriate (come illustrato in Esempio - Effettuare il provisioning di un database), per cui il codice dell'applicazione può connettersi al database ed eseguire le consuete query di creazione, lettura, aggiornamento ed eliminazione.

Il codice dell'app usa in genere le variabili di ambiente per identificare i nomi e gli URL delle risorse da usare. Le variabili di ambiente consentono di passare facilmente tra gli ambienti cloud (sviluppo, test, staging e produzione) senza apportare modifiche al codice. I vari servizi di Azure che ospitano il codice dell'applicazione consentono di definire le variabili necessarie. Ad esempio, in app Azure Service (per ospitare app Web) e Funzioni di Azure (calcolo serverless per Azure), si definiscono le impostazioni dell'applicazione tramite portale di Azure, VS Code o l'interfaccia della riga di comando di Azure, che quindi appaiono nel codice come variabili di ambiente.

Gli sviluppatori Python probabilmente scriveranno il codice dell'applicazione in Python usando le librerie client di Azure SDK per Python. Detto questo, qualsiasi parte indipendente di un'applicazione cloud può essere scritta in qualsiasi linguaggio supportato. Se si lavora a un team che usa più linguaggi di programmazione, è possibile che alcune parti dell'applicazione usino Python, alcuni JavaScript, alcuni Java e altri C#.

Il codice dell'applicazione può usare le librerie di gestione di Azure SDK per eseguire operazioni di provisioning e gestione in base alle esigenze. Gli script di provisioning, analogamente, possono usare le librerie client SDK per inizializzare le risorse con dati specifici o eseguire attività di manutenzione sulle risorse cloud anche quando tali script vengono eseguiti in locale.

Passaggio 3: Testare ed eseguire il debug del codice dell'app in locale

Gli sviluppatori in genere amano testare il codice dell'app nelle workstation locali prima di distribuire tale codice nel cloud. Il test del codice dell'app in locale significa che in genere si accede ad altre risorse di cui è già stato effettuato il provisioning nel cloud, ad esempio archiviazione, database e così via. La differenza è che non si esegue ancora il codice dell'app stesso all'interno di un servizio cloud.

Eseguendo il codice localmente, è anche possibile sfruttare appieno le funzionalità di debug offerte da strumenti come Visual Studio Code e gestire il codice in un repository del controllo del codice sorgente.

Non è necessario modificare il codice per i test locali: Azure supporta completamente lo sviluppo e il debug locali usando lo stesso codice distribuito nel cloud. Le variabili di ambiente sono di nuovo la chiave: nel cloud il codice può accedere alle impostazioni della risorsa di hosting come variabili di ambiente. Quando si creano le stesse variabili di ambiente in locale, lo stesso codice viene eseguito senza modifiche. Questo modello è valido per le credenziali di autenticazione, gli URL delle risorse, le stringhe di connessione e un numero qualsiasi di altre impostazioni, semplificando l'uso delle risorse in un ambiente di sviluppo quando si esegue il codice in locale e quello delle risorse di produzione una volta distribuito il codice nel cloud.

Passaggio 4: Distribuire il codice dell'app in Azure

Dopo aver testato il codice in locale, è possibile distribuirlo per ospitarlo nella risorsa di Azure di cui è stato effettuato il provisioning. Ad esempio, se si scrive un'app Web Django, si distribuisce tale codice in una macchina virtuale (in cui si fornisce il proprio server Web) o in app Azure Servizio (che fornisce automaticamente il server Web). Una volta distribuito, il codice viene eseguito nel server invece che nel computer locale ed è possibile accedere a tutte le risorse di Azure per cui è autorizzato.

Come indicato nella sezione precedente, nei tipici processi di sviluppo il codice viene prima distribuito alle risorse di cui è stato effettuare il provisioning in un ambiente di sviluppo. Dopo un ciclo di test, il codice viene distribuito alle risorse in un ambiente di staging, rendendo l'applicazione disponibile ai team di test e magari ai clienti dell'anteprima. Quando si è soddisfatti delle prestazioni dell'applicazione, è possibile distribuire il codice nell'ambiente di produzione. Tutte queste distribuzioni possono anche essere automatizzate tramite l'integrazione continua e la distribuzione continua usando Azure Pipelines e GitHub Actions.

Tuttavia, quando il codice viene distribuito nel cloud, diventa effettivamente un'applicazione cloud, in esecuzione interamente nei computer server nei data center di Azure.

Passaggio 5: Gestire, monitorare e rivedere

Dopo la distribuzione, è necessario assicurarsi che l'applicazione venga eseguita come dovrebbe, rispondendo alle richieste dei clienti e usando in modo efficiente le risorse (e al costo più basso possibile). È possibile gestire il ridimensionamento automatico di Azure per la distribuzione in base alle esigenze ed è possibile raccogliere e monitorare i dati sulle prestazioni con portale di Azure, VS Code, l'interfaccia della riga di comando di Azure o script personalizzati scritti con le librerie di Azure SDK. È quindi possibile apportare modifiche in tempo reale alle risorse di cui è stato effettuato il provisioning per ottimizzarne le prestazioni, sempre usando uno di questi stessi strumenti.

Il monitoraggio offre informazioni dettagliate su come ristrutturare eventualmente l'applicazione cloud. Ad esempio, si potrebbe notare che alcune parti di un'app Web, come un gruppo di endpoint API, vengono usate solo occasionalmente rispetto alle parti principali. È quindi possibile scegliere di distribuire queste API separatamente come Funzioni di Azure serverless. Come funzioni, hanno le proprie risorse di calcolo di supporto che non competono con l'applicazione principale, ma costano solo centesimi al mese. L'applicazione principale diventa quindi più reattiva per più clienti, senza la necessità di passare a un livello di costo più alto.

Passaggi successivi

A questo punto si ha familiarità con la struttura di base di Azure e con il flusso di sviluppo generale: effettuare il provisioning di risorse, scrivere e testare il codice, distribuire il codice in Azure e quindi monitorare e gestire tali risorse.