Tecnologia

Ξ Deixe um comentário

As tecnologias que rodam o Instagram

publicado por Renzo Colnago

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..!)

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

Autor

Renzo Colnago é Administrador de Empresas, Gerente de Projetos e Desenvolvedor de Produtos. Possui experiência em diferentes áreas da tecnologia e da internet: Telecom, webapps, aplicativos de mídia social e de comércio eletrônico. Particularmente interessado em desenvolvimento de negócios digitais. Site: blog.renzocolnago.com

Renzo Colnago

Comentários

You must be logged in to post a comment.

Busca

Patrocínio

Publicidade



Siga-nos!

Newsletter: Inscreva-se

Para se inscrever em nossa newsletter preencha o formulário.

Artigos Recentes