««« | »»»
Skype, le mode e la reinvenzione della ruota
Non è un mistero che mi piacciano le soluzioni inusuali, l’ho scritto in passato: a proposito dell’intervista ad Avy Briant1, lo ripeto ora dopo aver visto questa presentazione dell’architetto software di Skype2, sempre su InfoQ.
Avevo già letto l’articolo3 ma, anche se è stata una delle cose più interessanti degli ultimi mesi, non mi era proprio venuta in mente l’intervista, né tantomeno questo mio post di due anni fa in cui avevo segnalato questa descrizione sull’architettura di Skype, che è basata su PostgreSQL.4.
Qual è il nesso?
D’accordo, ammesso che in comune ci sia la capacità di trovare soluzioni senza affidarsi a preconcetti, in un modo che potremmo definire context driven5, cos’ha di così particolare l’architettura di Skype? Per capirlo, dobbiamo fare mente locale sul contesto attuale.
L’ascesa del NoSQL
In questo periodo, diciamo negli ultimi due anni, si è fatta strada l’idea secondo cui non puoi scalare veramente un’architettura se ti affidi ai database SQL, soprattutto se parliamo di scalabilità orizzontale6. Questo è uno degli assunti, forse il principale, che ha portato alla ribalta il cosidetto movimento NoSQL7.
Non c’è dubbio che ci possano essere problemi a scalare i database “tradizionali”, né che siano adatti a qualsiasi uso e nemmeno che ci sia ancora molto da fare per renderli più adatti al modo di lavorare attuale8 9.
Naturalmente i database SQL sono ancora usatissimi ma non mi aspettavo di vedere la presentazione di uno che lavora esclusivamente con le stored procedures10. Ecco perché un’architettura come quella di Skype sembra così particolare rispetto a quello che oggi fa tendenza ed ecco perché è così importante tenerla presente.
Reinventare la ruota, ogni volta
Siamo sempre attratti dall’adottare quello che ha funzionato l’ultima volta o quello che sembra funzionare per tutti gli altri. A volte è la cosa giusta da fare, a volte no, ognuno sbaglia a modo proprio.
Forse è uno scherzo della memoria ma credo di ricordare che in un’intervista gli sviluppatori della Bungie (quelli di Halo, poi comprata da Microsoft) dicevano che uno degli obiettivi che si ponevano era proprio quello di reinventare la ruota, per fare piazza pulita delle cose superate. Sembra che abbia funzionato! 11
- Outside the box. ↩
- Learning from Five Years as a Skype Architect Andres Kutt discusses his experience as architect at Skype for five years, sharing some of the lessons learned: rules of thumb do not always apply, functionality is important, use simple solutions, buzzwords are dangerous, the architecture needs to fit into the organization, and communication is important. ↩
- Learnings from Five Years as a Skype Architect: Too often in our work as architects and designers we focus on the task at hand, seldom reflecting on the past. We should really know better, how else do you improve? This article summarizes six learnings from 55 months as an architecture team lead at Skype. ↩
- PostgreSQL: analisi dell’architettura di Skype ↩
- Context driven testing. Non fatevi ingannare dal fatto che si parla di testing, sono considerazioni di validità generale. ↩
- Da Wikipedia: To scale horizontally (or scale out) means to add more nodes to a system, such as adding a new computer to a distributed software application. An example might be scaling out from one web server system to three. ↩
- Da Wikipedia: In computing, NoSQL is a term used to designate databases which differ from classic relational databases in some way. These data stores may not require fixed table schemas, and usually avoid join operations and typically scale horizontally. Academics and papers typically refer to these databases as structured storage, a term which would include classic relational databases as a subset.
Notable production implementations include Google’s BigTable and Amazon’s Dynamo. ↩ - I refactoring che coinvolgono il database rimangono ancora troppo macchinosi. In parte è un problema di strumenti, in parte è un problema di metodo di lavoro perché, forse più che in altri contesti, le operazioni da fare sul database sono molto specifiche. ↩
- Bisogna anche far notare che sotto l’ombrello della definizione NoSQL ci sono realtà molto diverse, alcune sono pensate per la scalabilità (Cassandra, ad esempio), altre per modelli di dati che non sono facilmente riducibili all’SQL come i graph database. ↩
- Anche se, a onor del vero, la presentazione non riguarda PostgreSQL ma quello che questa persona ha imparato lavorando per cinque anni a Skype ↩
- La tensione fra riscrittura da zero e refactoring è uno dei temi che ricorrono in questo blog, non c’è niente da fare… Dovrò fare una raccolta dei vari post, un giorno o l’altro. ↩
Per proseguire
Commenti e trackback sono disabilitati.