# Edge computing

L'edge computing è un modello di calcolo distribuito nel quale l'elaborazione dei dati avviene il più vicino possibile a dove i dati vengono generati, migliorando i tempi di risposta e risparmiando sulla larghezza di banda. L'elaborazione dei dati in prossimità del luogo in cui vengono generati porta considerevoli vantaggi in termini di latenza di elaborazione, riduzione di traffico dati e maggior resilienza in caso di interruzione nella connessione dati.

## Definizione

Una definizione di edge computing è l'utilizzo di qualsiasi tipo di programma informatico che offra una bassa latenza in prossimità delle richieste. Karim Arabi, in un Keynote dell'IEEE DAC 2014 e successivamente in un intervento su invito al Seminario MTL del MIT nel 2015, ha definito l'edge computing in modo ampio come "tutta l'elaborazione al di fuori del cloud che avviene ai bordi della rete e, più specificamente, in applicazioni in cui è richiesta l'elaborazione dei dati in tempo reale".
Il termine è spesso usato come sinonimo di fog computing. Questo è particolarmente rilevante per le piccole distribuzioni. Tuttavia, quando le dimensioni dell'implementazione sono grandi, ad esempio per le Smart City, il fog computing può essere un livello distinto tra l'Edge e il Cloud. Pertanto, in tali implementazioni, il livello Edge è distinto con responsabilità specifiche.
Secondo il rapporto The State of the Edge, l'edge computing si concentra sui server "in prossimità della rete dell'ultimo miglio".
L'edge computing può impiegare la tecnologia di virtualizzazione per facilitare la distribuzione e l'esecuzione di un'ampia gamma di applicazioni sui server edge.

## Descrizione

Il termine in lingua inglese, edge computing (in lingua italiana elaborazione al margine), prende spunto dalla parola "edge" che significa "angolo, estremità o margine" per fare riferimento al fatto che con questo approccio progettuale l'elaborazione dei dati avviene in maniera decentralizzata, in opposizione a quella centralizzata tipica del cloud computing. Il termine si riferisce più a un'architettura che a una tecnologia specifica.
Questo modello computazionale è adottato nel cosiddetto Internet delle cose, in quanto permette di elaborare grosse quantità di dati prodotti localmente ed eventualmente inviare a sistemi remoti una loro elaborazione molto più compatta. L'edge computing può anche essere sfruttato in architetture quali quella del 5G per fornire ai dispositivi connessi servizi locali con risposte in tempo reale, difficilmente realizzabili con architetture cloud.
Le origini dell'edge computing risiedono nelle Content Delivery Network create alla fine degli anni '90 per servire contenuti web e video da server edge distribuiti in prossimità degli utenti. All'inizio degli anni 2000, queste reti si sono evolute per ospitare applicazioni e componenti applicativi nei server edge, dando vita ai primi servizi commerciali di edge computing che ospitavano applicazioni come localizzatori di rivenditori, carrelli della spesa, aggregatori di dati in tempo reale e motori per l'inserimento di annunci pubblicitari.

## Applicazioni

I servizi applicativi edge riducono i volumi di dati che devono essere spostati, il conseguente traffico e la distanza che i dati devono percorrere. Ciò consente di ridurre la latenza e i costi di trasmissione. L'offloading del calcolo per applicazioni in tempo reale, come gli algoritmi di riconoscimento facciale, ha mostrato notevoli miglioramenti nei tempi di risposta, come dimostrato dalle prime ricerche. Ulteriori ricerche hanno dimostrato che l'utilizzo di macchine ricche di risorse, chiamate cloudlet o micro-centri di dati, migliorano i tempi di esecuzione quando alcuni compiti vengono scaricati sul nodo edge quando sono locati in prossimità degli utenti mobili. D'altra parte, l'offloading di ogni compito può comportare un rallentamento a causa dei tempi di trasferimento tra i dispositivi e i nodi. A seconda del carico di lavoro è quindi possibile definire una configurazione ottimale.
Il sistema di rete elettrica basato sull'IoT consente la comunicazione di elettricità e dati per monitorare e controllare la rete elettrica, rendendo più efficiente la gestione dell'energia.
Un altro utilizzo dell'architettura è il cloud gaming, dove alcuni aspetti di un gioco possono essere eseguiti nel cloud mentre il video renderizzato viene trasferito a client leggeri in esecuzione su dispositivi come telefoni cellulari, occhiali VR, ecc. Questo tipo di servizi è noto anche come pixel streaming.
Altre applicazioni degne di nota sono le auto connesse e a guida autonoma, le città intelligenti, l'Industria 4.0 e i sistemi di automazione domestica.