Perchè le API sono necessarie in un mondo “big data” che cerca di decentralizzarsi

Come avevo scritto qualche settimana fa  la decentralizzazione è il cuore pulsante dei big data o meglio di quel fenomeno che a partire dagli anni ’90 attraverso la nascita del web ha accelerato la creazione di quello che in un eccellente libro , Stefano Quintarelli ha definito il nostro “futuro immateriale”.
Quasi quattro anni (Agosto 2012) sono passati da quando Forbes in un celebre articolo dal titolo “Welcome to the API economy” annunciava la sempre più forte centralità di questo paradigma che si stava affermando  non solo dal punto di vista tecnologico ma anche da quello economico, culturale e sociale.

Api
Ma partiamo dalla definizione di Wikipedia che descrive le API come un “insieme di procedure disponibili al programmatore, di solito raggruppate a formare un set di strumenti specifici per l’espletamento di un determinato compito all’interno di un certo programma”: nulla di nuovo rispetto a quello che succedeva anche qualche decennio fa in campo informatico. Ma quello che è cambiato negli ultimi 15 anni e che ne ha fatto crescere l’importanza in maniera progressiva sono stati queste “piccole” evoluzioni tecnologiche:
l’utilizzo del procollo http che ha portato le api a poter sfruttare la rete per interconnettere applicazioni e sistemi distribuiti sulla rete internet (Web service)
l’evoluzione del fenomeno mobile che ha moltiplicato i sistemi distribuiti in rete (smartphone e ora anche Internet of Things) che necessitano di scambiarsi dati in modo resiliente e veloce. Da qui l’evoluzione delle API verso il paradigma REST e dal formato XML a quello Json, più leggero e meglio gestibile dalle applicazioni.
la crescita enorme di dati generati e quindi disponibili (fenomeno Big data) che ha reso fortemente economico gestire il relativo scambio senza flussi massivi ma con veloci e leggere interfacce e transazioni quando gli utenti (uomini o macchine) ne hanno bisogno e questi sono disponibili in qualunque server in giro per il mondo.

APIFramework

Questa evoluzione tecnologica delle API ha facilitato da una lato il superamento di una serie di problematiche funzionali e di business e dall’altro ha consentito di creare nuovi mercati dove nel giro di poco tempo aziende da piccole start-up si sono trasformate in colossi economici mondiali. Di seguito proviamo ad elencare i 7 principali benefici e casi d’uso che afferiscono al paradigma della API economy:

1) Sicuramente la monetizzazione di asset strategici e immateriali quali dati, informazioni e algoritmi ha avuto dalla diffusione di uso delle API un’accelerazione enorme. Questo ha portato dall’inizio degli anni 2000 alla creazione di aziende che hanno fondato una parte considerevole del loro business su questo tipologia di transazioni. E’ il caso per esempio di Twitter che ha in questo tipo di business una delle componenti più importanti del suo fatturato. Ma anche Google e Facebook hanno ulteriormente accelerato in questa direzione recentemente creando prodotti sulla base di algoritmi creati per realizzare prodotti per i propri clienti: il caso del recente lancio delle Vision Api di Google ne è un caso emblematico. Ma anche aziende più tradizionali, che non nascono con il Web, come il New York Times stanno spingendo molto nel creare piattaforme API che facilitino l’integrazione e l’uso dei propri asset. Data e information provider in giro per il mondo traggono ovviamente grossi benefici da questa evoluzione tecnologica che facilita la diffusione dei propri asset in maniera liquida: il portale API di Dun & Bradstreet ne è un ottimo esempio perchè evidenzia la capacità di integrare in un marketplace anche dati esterni (di altri data-provider) concretizzando quello che mi piace definire come il “dato aumentato”.

2) La distribuzione e conseguente decentralizzazione che il paradigma API ha portato è stato sicuramente abilitante alla sempre più forte diffusione del Cloud nelle sue diverse forme comprese quella ibrida. Poter integrare facilmente diverse API nelle proprie soluzioni permette di cogliere tutti i benefici di scalabilità del Cloud quando per specifiche API si evidenza necessità di performance molto variabili nel tempo. Sulla facilità di integrazione proprio delle API, semplificando la complessità architetturale sottostante, ha creato la sua posizione dominante la soluzione cloud di Amazon che ha non a caso il nome Amazon Web Services. Bluemix di IBM è un altro esempio dove API Economy e Cloud si fondono per dar vita ad un tentativo di facilitare l’innovazione facendo incontrare in maniera virtuosa domanda e offerta.

