Redis: intervista al creatore del database open source

Redis database open source

Il portale VentureBeat ha intervistato a fine giugno Salvatore Sanfilippo, programmatore italiano ed ideatore del progetto open source Redis (REmote DIctionary Server),  uno dei database più utilizzati in ambito informatico e supportati su GitHub.

Nel corso della discussione, che si è protratta per almeno un’ora, sono stati toccati diversi argomenti: dalla storia del database alle sfide da affrontare quotidianamente nell’evoluzione di un progetto open source, fino alla decisione di abbandonare Pivotal ed entrare nell’organico della startup Redis Labs, senza dimenticare alcune novità in sviluppo – l’intervistato si trovava a San Francisco per prendere parte alla RedisConf 2016.

Nel post di oggi riassumeremo quindi a grandi linee il contenuto dell’intervista, per coloro che vogliono passare direttamente alla lettura della fonte (in inglese) è disponibile un link a fondo pagina. Buona lettura.

Sintesi dell’intervista: semplicità e moduli

L’apertura è dedicata all’introduzione dei moduli in Redis, annuncio che secondo Sanfilippo ha diviso la community. Da una parte vi è chi apprezza la possibilità di poter plasmare Redis in base al proprio caso di utilizzo, senza dover attendere l’avanzamento del progetto principale; dall’altra vi è chi reputa l’implementazione dei moduli come portatrice di potenziali complicazioni. Lo stesso creatore, pur difendendo la liberta di scelta concessa dai moduli, si dichiara seguace della filosofia “keep it simple”: “in produzione i sistemi complessi possono riservare una serie di inaspettate problematiche – quando associati ad altri sistemi complessi”. In quest’ottica le distribuzioni ufficiali di Redis non comprenderanno i moduli che potranno tuttavia essere utilizzati e realizzati da ogni utente – l’API è ancora in fase di beta e deve essere ultimata nei prossimi mesi.

Perchè i moduli sono arrivati solo adesso (si iniziò a parlarne nel 2009)? –  chiede il giornalista. L’intervistato risponde che il ritardo è stato causato principalmente dal timore di un’eccessiva frammentazione del progetto e di essere impossibilitato ad aggiornare il “core” di Redis. Per consentire l’avanzamento del core ed al tempo stesso il funzionamento dei moduli, si è pensato all’introduzione di un layer di astrazione che fungesse da intermediario tra i due. In questo modo si è voluta evitare una situazione come quella Linux in cui non vi è alcuna API stabile ed un driver pensato per una determinata versione deve essere nuovamente riadattato alla release successiva.

Perchè RedisLab e quale futuro per il progetto

La decisione di entrare nell’organico della startup RedisLab è motivata invece come segue: la prima ragione è stata l’esigenza di gestire in maniera più efficace lo sviluppo. Sanfilippo afferma di essersi accorto di aver raggiunto una fase in cui una persona non era semplimente più in grado di fare fronte alla mole di codice presente. La presenza di un team di programmatori esperti consente inoltre di preservare l’avanzamento dei lavori – nel malaugurato caso in cui il creatore interrompa la sua attività.

“Credo che i progetti open source di una certa dimensione non siano sostenibili senza una controparte economica” è invece la seconda ragione: la programmazione di un sistema è questione completamente differente da quella di altri progetti e ben più delicata, una solo linea errata di codice può compromettere l’intero progetto. Ed è per questo che è necessario essere affiancati da contributor adeguatamente pagati.

Quale futuro attende invece la startup? E’ forse destinata a divenire un business da centiania di milioni di dollari? Naturalmente Sanfilippo non si sbilancia soffermandosi invece sulla positiva accoglienza che il settore enterprise sta riservando a Redis “Quel che ho notato negli ultimi sei-dodici mesi è una sorprendente adozione di Redis in ambienti di lavoro in cui solitamente le novità non sono le benvenute“. Il trend vede quindi Redis affacciarsi inizialmente come soluzione di appoggio o complementare a quelle esistenti per poi divenire il punto fermo dell’infrastruttura – ovviamente Redis non è adatto ad ogni caso di utilizzo (data retention).

Le origini del progetto e la licenza BSD

