Categories
WebMarketing

Cosa c’è dietro la blockchain? Come si regge questa infrastruttura? Te lo spieghiamo qui!

Come si colloca la tecnologia blockchain? E qual è l’architettura del software sulla quale si muove la blockchain? Affinché tu possa apprezzare il quadro generale, ti presenterò il concetto di architettura del software e spiegherò la relazione dello stesso con il concetto di separazione del sistema in più livelli ed aspetti. Oggi ti aiuterò a identificare la collocazione della Blockchain all’interno del macro contesto, ti spiegherò la relazione fra Blockchain e l’architettura del software. Infine, ti presenterò la finalità principale della Blockchain in un’unica frase. Solo comprendendo la finalità principale ti darà modo di acquisire le basi per comprendere la Blockchain e tutto l’universo economico, e non, che vi ruota intorno.

Hai mai acquistato una macchina? Anche se non l’hai mai fatto, sicuramente sai che un’automobile può essere dotata di diversi motori (es. diesel, benzina, elettrico). Questo è un esempio di idea di stratificazione in una macchina.

Durante l’acquisto di un’auto, il fatto di avere più scelte fra i diversi tipi di motore ci può porre dinanzi ad importanti differenze di prestazione del veicolo. Due macchine esternamente identiche possono differire enormemente quanto a prestazioni relative alla potenza del motore e quindi offrire performance di guida molto diverse. Oltre a ciò, il motore che sceglierai avrà un impatto su altre caratteristiche della macchina quali i costi operativi, il tipo di carburante consumato, la dimensione dei freni. Con questo esempio in mente, comprendere il ruolo della Blockchain all’interno del quadro generale ti sarà molto più semplice.

 

Il sistema di pagamento

Applichiamo il concetto di livelli ad un sistema di pagamento.

La tabella qui di seguito spiega le necessità dell’utente (aspetti funzionali) come pure aspetti non-funzionali di entrambi livelli “Applicazione” e “Implementazione”.

grafico

Hai notato il punto interrogativo nella parte della tabella dove normalmente vengono descritte informazioni circa la tecnologia utilizzata per fare funzionare il sistema. Ho lasciato questo spazio vuoto di proposito. È dove tu deciderai quale “motore” va utilizzato per far funzionare il tuo sistema. Fra poco comprenderai un po’ meglio il sistema del software che ho paragonato al motore.

 

Due tipologie di architettura software

Ci sono molti modi per programmare un sistema software. Tuttavia, una delle decisioni fondamentali da prendere quando si crea un sistema riguarda la sua architettura, il modo in cui i suoi componenti sono organizzati e messi in relazione fra di loro.

Due fra i più importanti approcci di architettura per sistemi software sono: centralizzato e distribuito.

In sistemi software centralizzati, le componenti sono collocate e collegate ad una componente centrale. Al contrario, le componenti di un sistema distribuito formano un network di parti collegate senza un elemento di coordinamento o di controllo.

Nelle due figure qui sotto rappresentate i cerchi rappresentano le componenti del sistema, anche chiamati nodi, mentre le linee indicano le connessioni fra di loro. A questo punto, non è importante conoscere i dettagli di ciò che fanno tutti i componenti e quali informazioni vengono scambiate fra i nodi.

 

sistema_centralizzato_vs_distribuito

 

Il punto fondamentale è l’esistenza di queste due modalità di organizzazione del sistema software. A destra, il grafico relativo all’architettura distribuita illustra come le componenti sono collegate fra di loro senza la presenza di un elemento centrale. E’ importante notare che nessuna delle parti è direttamente collegata con le altre. Tuttavia sono tutti direttamente collegati con tutti gli altri componenti, per lo meno indirettamente. A sinistra viene illustrata l’architettura centralizzata dove ogni parte è collegata ad un componente centrale. Le stesse non sono connesse fra di loro direttamente in quanto collegate direttamente con l’elemento centrale.

 

I 4 vantaggi del sistema distribuito

I pro di un sistema distribuito rispetto ad un singolo computer, sono:

  • Maggiore potenza di calcolo;
  • Riduzione costi;
  • Maggiore affidabilità;
  • Capacità di crescere naturalmente.

