Propaganda
As redes sociais são a arte de se conectar com aqueles que compartilham interesses em comum. Sua "rede" é uma comunidade que ajuda a manter você unido com os outros e oferece muitos benefícios. A rede através de sites de mídia social revolucionou a forma como usamos a Internet e está na vanguarda do que chamamos agora de Web 2.0.
Facebook é rede social. As pessoas estão “compartilhando o Facebook” há cerca de 6 anos, fazendo Facebook a rede social mais usada com mais de 350 milhões de usuários em todo o mundo. Mas como funciona o Facebook?
Neste artigo, discutirei o funcionamento interno do Facebook, cobrindo suas arquitetura e infraestrutura de front-end / back-end ””, as porcas e os parafusos que mantêm o Facebook unido.
Como o Facebook funciona? ”” O front end
O Facebook usa uma variedade de serviços, ferramentas e linguagens de programação para compor sua infraestrutura principal. No front-end, seus servidores executam uma pilha LAMP (Linux, Apache, MySQL e PHP) com o Memcache. Não é um especialista em ciência da computação? Vamos dar uma olhada exatamente no que isso significa.
Linux e Apache

Esta parte é bastante auto-explicativa. Linux é um kernel de sistema operacional de computador semelhante ao Unix. É de código aberto, muito personalizável e bom para segurança. O Facebook executa o sistema operacional Linux nos servidores HTTP Apache. Apache também é gratuito e é o servidor da web de código aberto mais popular em uso.
MySQL

Para o banco de dados, o Facebook utiliza o MySQL devido à sua velocidade e confiabilidade. MySQL é usado principalmente como um armazenamento de valor-chave, pois os dados são distribuídos aleatoriamente entre um grande conjunto de instâncias lógicas. Essas instâncias lógicas são espalhadas pelos nós físicos e o balanceamento de carga é feito no nível do nó físico.
No que diz respeito às personalizações, o Facebook desenvolveu um esquema de particionamento personalizado no qual um ID global é atribuído a todos os dados. Eles também têm um esquema de arquivamento personalizado que se baseia na frequência dos dados recentes e recentes por usuário. A maioria dos dados é distribuída aleatoriamente.
PHP

O Facebook usa PHP porque é uma boa linguagem de programação da web com amplo suporte e uma comunidade de desenvolvedores ativa e é boa para iteração rápida. PHP é uma linguagem de script dinamicamente digitada / interpretada.
Memcache

Memcache é um sistema de armazenamento em cache de memória usado para acelerar sites dinâmicos direcionados a bancos de dados (como o Facebook), armazenando em cache dados e objetos na RAM para reduzir o tempo de leitura. Memcache é a principal forma de cache do Facebook e ajuda a aliviar a carga do banco de dados.
Ter um sistema de cache permite que o Facebook seja tão rápido quanto na recuperação de seus dados. Se não precisar acessar o banco de dados, apenas buscará seus dados no cache com base no seu ID de usuário.
Desvantagens do uso do LAMP
O Facebook percebeu que há desvantagens no uso da pilha LAMP. Notavelmente, o PHP não é necessariamente otimizado para sites grandes e, portanto, difícil de escalar. Além disso, não é a linguagem de execução mais rápida e a estrutura de extensão é difícil de usar.

Mike Schroepfer, vice-presidente de engenharia do Facebook, fez recentemente uma entrevista na EmTech @ MIT sobre isso. "Escalar qualquer site é um desafio", disse Schroepfer, "mas escalar uma rede social tem desafios únicos".
Ele continuou dizendo que, diferentemente de outros sites, você não pode adicionar mais servidores para resolver o problema porque do "enorme conjunto de dados interconectado do Facebook". Novas conexões são criadas o tempo todo devido à atividade do usuário.
O Facebook cresceu tão rapidamente que frequentemente enfrenta problemas relacionados a consultas de banco de dados, armazenamento em cache e armazenamento de dados. O banco de dados deles é enorme e amplamente complexo. Por conta disso, o Facebook iniciou muitos projetos de código aberto e serviços de back-end.
Como o Facebook funciona? ”” O back-end
Os serviços de back-end do Facebook são escritos em uma variedade de linguagens de programação diferentes, incluindo C ++, Java, Python e Erlang. Sua filosofia para a criação de serviços é a seguinte:
1. Crie um serviço se necessário
2. Crie uma estrutura / conjunto de ferramentas para facilitar a criação de serviços
3. Use a linguagem de programação correta para a tarefa
Uma lista de todos os desenvolvimentos de código aberto do Facebook pode ser encontrada aqui. Vou discutir algumas das ferramentas essenciais que o Facebook desenvolveu.
Parcela (protocolo)
Thrift é uma estrutura leve de chamada de procedimento remoto para o desenvolvimento de serviços escaláveis em vários idiomas. O Thrift suporta C ++, PHP, Python, Perl, Java, Ruby, Erlang e outros. É rápido, economiza tempo de desenvolvimento e fornece uma divisão do trabalho em servidores e aplicativos de alto desempenho.
Scribe (servidor de log)
Escriba é um servidor para agregar dados de log transmitidos em tempo real a partir de muitos outros servidores. É uma estrutura escalável útil para registrar uma ampla variedade de dados. Ele é construído sobre o Thrift.
Cassandra (banco de dados)

Cassandra é um sistema de gerenciamento de banco de dados projetado para lidar com grandes quantidades de dados espalhados por muitos servidores. Ele possui o recurso de Pesquisa na caixa de entrada do Facebook e fornece um armazenamento estruturado de valores-chave com consistência eventual.
HipHop para PHP
HipHop para PHP é um transformador de código fonte para código de script PHP e foi criado para economizar recursos do servidor. O HipHop transforma o código-fonte PHP em C ++ otimizado. Depois de fazer isso, ele usa o g ++ para compilá-lo no código da máquina.
Conclusão
Em poucas palavras, é o Facebook. Este artigo poderia facilmente ter 37 páginas a mais se eu fosse entrar em mais detalhes, mas para responder à pergunta "Como o Facebook funciona?" Eu acho que isso será suficiente. Se você olhar além de todos os recursos e inovações, a principal idéia por trás do Facebook é realmente muito básica ””, mantendo as pessoas conectadas. O Facebook percebe o poder das redes sociais e está constantemente inovando para manter os serviços deles melhores nos negócios.
Você achou este artigo útil? Deixe seus pensamentos, comentários e idéias abaixo!
Steve, gerente de comunidade da VaynerMedia, é apaixonado por mídias sociais e construção de marcas.