Nella seconda metà dell’intervista si parla delle origini del progetto. L’intervistato afferma che determinate caratteristiche di Redis furono definite durante lo sviluppo di un’applicazione web di analisi dati; Sanfilippo necessitava di una soluzione in grado di effettuare rapidamente delle analisi in tempo reale (attualmente il caso di utilizzo ideale per Redis) e per conseguire tale obiettivo scelse di sacrificare in parte la sicurezza dei dati – ecco perchè Redis mal si sposa con la data retention.“Per me era molto più importante che l’accesso ai dati  fosse estremamente veloce piuttosto che avere un estremo livello di sicurezza dei dati. Ho cercato quindi di trovare un compromesso tra l’archiviazione dei dati su disco e la loro permanenza in memoria”: ben presto Sanfilippo si rese conto che MySQL non consentiva di gestire un elevato numero di utenti per core, ed è così che iniziò a lavorare sul prototipo di quello che sarebbe poi diventato Redis.

Perchè Redis è stato pubblicato sotto licenza BSD e non GPL? L’intervistato spiega che quest’ultima è abbastanza macchinosa in certe situazioni (rilascio di nuovi update, riassegnazione del copyright) mentre BSD offre una maggiore libertà d’azione. Sanfilippo osserva tuttavia che GPL potrebbe ben presto ritornare in auge a causa del problema dei cloud vendor (“the AWS problem”). BSD consente infatti ai big del settore di fruire tranquillamente dei progetti pubblicati con tale licenza trasformandoli in prodotti redditizi, con conseguente marginalizzazione dei creatori/collaborati originari – chi sarebbe in grado di competere con AWS o Microsoft? Da questo punto di vista GPL pone invece diversi paletti evitando lo scenario appena descritto. La comunità open source, aggiunge l’intervistato, dovrebbe in ogni caso iniziare a pensare ad un nuovo modello di licensing.

Implementazioni future e principali difficoltà nella manutenzione del progetto

Il multi-threading è una delle caratteristiche in fase di studio: “l’accesso simultaneo alla struttura dati di Redis è difficile. Buona parte del CPU time è impiegato attualmente nel kernel […]. Se riuscissimo a rendere multi-threaded questo layer si avrebbero i vantaggi garantiti da applicazioni multi-threaded e dall’impiego di CPU con core multipli”.  L’arrivo di nuovi strumenti per Redis cluster è un secondo obiettivo del team: “ancora più strumenti, backup e ripristino in maniera che che sia possibile backuppare un intero cluster in una singola directory, e nel caso in cui [accada qualcosa] sia possibile ripristinare tutto”. 

Supervisionare il progetto è, prevedibilmente, un compito oneroso. Le principali problematiche sottolineate da Sanfilippo sono tre: gestire la mole di richieste della community, il dover necessariamente bocciare l’inserimento di determinate caratteristiche (“you’re alway the “No” man”), il senso di responsabilità nei confronti della user base. La maggiore sfida per il futuro resta comunque il coinvolgimento di altri sviluppatori open source a tempo pieno.

Ci sono poi almeno due “passaggi” che sembrano non essere, in generale, compresi adeguatamente dai contributor e/o da tutti gli utenti interessati al progetto: il primo riguarda l’implementazioni di nuove funzionalità; per molti il focus è principalmente sulla scrittura del codice mentre il nocciolo della questione è in realtà “il capire cosa fare e come farlo”. Una volta che si hanno ben chiare queste due cose, aggiunge, occuparsi della scrittura del codice è semplice.

Il secondo è l‘impresa di mantenere alto il proprio interesse quando si lavora per diversi anni sul medesimo progetto. Se non si è interessati o soddisfatti di quel che si sta facendo, osserva, l’operato non sarà probabilmente all’altezza della situazione. Il segreto è allora quello di occuparsi diversi aspetti del medesimo progetto in modo da variare la propria esperienza quotidiana.

Informazioni varie sull’intervistato

Nella parte conclusiva si parla degli interessi di Sanfilippo che spaziano dall’attività sportiva fino al buon vino ed al cibo (si parla dell’apertura di una pizzeria!?) – naturalmente ha anche una famiglia della quale occuparsi. Lo sviluppatore vorrebbe anche aprire un ufficio in Italia (Catania) in modo da sfruttare i talenti locali per portare avanti il progetto. Una domanda è anche dedicata all’ufficio personale di Sanfilippo – in pratica una camera “appartata” della casa nella quale l’intervistato passa la maggior parte del tempo “lavorativo”.

Per leggere l’intervista integrale click qui.