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:
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..!)
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
You must be logged in to post a comment.