La storia
Come avrete notato, qualche giorno fa il sito di EasyPodcast ha cambiato radicalmente aspetto, per la prima volta dalla sua nascita nel 2012.
La grande novità è che non si tratta di un semplice nuovo tema di WordPress, la soluzione che abbiamo usato fin da quel freddo pomeriggio di dicembre, ma di un sistema completamente personalizzato e sviluppato da me, Luca.
Perché questa scelta? Perché, detto francamente, l’insieme di accrocchi che avevamo accumulato negli anni per gestire tutte le funzioni di cui abbiamo bisogno era diventato ingestibile, incoerente e fragile. Se poi consideriamo che il plugin di WordPress che abbiamo sempre usato per la gestione dei podcast, PodPress, non è più mantenuto da tempo (anni?), e ora non è nemmeno più disponilbile, eravamo veramente a rischio di trovarci a piedi nol momento meno opportuno.
Giusto per rendere l’idea, soluzioni più o meno fragili mettevano insieme:
- Il sito
- L’upload dei file mp3 dei diversi show
- La pubblicazione delle puntate
- Una cache statica dei feed RSS, per non appesantire il server (e che però non dovevano rimanere “indietro”)
- Le dirette
- L’invio delle notifiche push
- Lo showbot
- L’interazione con la nostra app
Così, nel corso di praticamente due anni, composti di qualche settimana di attività fervente alternata a lunghi periodi di calma piatta, è nato PodCMS, così ho chiamato lo strumentino che ho realizzato. La cosa che lo rende più utile per me e per gli altri host che si occupano di pubblicare le puntate è l’integrazione totale di tutte queste parti.
Un esempio? Immaginate che EasyApple trasmetta una puntata in diretta, e che qualche ascolatore abbia suggerito un titolo veramente simpatico tramite lo showbot (da web, oppure dall’app). Nel momento in cui mi appresto a pubblicare la puntata, nella sezione di pubblicazione del pannello di amministrazione posso vedere con un clic i titoli suggeriti, e con un altro impostarlo come titolo. Qualcuno ha suggerito un link? Un clic ed è nelle note della puntata. Poiché avevamo avuto un ospite, posso digitare le sue iniziali ed associarlo alla puntata, in modo che sia visibile nella sua pagina che è stato ospite questa settimana. Alla pubblicazione della puntata, partirà in automatico un tweet che segnala la cosa, con tanto di menzione di ospiti e conduttori.
Dimenticavo: avete mai provato a guardare i tag del file mp3 di una nostra puntata? Sono sempre completi di titolo, copertina, show e conduttori. Finora mi sono affidato ad uno script in Python oppure ad una app per Mac che ho realizzato tempo addietro per provvedere all’inserimento semiautomatico di questi dati, ma rimaneva comunque una soluzione subottimale. Soprattutto se non si usa un Mac (@il_lazza, sto guardando te). Ora, nulla di tutto ciò: andando a pubblicare la puntata si può caricare un file mp3 “qualsiasi”, e sarà PodCMS a provvedere all’inserimento di tag e copertine.
Ma al di là di tutto questo, per voi cosa cambia? Sicuramente avrete un sito più veloce, più chiaro e più ricco di informazioni. C’è la possibilità di cercare le puntate (funzionalità che verrà migliorata prossimamente) e finalmente il sito è responsivo (ci sono ancora alcuni bug e parecchio margine di miglioramento, ma è decisamente meglio della totale non-responsività precedente).
Nerd zone
Dato che so già che qualcuno sarà curioso di sapere cosa sta dietro a tutto, faccio un breve riassunto.
Al momento l’infrastruttura di EasyPodcast è composta da due server: un dedicato che ospita il sito, i download e tutti gli orpelli, e un VPS che ospita solamente i download, per aumentare la banda complessiva (circa 2 gigabit/s totali) e velocizzare i download. Entrambi, nel momento in cui scrivo, girano su Ubuntu 16.04.1 LTS.
Il server web utilizzato è nginx, che è semplicemente fantastico: molto parco di risorse ed estremamente performante. Tutte le comunicazioni sono cifrate tramite TLS (HTTPS per gli amici), download compresi. Ogni richiesta HTTP viene reindirizzata su HTTPS, non è possibile ottenere niente con una connessione in chiaro.
Il database utilizzato è MariaDB, un fork di MySQL. Perché? Perché ho sempre usato quello, e di database capisco poco o niente.
Il server per lo streaming è Icecast, che si è sempre comportato alla grande. Ezstream si occupa di “trasmettere” le repiche delle puntate su EasyRadio quando non siamo in diretta, mentre streamTranscoder genera la versione a bassa qualità (32 kbps) che è accessibile dall’app.
Lo showbot, di cui avevo già parlato in passato, è scritto in nodeJS e usa i websocket per mostrare l’interfaccia per votare i titoli ed è “tenuto in vita” da forever
.
Il collante che tiene insieme tutto, però, è PodCMS, scritto in PHP. “Perché PHP?!?1”, “Schifo!”, “Orrore!”, sicuramente molti staranno pensando questo. Il motivo è che è un linguaggio con cui ho una certa dimestichezza, e imparare qualcos’altro per questo progetto sarebbe stato molto impegnativo e avrebbe comportato tempi di sviluppo ancora più lunghi. Avevo inizialmente valutato di usare Ruby On Rails, ma prendere familiarità con un nuovo linguaggio partendo con un progetto così ambizioso mi sembrava decisamente eccessivo.
Questo è tutto quello che “vedete” voi, in più ci sono altri scriptini assortiti che si occupano dei backup, della gestione dei certificati per HTTPS, e di tenere tutto in perfetta efficienza. In chiusura Monit, che monitora la salute del server “dall’interno” e Pingdom che lo fa dall’esterno.
Spero di essere stato sufficientemente esaustivo, ma se avete ulteriori domande, non esitate a contattarmi su Twitter.