Nella definizione delle architetture
Internet of Things uno degli aspetti chiave è la localizzazione della "intelligenza" del sistema e, di conseguenza, la struttura del flusso dei dati che dalla periferia devono arrivare al luogo dove saranno elaborati. Nelle prime concezioni dell'IoT le implementazioni più frequenti vedevano elementi passivi (ad esempio sensori) alla periferia della rete e una trasmissione di informazioni
verso il cloud. La concezione vale ancora per molte architetture IoT: la periferia ha solo il compito di raccogliere dati che poi vengono elaborati da un servizio centralizzato. O comunque distribuito in una rete di datacenter principali.
Un approccio del genere è valido per tutti gli ambiti in cui la connettività non è un problema e lo scopo principale della soluzione IoT è estrarre informazioni da una grande quantità di dati provenienti dal campo. Il monitoraggio del traffico di veicoli "smart" in una città rientra in questa visione, come anche il controllo di una rete di distribuzione (gas, acqua, elettricità). Si tratta di un'architettura che però
ha alcuni limiti, ad esempio la connettività verso il cloud può non essere sempre garantita e un volume di dati eccessivo può creare difficoltà di memorizzazione ed elaborazione.
Per questo l'IoT basata sul cloud puro è stata subito affiancata dal cosiddetto
edge computing, che prevede una
delocalizzazione in periferia di parte dell'intelligenza del sistema. L'idea è quella di portare le funzioni di elaborazione vicino a dove vengono generati i dati, in modo da gestirli immediatamente. Con che grado di complessità, dipende dalle scelte progettuali specifiche.
Molto spesso l'unità periferica di elaborazione è indicata come un
gateway. Il termine deriva dal mondo Machine-to-Machine (M2M), dove indica device specifici. Oggi è una
definizione generica per un dispositivo più o meno potente che raccoglie i dati dalla sua area di competenza (un'abitazione, una fabbrica, un campo...) e li gestisce in qualche modo. Può semplicemente filtrarli e aggregarli per ridurre il flusso di dati verso il cloud, come anche abilitare funzioni di elaborazione complesse che prevedono anche
(re)azioni specifiche. Il gateway di una fabbrica potrebbe ad esempio spegnere determinati macchinari in situazioni di emergenza, reagendo molto più velocemente di quanto accadrebbe con elaborazione centralizzata in cloud.
L'evoluzione ancora più decentralizzata dell'edge computing è il
fog computing, approccio in cui l'intelligenza è collocata direttamente in una moltitudine di dispositivi periferici, proprio là dove si generano i dati. Il parallelo nebbia/nuvola non è solo una immagine un po' poetica. Da un lato la nebbia può essere vista come una nuvola talmente vicina da esserci in mezzo, il che sottolinea una elaborazione fortemente distribuita. Dall'altro la "sostanza" di nebbia e nuvole è la stessa, a indicare che il fog computing
prevede comunque l'esistenza di servizi cloud di supporto con cui si integra.
L'elemento caratteristico del fog computing è infatti una
gestione elastica del carico elaborativo, che può essere distribuito in vario modo tra centro e periferia e con reti di dispositivi molto articolate. A patto ovviamente di avere piattaforme
standardizzate che consentano il dialogo e l'interazione tra sistemi potenzialmente anche molto diversi fra loro. Un aspetto sul quale si sta lavorando soprattutto attraverso la
definizione di consorzi e partnership, più che con la creazione di standard comuni..