Una applicazione per iOS per scattare una fotografia, aggiungere qualche effetto e poi condividerla con gli amici. àˆ questo che vede l'utente di Instagram.
Ma per un osservatore tecnico, uno sviluppatore, ancora più interessante è sapere cosa sta dietro le quinte di un servizio da più di 14 milioni di utenti. Ed allora la questione diventa più articolata: quale sistema operativo? Quale application server/linguaggio di programmazione?
La risposta viene direttamente dal blog del team di Instagram, ed entra abbastanza nel dettaglio: se infatti era noto che il lato server di Instagram fosse basato su Python e Django, si può scoprire come siano passati da un classico setup Apache-mod_wsgi a Gunicorn come application server.
Ovviamente data la base di utilizzatori notevole, la necessità di distribuire il carico è evidente: la loro scelta è stata quella di ospitare i server sui servizi web di Amazon per adattarsi più velocemente alle variazioni di volume con uno staff ridotto. Elastic Load Balancer per dividere il traffico sui front-end NGIX che a loro volta interrogano le 25 istanze di server EC2 basati su Ubuntu server 11.04 che ospitano il già citato Gunicorn.
Aggiungere PostgreSQL per la persistenza dei metadati e Redis per gli "Activity feed" degli utenti, Amazon S3 per lo storage delle fotografie, Gearman come task queue combinato con un service Twisted per produrre le notifiche push, un po' di monitoring, devops con Fabric e il gioco è (quasi) fatto.