Maggiore potenza di calcolo

La potenza di calcolo di un sistema distribuito è il risultato derivante dalla combinazione della potenza di calcolo di tutti i computer connessi alla rete. Quindi, un sistema distribuito possiede tipicamente più potenza di calcolo rispetto ad ogni singolo computer. Questo è vero anche quando si compara un sistema distribuito con capacità di calcolo modesta con un super computer isolato.

 

Riduzione dei costi

Il costo dei computer, memoria, spazio di memoria, e materiale di rete è sceso enormemente nel corso degli ultimi 20 anni. Dal momento in cui il sistema distribuito consta di molteplici computer, i costi iniziali di un sistema distribuito sono superiori rispetto ad un unico apparecchio. Tuttavia i costi di strutturazione, manutenzione, operatività di un super computer, sono decisamente più elevati rispetto a quelli relativi alla strutturazione, manutenzione ed operatività di un sistema distribuito. Ciò è particolarmente vero dal momento in cui il rimpiazzare un unico computer all’interno di un sistema distribuito non ha significativi impatti sul sistema nel suo insieme.

 

Maggiore affidabilità

L’accresciuta affidabilità di un sistema distribuito si basa sul fatto che l’intero network di computer può continuare ad operare anche quando una macchina si blocca o si rompe. Un sistema distribuito non ha singoli punti di fallimento. Se un elemento fallisce, gli elementi restanti prendono il comando. Quindi un singolo super computer ha un grado di affidabilità più basso rispetto ad un sistema distribuito.

 

Abilità di crescere naturalmente

La potenza di calcolo di un sistema distribuito è il risultato di un’aggregazione di potenze di calcolo dei propri costituenti. E’ possibile aumentare la potenza di calcolo di tutto l’intero sistema semplicemente collegato ulteriori computer allo stesso. Ne deriva che la  crescita della potenza di calcolo di tutto il sistema può essere incrementata in modo capillare. Questa struttura supporta la crescente domanda di potenza di calcolo da parte di molte organizzazioni. La continua crescita della potenza di calcolo dei sistemi distribuiti si contrappone alla relativa crescita della potenza di calcolo dei singoli computer. Ciò risulta in una crescita discontinua della potenza di calcolo che spesso non viene apprezzata da chi si avvale di tali servizi.

 

Gli svantaggi di un sistema distribuito

Perché non dovresti scegliere un sistema distribuito? Questa tipologia di sistema, paragonato a un singolo computer ha qualche contro:

  • Organo di coordinamento;
  • Organo di comunicazione;
  • Dipendenza dai network;
  • Elevata complessità del programma;
  • Problemi di sicurezza.

Organo di coordinamento

Un sistema distribuito non possiede un’unità centrale che coordina i propri membri, di conseguenza il coordinamento deve avvenire per tramite dei membri dello stesso sistema distribuito. Coordinare l’attività attraverso i coworkers in un sistema distribuito rappresenta una grande sfida, elevati costi e potenza di calcolo che non possono essere imputati direttamente alle attività di elaborazione dati, da qui il termine di organo di coordinamento.

 

Organo di comunicazione

Il coordinamento richiede comunicazione, quindi i computer che compongono un sistema distribuito devono comunicare fra di loro. Ciò richiede l’esistenza di un protocollo di comunicazione, di inoltro, ricezione ed elaborazione di messaggi che necessita di risorse in termini di costi e di potenza di calcolo che non possono venir impiegati nei meri compiti di elaborazione dei dati.

 

Codipendenze dei network

Qualsiasi tipo di comunicazione richiede un mezzo responsabile del trasferimento delle informazioni fra un’entità l’altra. I computer facenti parte di un sistema distribuito comunicano tramite messaggi che passano attraverso il network. I network non sono immuni da sfide ed avversità che vanno ad impattare  sulla comunicazione ed il coordinamento fra computer che formano il sistema distribuito. Tuttavia, senza network con ci sarebbe un sistema distribuito, nessuna comunicazione e quindi nessun coordinamento fra i nodi, da qui la codipendenza dei network.

 

