azure functions

in Azure, Informatica

Azure Functions – Azure Serverless

Reading Time: 2 minutes

Il modello di distribuzione delle applicazioni serverless consente di effettuare il deploy delle applicazioni senza dover preoccuparsi dell’infrastuttura sottostante. In pratica, il compito del programmatore è quello di pubblicare l’applicazione senza dover interagire con il server sottostante e senza conoscerne i dettagli.

Serverless non significa però che non esistono server che eseguiranno l’applicazione ma semplicemente che dal punto di vista dell’utilizzatore e dello sviluppatore, i server non vengono visti.

Diventa responsabilità del fornitore del servizio cloud, provvedere all’infrastruttura e alla piattaforma per far girare l’applicazione: al cliente solo l’onere di definire la scalabilità.

Le Azure Functions sono una soluzione serverless presente in Azure. Semplificando di molto, si tratta di funzioni che risiedono direttamente nel cloud.

I vantaggi dell’utilizzo di tecnologia serverless sono :

  • costo in base al consumo: viene addebito il costo del servizio solo in base all’effettivo utilizzo
  • esecuzione istantanea: il codice di una funzione solitamente è solitamente mantenuto semplice e con tempi di esecuzione piuttosto limitati nel tempo
  • attivazione in base ad eventi: le funzioni vengono attivati in base a particolari trigger, che ne scatenano l’esecuzione
  • scalabilità illimitata

Proprio come le funzioni tradizionali, sono composte da parti di codice che possono essere scritte con linguaggi differenti: attualmente la piattaforma supporta C#, Java, JavaScript, PowerShell e Python.

In molti casi, l’utilizzo di Azure Functions è un ottimo compromesso per la creazione di soluzioni come ad esempio servizi di integrazione con API, microservices, Internet delle cose e l’integrazione in generale tra sistemi.

Inoltre, è possibile pianificare l’esecuzione di una Azure Function attraverso la schedulazione, mediante l’utilizzo di un processo cron configurabile direttamente dalla UI di Azure.

Le Azure Functions sono per natura stateless: ciò significa che non è possibile “ricordare” lo stato di un’esecuzione precedente. Per risolvere il problema, sono state create le Durable Functions che consentono di crear workflow di esecuzione, recuperando il valore dall’esecuzione della Azure Function precedente.

Per poter utilizzare le Azure Function è necessario creare una Azure Function App: in pratica la possibilità di raggruppare le funzioni in un’unità logica per semplificare la gestione delle risorse.

Scenari possibili

Gli scenari possibili per le Azure Functions sono:

  • EventGridTrigger: risponde agli eventi inviati a una sottoscrizione nella Griglia di eventi di Azure. Supporta un modello basato su sottoscrizione per la ricezione di eventi, che include funzioni di filtro. Una buona soluzione per la compilazione di architetture basate su eventi.
  • EventHubTrigger: risponde agli eventi inviati a un hub eventi di Azure. È particolarmente utile negli scenari di strumentazione delle applicazioni, elaborazione dei flussi di lavoro o dell’esperienza utente e di Internet delle cose (IoT).
  • ServiceBusQueueTrigger: connette il codice ad altri servizi di Azure o locali rimanendo in ascolto sulle code di messaggi.
  • ServiceBusTopicTrigger: connette il codice ad altri servizi di Azure o servizi locali mediante la sottoscrizione di argomenti.
  • HTTPTrigger : attiva l’esecuzione del codice usando una richiesta HTTP.
  • TimerTrigger : esegue attività di pulizia o altre attività batch secondo una pianificazione predefinita.
  • CosmosDBTrigger : Elabora i documenti di Azure Cosmos DB quando vengono aggiunti o aggiornati nelle raccolte in un database NoSQL.
  • BlobTrigger : elabora i BLOB di archiviazione di Azure quando vengono aggiunti ai contenitori. Questa funzione può essere usata per il ridimensionamento delle immagini.
  • QueueTrigger : risponde ai messaggi che arrivano in una coda di archiviazione di Azure.

Le Azure Functions consentono la creazione di funzioni in ambienti serverless, senza dover allocare macchine virtuali o creare web app. Sono molto utilizzate in tutti quei contesti dove non è necessario preoccuparsi dell’infrastruttura concentrandosi solo sulla scrittura del codice dell’applicazione. Inoltre, il piano di pagamento è “a consumo”, non avendo costi in caso di inutilizzo.