As Tecnologias que Rodam o Instagram

As Tecnologias que Rodam o Instagram

Esse post ficou salvo como rascunho desde de Junho/2012… Comecei a escrevê-lo pesquisando sobre as tecnologias que rodam o/no Instagram a partir de um tweet deles: “Due to severe electrical storms, our host had a power outage, no data is lost – we’ve been working through the night to restore service”

Pesquisando, acabei indo parar no blog de engenharia deles.

Sempre que possível, testo e pesquiso novas ferramentas e soluções… Como no post achei bastante coisa bacana achei interessante compartilhar.

A equipe de engenharia vai direto ao ponto e elege algumas diretrizes em se tratando de escolha de uma tecnologia:

  • Keep it very simple. – Ao melhor estilo KISS (Keep It Simple, Stupid!)
  • Don’t re-invent the wheel – Né? Old but gold.
  • Go with proven and solid technologies when you can. – Sempre bom esperar um pouco para a comunidade comprar a ideia e suportar…

O que faz o Instagram Funfar

Rodam tudo em LINUX UBUNTU (11.04) em infraestrutura de servidores da Amazon (EC2).

As requisições passam por load balance que, antes ficavam em 2 server NGINX (e Round-Robin) mas, por questões de dinamismo de manutenção passaram a para o Route53, também da Amazon e mantiveram o NGINX.

Django! Instagram is Django powered. Django é um framework MVC escrito em Python e muito produtivo… Há quem diga que, na verdade, é um Framework MVT (Model View Template). Na prática, um Framework super produtivo e utilizado amplamente por Globo.com, Disqus e Pinterest. (Já trabalhei em projetos com Django e digo que é só alegria..!)

Livro Python e Django escrito por Osvaldo Santana e Thiago Gales

Curso Wecolme to the Django do Henrique Bastos

Listando Algumas das Tecnologias.

WSGI. A comunicação entre servidores de aplicação é feita com Gunicorn, (pre-fork portado do Unicorn), Mais leve, rápido e de simples implementação.

Para deploy e atividades de administração de servidor, utilizam o Fabric (SSH).

O banco de dados, para armazenar as tags, meta dados, comentários, etc. é o Postgre que tem todo o conteúdo espelhado/replicado.

vmtouch para diagnóstico e controle de cache. (parsing dos dados do vmtouch)

O sistema de notificações, quando algo novo ocorre para o usuário, é gerenciado pelo Gearman, um sistema open source que fica responsável por organizar a entrega de trabalhos a outras máquinas.

Para as notificações propriamente ditas, utilizam o pyapns, um sistema universal para notificações em plataforma Apple. Não sei se, agora, com o app para Android, eles ainda utilizam esse sistema.

O monitoramento do sistema é feito pelo famoso Pingdom.

Para registro e log de erros do Python, utilizam o Sentry.

Para controlar as notificações dos incidentes e erros, Pager Duty. Um web app que adiciona as notificações SMS e ligações aps sistemas de monitoramento.

Munin, com vários plugins feitos pelo próprio pessoal do Instagram, com o Framework do Python Munin, para análises de tendências nos registros. (Fotos postadas por minuto, signups por minuto…)

E lá no blog deles tem o post na íntegra se quiserem conferir: http://bit.ly/IGtech1

Deixe um comentário