Elevata complessità del programma

Risolvere un problema di calcolo (metaforicamente risolvere un quiz) coinvolge le scritture di programmi e di software. A causa degli svantaggi menzionati prima, ogni software all’interno di un sistema distribuito deve risolvere addizionali problemi quali coordinamento, comunicazione ed utilizzo del network. Tutto ciò va ad incrementare la complessità del software.

 

Problemi di sicurezza

La comunicazione attraverso un network significa trasmettere e condividere dati che sono critici per la genuina elaborazione dei dati. Tuttavia, trasmettere informazioni attraverso un network comporta problematiche di sicurezza poiché entità disoneste (untrustoworthy) potrebbero utilizzare in modo inappropriato il network al fine di accedere e trarre vantaggio dalle informazioni ivi contenute. Meno è limitato l’accesso al network attraverso il quale i nodi comunicano, maggiori sono le problematiche legate alla sicurezza all’interno di un sistema distribuito.

 

E cos’è invece un network Peer-to-Peer?

I network Peer-to-Peer sono una speciale categoria di sistema distribuito. Consistono in computer individuali (nodi) che rendono la propria capacità di calcolo (es. capacità di elaborazione, capacità di immagazzinare dati, dati o larghezza della banda del network) direttamente disponibile a tutti gli altri membri del network senza possedere un ente centrale di coordinamento. Tutti i nodi del network sono uguali con riferimento a diritti e ruoli all’interno del sistema, sono inoltre tutti consumatori e fornitori di risorse.

I sistemi Peer-to-Peer posseggono delle interessanti applicazioni quali la condivisione di file, la distribuzione di contenuti e la protezione della privacy. Molte di queste applicazioni utilizzano una semplice ma potente idea: trasformare i computer degli utenti in nodi che formano l’intero sistema distribuito. Maggiori saranno i clienti e gli utenti che entreranno a farne parte e maggiore sarà la dimensione e la potenza del sistema. Questa idea, conseguenze e sfide saranno oggetto di un futuro articolo.

 

Come si identifica un sistema distribuito?

Nel dubbio se un sistema sia distribuito o centralizzato, va verificata l’esistenza di un singolo componente (es. database, un componente login/logoff o un pulsante switch-off d’emergenza) che può arrestare l’intero sistema. Se tale componente viene identificata, il sistema oggetto di valutazione non è distribuito.

 

Lo scopo della Blockchain

Durante la progettazione di un software è possibile scegliere quale architettura verrà utilizzata, simile alla scelta del motore dell’automobile. La scelta dell’architettura può avvenire indipendentemente dagli aspetti funzionali legati ai livelli delle applicazioni. Di conseguenza è possibile creare un sistema distribuito o centralizzato con le identiche funzionalità a livello delle applicazioni. L’architettura è solo un mezzo legato ad un obiettivo unicamente durante l’implementazione di un sistema. Un sistema di pagamento, come spiegato sopra, può essere implementato in un sistema distribuito o centralizzato.

Entrambi i due concetti di architettura posseggono vantaggi e svantaggi e modalità distinte di eseguire le varie attività. La scelta di una specifica architettura produrrà delle conseguenze su come si vorranno raggiungere determinati aspetti funzionali e non-funzionali di un sistema. In particolare, per entrambi le architetture esistono degli approcci diversi per garantire l’integrità.

 


Cosa si intende per integrità di una blockchain?

Integrità è un aspetto non funzionale che garantisce la sicurezza, completezza, coerenza, correttezza e l’assenza di alterazioni ed errori all’interno di un sistema.


 

Di fatto è questo  il punto essenziale in cui la Blockchain entra a far parte della cornice che abbiamo fin qui delineato. La Blockchain è uno strumento che permette di ottenere l’integrità all’interno di un sistema distribuito. In questo senso può essere visto come un tool adatto al raggiungimento di aspetti non funzionali del livello implementazioneLo scopo della Blockchain è di raggiungere e mantenere l’integrità in un sistema distribuito.

 

Vuoi saperne di più sulla blockchain e scoprire come portarla in azienda?
Scarica la nostra guida!

Archivi

Categorie

social media