3) La capacità di integrare API di terze parti costruendo un’esperienza di valore per segmenti di utenti/mercati è un’altra tendenza abilitata dalla API economy. Molte aziende stanno creando o espandendo i propri business sfruttando questo paradigma. Forse il caso più recente ed ecclatante è quello di Slack, una piattaforma di team collaboration orientata al mondo tech, che ha fatto dell’integrazione con altri servizi  e con la possibilità addirittura di crearli ex-novo la forse primaria ragione di successo portandolo ad una diffusione veloce  (2.7 milioni di uenti attivi al giorno, inclusi 800.000 utenti a pagamento) e di conseguenza ad una valutazione elevatissima di circa 3,8 miliardi di dollari. Ma anche Uber ha per esempio aperto una piattaforma API per consentire a terze parti di sfruttare la sua flotta per le consegne, un uso creativo e innovativo del proprio asset immateriale.

4) L’utilizzo di framework API anche all’interno di organizzazioni strutturate e dove il tempo ha costruito, soprattutto a livello dati, silos molto difficili da superare è una altra direzione di applicazione molto interessante. Nei casi in cui non è necessaria una integrazione diretta a livello di sistema di persistenza del dato le API consentono di far dialogare diversi sistemi dipartimentali evitando costosi progetti di integrazione rendendo tra l’altro possibile la reingegnerizzazione di sistemi legacy per fasi successive. SalesForce ha creato una straordinaria storia di successo sulla base del superamento attarverso la propria applicazioni di silos dati aziendali che confluiscono nella sua soluzione automatizzando tutta la parte di gestione delle reti commerciali. E lo ha fatto integrando nella sua piattaforma, spesso via API,  dati sia dai silos aziendali sia da servizi di altri fornitori.

5) Il fenomeno OpenData trova nella forma di utilizzo via API la forma migliore per garantire l’utilizzo del dato in real time (non fattibile utilizzando forme batch come i file csv) e per l’interoperabilità in applicazioni di facile uso da parte degli utenti, come più volte evidenziato da Alfonso Fuggetta. In area anglosassone i portali api sono ormai ampiamenti diffusi nelle pubbliche amministrazioni sia locali che nazionali. Ne sono uno splendido esempio quello della città e dello stato di New York. Anche in Italia qualcosa si sta muovendo a traino dei casi più interessanti come quello dei dati relativi ai fondi strutturali erogati dalla Unione Europea ed esposti dal sito  Open Coesione.

6) Per favorire uno sviluppo di applicazioni in modo agile, incrementale e modulare le API sono un ottimo strumento che consente di definire in itinere il Minimum Viable Product (MVP) permettendo di integrare nelle applicazione i servizi più a valore e testando con i Clienti direttamente sul campo il loro utilizzo. L’integrazione di API rest oltre a disaccoppiare i sistemi consente una modalità più semplice di gestire l’interattività tra team diversi di sviluppo magari localizzati in aree diverse del globo. Le API sono un facilitatore del paradigma agile consentendo un time to market più veloce al business.

7) Si stanno anche creando anche marketplace specifici, con propri modeli di business, che aggregano API di terze parte consentendo a sviluppatori, accedendo ad un solo ambiente di trovare diverse soluzioni per differenti problemi. Oltre al caso già citato di Bluemix un esempio eccellente di origine italiana ma trapiantato in Silicon Valley è quello di Mashape che oltre ad offrire l’infrastruttura per pubblicare API private (come per esempio anche Apigee) fornisce anche un “mercato” dove si possono pubblicare API per vendita diretta di dati e servizi. Ad oggi ce ne sono più di 1350 pubblicate in questa forma

Insomma i motivi per entrare nella API economy sono tanti: l’interoperabilità tra sistemi, aziende e team di sviluppo è sicuramente il più importante ma non è facile  trarne beneficio perchè non è solo una questione tecnologica ma di cultura e di visione di business. Insomma come recita un famoso aforisma di W.Gibson “il futuro è già qui, solo che non è distribuito in maniera uniforme”.

 

 

Annunci
Perchè le API sono necessarie in un mondo “big data” che cerca di decentralizzarsi

Il valore del poliglottismo tecnologico nell’era dei “Big Data”

