# Serverless computing: cosa si nasconde dietro al moderno modello cloud

L'attività digitale si sta spostando sempre più sul **cloud**, non solo nel settore privato, ma soprattutto in quello aziendale. Molti fornitori stanno lanciando **soluzioni di servizi** interessanti e promettenti, ma non sempre è facile fornire una descrizione e una differenziazione delle varie offerte. Questo vale, ad esempio, anche per la classificazione della nuovissima cosiddetta elaborazione serverless, indicata nei circuiti professionali anche come Function-as-a-Service (FaaS). Sebbene il nome potrebbe farlo pensare, non si tratta affatto di strutture cloud senza server. Di seguito analizzeremo più da vicino questa tecnologia.

## Una spiegazione del concetto serverless

L'elaborazione serverless, o architettura serverless, è un modello cloud che consente agli utenti di **creare ed eseguire applicazioni o processi** senza entrare in contatto con il server sottostante. Contrariamente a quanto suggerisce il nome, anche un ambiente cloud di questo tipo ha un **server**; tuttavia **predisposizione, scalabilità e gestione sono di responsabilità** **solo del provider**. Pertanto l'approccio serverless va oltre il [modello Platform-as-a-Service (PaaS)](https://www.ionos.it/digitalguide/server/know-how/paas/ "PaaS"), in cui sviluppatori o clienti non possono evitare di rivolgersi al o ai server tramite un'API e di aggiungere o abilitare risorse autonomamente.

Poiché queste attività amministrative vengono a mancare nei progetti in un'infrastruttura di elaborazione serverless, essa consente di **concentrarsi interamente sullo sviluppo e l'esecuzione del** **rispettivo** **software**. Perché ciò sia possibile, tuttavia, oltre al codice di programma effettivo è importante creare funzioni senza stato che contengano istruzioni su come un programma dovrebbe reagire a determinati eventi. Il rispettivo **codice di programma**, comprese le funzioni desiderate (che, grazie alla mancanza di stato, non hanno dipendenze infrastrutturali), può quindi essere **caricato nell'ambiente cloud in qualsiasi momento** ed essere eseguito lì. Visto il ruolo elementare delle funzioni, alcuni provider offrono anche il proprio servizio serverless con il nome di **"Function-as-a-Service (FaaS)"**.

---

### N.B.

**I fornitori di elaborazione serverless** non sono responsabili solo della disponibilità delle risorse server necessarie, ma anche della garanzia della **massima sicurezza possibile in caso di guasti**. La fatturazione si basa generalmente sul **modello pay-per-use**, quindi ai clienti sono addebitati solo i servizi effettivi.

---

## Come funziona il serverless computing?

Essenziale per un'architettura serverless è la gestione dell'hardware da parte del provider: per gli utenti, l'unica sfida è integrare il proprio software o la propria logica, comprese le funzioni adeguate, nelle strutture cloud noleggiate. Il richiamo di queste funzioni funziona...

- in modo **asincrono** tramite **eventi**
- o in modo **sincrono** in base al classico **modello client-server**.

La prima variante ha il vantaggio di impedire un accoppiamento eccessivo delle singole funzioni e di mantenere basso il fabbisogno di risorse durante il runtime. Una possibile funzione basata sugli eventi potrebbe essere ad esempio quella di creare automaticamente una **miniatura** durante il **caricamento di un'immagine**. Nella variante classica il client deve sempre inviare una richiesta separata al server per richiamare una funzione corrispondente per la creazione della miniatura.

A differenza di un'infrastruttura Platform-as-a-Service, il provider dell'elaborazione serverless non fornisce a tale scopo un ambiente di lavoro di lunga durata, ma **offre puntualmente e in tempo reale le risorse necessarie per il tempo di esecuzione di una singola chiamata di funzione**. Naturalmente, in background (ma non visibili all'utente), anche nei servizi serverless sono utilizzati **server fisici e virtuali** per consentire l'esecuzione delle funzioni.

## Serverless architecture: una panoramica di vantaggi e svantaggi

Sebbene le infrastrutture cloud classiche consentano già agli utenti di **esternalizzare l'hardware** necessario, spesso richiedono molta amministrazione e microgestione. L'elaborazione serverless dovrebbe **ridurre al minimo questo impegno**.

Riassumiamo punti forti e deboli del concetto serverless nella seguente tabella:

<table>
  <thead>
    <tr>
      <th>Vantaggi</th>
      <th>Svantaggi</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Scalabilità e gestione delle risorse necessarie da parte del provider</td>
      <td>L'accesso alle macchine virtuali, al sistema operativo o agli ambienti di runtime resta vietato</td>
    </tr>
    <tr>
      <td>Fornitura rapida delle risorse in tempo reale, anche con carichi di picco imprevisti e crescita sproporzionata</td>
      <td>L'implementazione di strutture serverless è molto impegnativa</td>
    </tr>
    <tr>
      <td>I costi sono calcolati esclusivamente per le risorse utilizzate</td>
      <td>Elevata dipendenza dal provider (“effetto lock-in”) - quando si cambia provider, ad esempio, la maggior parte delle funzioni basate sugli eventi deve essere riscritta</td>
    </tr>
    <tr>
      <td>Elevata tolleranza ai guasti grazie all'infrastruttura hardware flessibile nei data center del provider</td>
      <td>Processo di monitoraggio e debug relativamente complicato, poiché non sono possibili analisi approfondite delle prestazioni e degli errori</td>
    </tr>
  </tbody>
</table>

## Quando si utilizza il principio serverless?

L'elaborazione serverless è progettata innanzitutto per lo **scambio di dati di breve durata** di applicazioni web e aziendali nel cloud. Nella pratica, quindi, non si tratta di elaborare intere applicazioni o sequenze di codici estese (sostanzialmente l'architettura serverless non è affatto indicata per questo), ma piuttosto di **elaborare singole funzioni, in qualsiasi numero**. Questo rende l'approccio interessante per diversi scenari, come mostra il seguente elenco:

- **Proxy API**: molte vecchie applicazioni aziendali hanno API complesse e ingombranti (interfacce software). Con la serverless architecture e il gateway API corrispondente, è possibile creare un livello di astrazione alternativo per rendere queste applicazioni accessibili attraverso un semplice [API REST](https://www.ionos.it/digitalguide/server/know-how/rest-la-soluzione-http-per-servizi-web/) e quindi più accessibili ad altri sistemi.
- **Serverless back end**: sempre più spesso, il serverless computing viene utilizzato anche per costruire e gestire l'intero back end di un'applicazione sul cloud. Per questo scenario si utilizza anche l'espressione **Backend-as-a-Service (BaaS)**.
- **Ulteriore elaborazione di dati (non) strutturati**: i [Big Data](https://www.ionos.it/digitalguide/online-marketing/analisi-web/cosa-sono-i-big-data/) sono diventati parte integrante del moderno ambiente aziendale. L'infrastruttura serverless si rivela in tal senso un potente alleato quando si tratta di elaborare tali informazioni; quindi di transcodificare, spostare, combinare e manipolare, tra le altre cose, dati strutturati (JSON, XML, ecc.) e non strutturati (immagini, audio, ecc.).
- **Esecuzione di attività nei tempi previsti**: nella maggior parte dei casi le funzioni possono non solo essere basate su eventi, ma anche eseguite secondo una pianificazione definita. In questo modo, ad esempio, è possibile ordinare automaticamente i database o creare backup.
- **Implementazione di assistenti linguistici e chat bot:** la tecnologia serverless è l'ideale anche per integrare assistenti linguistici digitali e chat bot.


This is a markdown version of: [https://www.ionos.it/digitalguide/server/know-how/serverless-computing/](https://www.ionos.it/digitalguide/server/know-how/serverless-computing/) for AI/LLM consumption.