L’uscita di questo recente post  nel sito Dzone che parla di come sia percepita e gestita all’interno delle più importanti organizzazioni internazionali la tematica della persistenza dei dati mi permette di approfondire il suo valore strategico nell’ottica di sfruttare al meglio il fenomeno big data.
Partiamo dalla definizione di persistenza dei dati: la capacità di rendere utilizzabile e accessibile un dataset nel tempo e su diversi tipi di memorie e di sistemi. In particolare, in ottica big data, la capacità di rendere accessibile una base dati in diversi tipi di sistemi di memorizzazione  è il fattore chiave per sfruttare al meglio quello che l’evoluzione tecnologica ci ha messo a disposizione. Avevo già parlato in uno dei primi post di come una delle direzioni in cui si sta sviluppando il fenomeno big data sia proprio quello della tecnologie NoSQL ovvero quei database che si differenziano dai database relazionali che hanno (e continuano parzialmente a farlo) dominato la scena dagli anni ’80. Sarebbe tra l’altro più corretto sia dal punto di vista etimologico che semantico definire questo tipo di database “Not only SQL” proprio per sottolineare come esistono diversi casi d’uso, soprattutto quando le quantità di dati crescono, per i quali il modello relazionale non rappresenta la soluzione migliore. Come si può vedere dalla classifica più diffusa a livello mondiale dei sistemi di gestione dati, db.engine.com, i database relazionali sono largamente utilizzati ma non sono più l’unica scelta a disposizione e soprattutto il trend è tutto a favore dei sistemi NoSQL
Poli2
Tipicamente si  classificano i sistemi NoSQL  in 5 categorie:
1) Graph database: sistemi che memorizzano i dati in nodi e relative relazioni e che sono molto adatti a supportare algoritmi che “attraversano” in modo intensivo la rete del grafo. Un esempio tipico di questi algoritmi è  il calcolo del cammino minimo tra due o più nodi che sfrutta strutture più efficientin presenti  nei graph database rispetto al  classica “join” dei database relazionali.
2) Document database: sistemi che non memorizzano i dati in tabelle con campi uniformi per ogni record come nei database relazionali, ma in cui ogni record è memorizzato come un documento che possiede determinate caratteristiche. Tipicamene la forma in cui sono memorizzati i dati è XML o Json. Questa tipologia di sistemi è molto adatta a dati in cui non è molto importante e dinamica la parte relativa alle relazioni e dove sono molto frequenti gli accessi in lettura.
3) Key-value database: sono abbastanza simili ai document database ma il volume di dati associato a ciascuna chiave è tipicamente molto più piccola e sono ancora meno adatti a gestire le relazioni. La loro struttura è praticamente quella, per chi conosce Python, della struttura dato dizionario. Sono adatti per grandi volumi di operazioni sia di scrittura che di lettura .
4) Columnar database: hanno una tipologia di memorizzazione dei dati orientata alla colonna piuttosto che alla riga, come succede nei database relazionali. Questo li porta ad essere più efficienti nell’analizzare e aggregare i dati per colonna piuttosto che analizzare il singolo record in tutti i suoi campi. Sono molto più adatti quindi ad utilizzi di tipo OLAP (online analytical processing) più che che OLTP (online transactional processing).
5) Search engine database: sono molto orientati alla ricerca di dati anche e soprattutto attraverso un utilizzo di fitri in successione da parte degli utenti (faceting). Questa tipologia di sistemi non sono veri database primari ma sono sempre più affiancanti a database NOSQL o relazionali perchè facilitano e rendono efficiente una delle operazioni che in questi non è sempre ottimale e  cioè la ricerca in grossi moli di dati.

La numerosità di queste nuove forme di sistemi di gestione dei dati rende quanto mai importante saper scegliere la tipologia che più si adatta allo scopo della nostra applicazione. Addirittura è sempre più frequente la presenza di più sistemi di persistenza dei dati all’interno di una sola applicazione.Come si può vedere da questa figura
Poliglottismo1in una recente indagine, condotta a livello mondiale sul numero di sistemi di persistenza dati usati all’interno della stessa applicazione il numero due è appaiato con il 38%  all’uno  con il 40%. Ormai più del 50% delle applicazioni usano più di un sistema di persistenza dati! Con ormai oltre 150 sistemi di gestione dati con una importanza e diffusione rilevante (assumendo come soglia lo score 0.50 della classifica di db.engine.com) a livello mondiale saper scegliere al momento giusto non basta più perchè l’inerzia dovuta ad acquisire le conoscenze necessarie per usare questi sistemi all’interno di progetti è alta. Diventa sempre più strategico investire a livello aziendale e anche di singoli team nella conoscenza delle diverse tipologie e di alcuni istanze di queste magari anche utilizzandoli in proof of concept per essere pronti a sceglierli ma soprattutto ad averne una buona esperienza pratica.
Il poliglottismo tecnologico e in particolare il poliglottismo dei sistemi di persistenza dati è sempre più un fattore strategico di successo soprattutto per le data-driven company che vogliono sfruttare a pieno la grande e diversificata mole di dati che sempre più in tempo reale guida il business e le relative strategie. E se con i DBaas (Db as a service) la complessità sistemistica si abbassa, si alza sempre di più all’interno di questa diversificazione tecnologica a crescita esponenziale la capacità di scegliere e usare in tempi rapidi il sistema più adatto.

Il valore del poliglottismo tecnologico nell’era dei “Big Data”