Explorando o software por trás do Facebook, a maior rede social do mundo

VN:RO [1.9.11_1134]
quarta-feira, 28 d julho d 2010
Por Rafael Barbolo, Coop10. Siga no Twitter

Na escala em que o Facebook opera, muitas abordagens tradicionais para servir conteúdo web falham ou não são práticas. O desafio para os engenheiros do Facebook tem sido manter o site no ar com mais de meio bilhão de usuários ativos.

Este artigo analisa técnicas e softwares que o Facebook usa para funcionar nesse nível.



Facebook: desafio de escalabilidade

Antes de entrar em detalhes, aqui estão alguns factóides para dar uma idéia do desafio de escalabilidade com o qual o Facebook tem que lidar:


Softwares para escalar

A infraestrutura de software que o Facebook usa pode ser vista como a de um site LAMP, mas com melhorias e extensões de vários serviços. Por exemplo:

  • O Facebook usa PHP, mas tem um compilador que permite que o sistema execute código nativo nos servidores web, aumentando significativamente seu desempenho;

  • O Facebook usa Linux, mas é um Linux otimizado para garantir alta vazão de rede;

  • O Facebook usa MySQL, mas principalmente para persistência de chaves-valores (Hashes), movendo lógicas de consultas e JOINS para a camada de aplicação dos servidores web em que otimizações são mais fáceis de implementar, usando por exemplo caches em memória;

  • Por fim, há sistemas customizados, como o Haystack, um objeto de armazenamento altamente escalável usado para servir a imensa quantidade de fotos do Facebook, e o Scribe, um sistema de logging (registro de ações) que consegue operar na escala do Facebook (nada trivial).

Vamos ao que interessa. Abaixo são apresentados os softwares (alguns) que o Facebook usa para fornecer a todos nós a maior rede social do mundo.

Memcached

O Memcached é no momento um dos softwares mais famosos na Internet. É um sistema de cache em memória distribuído que o Facebook (e vários outros sites) usam como uma camada de cache entre aplicação web e banco de dados (já que acesso a disco rígido é relativamente lento). Ao longo dos anos, o Facebook realizou diversas otimizações no Memcached e nos softwares que rodam em conjunto com ele.

O Facebook roda milhares de servidores Memcached com dezenas de tearabytes de dados em cache a todo momento. É provavelmente a maior instalação de Memcached do mundo.

HipHop for PHP

PHP é uma linguagem interpretada e por isso seu código quando executado é relativamente lento quando comparado com código que executa nativamente. O HipHop converte PHP em código C++ que pode ser então compilado e apresentar um desempenho melhor. Isso permite que o Facebook aproveite muito melhor seus servidores web já que dependem demais de PHP para servir conteúdo.

Uma pequena equipe de engenheiros no Facebook (inicialmente, apenas três) passou 18 meses desenvolvendo o HipHop, que agora é usado em produção.

Haystack

Haystack é o sistema de armazenamento e recuperação de fotos de alto desempenho do Facebook (a rigor, o Haystack é um armazenador de objetos, então ele não armazena apenas fotos). Existem mais de 20 bilhões de fotos no Facebook e cada uma é armazenada em quatro diferentes resoluções, resultando em mais 80 bilhões de fotos.

O desafio do Haystack não é apenas armazenar bilhões de fotos, mas também executar tarefas com elas em que o desempenho é crítico, como por exemplo remoção, atualização ou acesso.

BigPipe

O BigPipe é um sistema dinâmico para servir páginas web que o Facebook desenvolveu. Ele é capaz de dividir uma página em seções (chamadas “pagelets“) e servi-las em paralelo com desempenho ideal.

Por exemplo, a janela de chat é carregada separadamente, o feed de notícias é carregado separadamente, e assim por diante. Esses “pagelets” podem ser carregados em paralelo, que é de onde vem o ganho de desempenho, e os usuários recebem um site que funciona mesmo se uma parte dele for desativada ou estiver com defeitos.

Cassandra

Cassandra é um sistema de armazenamento distribuído baseado no projeto do BigTable. Ele é um dos filhos de destaque do movimento NoSQL e se tornou open source (virou um projeto Apache). O Facebook o usa na pesquisa Inbox.

Além do Facebook, uma série de outros sites também o usam, como o Twitter e o Digg. É um sistema capaz de armazenar uma quantidade imensa de dados sem comprometer o tempo de busca e acesso a eles.

Scribe

Scribe é um sistema de logging flexível e escalável que o Facebook usa para uma infinidade de propósitos internos. Ele foi criado para ser capaz de registrar todas as ações ocorridas no Facebook, e automaticamente lida com novas categorias de ações registradas conforme aparecem (o Facebook tem centenas).

Hadoop e Hive

O Hadoop é uma implementação open source de MapReduce que permite a execução de cálculos em uma quantidade massiva de dados. O Facebook o usa para análise de dados de sua rede. O Hive é uma interface de acesso ao Hadoop através de consultas SQL, facilitando seu uso, e teve origem dentro do Facebook.

Tanto o Hadoop quanto o Hive são open source (projetos Apache) e são usados por uma série de grandes sites, como o Yahoo e o Twitter.

Thrift

O Facebook usa diferentes linguagens para os seus diferentes serviços. PHP é usada para front-end, Erlang é usada para Chat, Java e C++ são usados em diversas áreas. Thrift é um framework cross-language desenvolvido internamente que junta todas as diferentes linguagens, permitindo que elas conversem entre si. Isso facilita enormemente o desenvolvimento cross-language no Facebook.

O Facebook tornou o Thrift open source e adicionou suporte a mais linguagens de programação.

Varnish

O Varnish é um acelerador HTTP, que pode agir como um balanceador de carga e também realiza cache de conteúdo para servi-lo rapidamente.

O Facebook usa o Varnish para servir fotos, lidando com bilhões de requisições todos os dias. Como quase tudo que o Facebook usa, o Varnish também é open source.


Outras coisas que ajudam o Facebook a funcionar bem

Foram mencionados os softwares que constituem o Facebook e o ajudam a escalar. Mas operar um sistema tão grande é uma tarefa complexa, por isso serão listadas outras coisas que ajudam o Facebook a funcionar sem problemas:

Lançamento gradual de novas funcionalidades e execuções no escuro

O Facebook tem um sistema chamado de “Gatekeeper” (porteiro) que permite que eles rodem diferentes versões do sistema para diferentes conjuntos de usuários. Ele permite que o Facebook lance novas funcionalidades gradualmente e que testes A/B sejam realizados com usuários.

O “Gatekeeper” também é responsável por realizar o que é chamado de “dark launches” (lançamentos no escuro), que é a ativação de elementos de uma nova funcionalidade antes de ela ir pro ar. É uma maneira de realizar testes de carga do sistema antes de uma funcionalidade ser oficialmente lançada. Normalmente os “dark launches” são realizados duas semanas antes do lançamento oficial da funcionalidade.

Monitoramento do sistema em produção

O Facebook cuidadosamente monitora seu sistema e o desempenho de cada função PHP executada em ambiente de produção. Com isso é possível projetar um perfil do sistema que está no ar com a ajuda de uma ferramenta chamada XHProf e identificar gargá-los ou áreas que estão operando incorretamente.

Desativação gradual de recursos para aumento de desempenho

Se o Facebook tiver algum problema de desempenho, existe um grande número de recursos não-críticos que podem ser desativados para aumentar o desempenho de funcionalidades vitais da rede social. Desta forma, em uma situação de emergência, o núcleo da rede social poderá continuar funcionando normalmente.

Coisas que não foram mencionadas

O hardware usado pelo Facebook não entrou em discussão neste artigo, mas é um aspecto importante de analisar quando se pensa em escalabilidade. Por exemplo, o Facebook usa a rede CDN para servir conteúdo estático e possui enormes data centers que hospedam milhares de servidores.

E além do que foi mencionado, existem diversos outros softwares envolvidos na operação do Facebook. Neste artigo foram destacadas as escolhas mais interessantes que o Facebook fez.


Facebook e projetos open source

Antes de encerrar o artigo, é importante mencionar o quanto o Facebook, assim como outras grandes empresas de Internet, apoia projetos open source. O Facebook não apenas usa e contribui com software open source como Linux, Memcached, MySQL e Hadoop, como também desenvolve internamente diversas ferramentas que são disponibilizadas como projetos open source.

Uma lista com todos os projetos open source em que o Facebook atua pode ser encontrada na página Open Source – Desenvolvedores do Facebook.


Mais desafios de escalabilidade por vir

O Facebook cresce a passos incríveis. Sua base de usuários aumenta quase que exponencialmente e já superou 500 milhões de usuários. Ele tem mantido uma taxa de cerca de 100 milhões de novos usuários a cada 6 meses.

O rápido crescimento significa que o Facebook vai ter problemas e diversos desafios de desempenho para apresentar cada vez mais páginas, buscas, imagens, mensagens e todos os outros recursos com os quais os usuários interagem. Para um site como o Facebook, este sempre será um fato com o qual ele terá que viver, e seus engenheiros estarão sempre atentos e criando novas maneiras de fazer o sistema escalar.

Vamos acompanhar o que os engenheiros do Facebook estão desenvolvendo! Com certeza surgirão coisas interessantes, afinal de contas, eles estão escalando uma montanha que muitos de nós podemos apenas sonhar; um site com mais pessoas do que a maioria dos países. Quando isso acontece, é preciso ser criativo.



Este artigo é uma adaptação/atualização para o português do artigo em inglês Exploring the software behind Facebook, the world’s largest site.

VN:F [1.9.11_1134]
Rating: 4.8/5 (45 votes cast)
Explorando o software por trás do Facebook, a maior rede social do mundo, 4.8 out of 5 based on 45 ratings
Related Posts with Thumbnails

Rafael Barbolo
Rafael Barbolo

Engenheiro de Computação e administrador do Bit a Bit. Empreendedor desde 2007. É sócio e cofundador do Kauplus, plataforma de e-commerce que oferece inovadoras experiências de compras online.

Tags: , , , , , , , , , , , , , , , , , , , , , , , ,

77 Comentários para “Explorando o software por trás do Facebook, a maior rede social do mundo”

  1. Tobias

    “O Facebook cresce a passos incríveis. Sua base de usuários aumenta quase que exponencialmente e já superou 500 milhões de usuários. Ele tem mantido uma taxa de cerca de 100 milhões de novos usuários a cada 6 meses.”

    Não seria 500 bilhoes de usuarios?

    VA:F [1.9.11_1134]
    Rating: -35 (from 37 votes)
    #210
    • Tobias,

      Não entendi a inconsistência.

      Não tem como uma rede social ter 500 bilhões de usuários reais. É impossível por causa do número de pessoas no planeta, concorda?

      O Facebook atingiu a marca de 500 milhões de usuários recentemente e nos últimos tempos tem mantido um crescimento de 100 milhões de usuários a cada 6 meses.

      Sinta-se à vontade para explicar melhor sua dúvida.

      VN:F [1.9.11_1134]
      Rating: +17 (from 17 votes)
      #211
    • PP

      Tobias, o planeta terra tem 7 bilhoes de habitantes.
      Metade deles nunca usou internet na vida.

      VA:F [1.9.11_1134]
      Rating: +14 (from 14 votes)
      #822
  2. O blog High Scalability postou um link para um artigo do diretor de Engenharia do Facebook, que comenta como eles conseguiram escalar a aplicação para funcionar com 500 milhões de usuários:

    http://www.facebook.com/note.php?note_id=409881258919

    VN:F [1.9.11_1134]
    Rating: +5 (from 5 votes)
    #212
  3. Muito bom! Torcendo pra precisar a começar a usar essas coisas para escalar :P

    Triste ver que até hj o Twitter, muito mais simples e com uma quantidade muito menor de usuários não consegue ser estável até hj.

    Conclusão:

    PHP >>> Ruby on Rails

    VA:F [1.9.11_1134]
    Rating: +7 (from 7 votes)
    #215
    • Não concordo com sua afirmação. Não acho que o Twitter é muito mais simples e também não acho que RoR é um problema de escalabilidade.

      Os últimos artigos que li sobre o Twitter explicam alguns pontos que eles usaram para escalar. Eles começaram com um sistema Ruby on Rails completo, depois migraram o backend para Java e C. Ainda assim, não conseguiam dar conta dos tweets, e migraram quase tudo para Scala. O Frontend continua em RoR.

      Eles usam Memcached como “banco de dados” e MySQL como backup. Inclusive o Engenheiro responsável por infraestrutura, Evan Weaver, é commiter do memcached e desenvolveu a lib com melhor desempenho para acesso ao memcached via Ruby, a memcache-client.

      O Twitter parece simples, mas foi o primeiro sistema que conseguiu implementar busca de conteúdo em tempo real (na verdade, com atraso de até 10 segundos) com bom desempenho. E o problema deles são os picos, pois não são picos altos, mas picos EXTREMAMENTE ALTOS.

      O Facebook tem operação mais estável. Como detalhado no artigo, o Facebook possui cerca de 30 bilhões de tipos de conteúdo armazenados (entre fotos, atualizações, mensagens etc…). O Twitter recentemente anunciou que possui mais de 20 bilhões de Tweets, sendo que a maior parte desse número foi conquistada no último ano.

      Enfim, o desafio de escalar o Twitter é tão grande quanto o do Facebook.

      VN:F [1.9.11_1134]
      Rating: 0 (from 12 votes)
      #216
      • Muita coisa mudou desde esse comentário. Cerca de 3 bilhões de “curtir” são feitos diariamente. O que está escrito acima não vale mais.

        VN:F [1.9.11_1134]
        Rating: +1 (from 1 vote)
        #1024
        • Iniciante

          Entendo pouco, porem acredito que um “curtir” é equivalente a pouca informação.Enquanto 1 post do Twitter é 140 Caracteres.
          Ainda assim acredito que é um trabalho extremamente engenhoso manter um site desse, se é tão fácil por que não se candidata e revoluciona aposto que eles pagam bem -.-”

          VA:F [1.9.11_1134]
          Rating: 0 (from 0 votes)
          #1056
        • Carlos Eugênio

          Concordo com a afirmação plenamente (ambas), pois a estrutura do Twitter, uso diário e estabilidade estão abaixo das marcas conseguidas e conquistadas pelo Facebook. Não podemos cometer a injustiça de dizer que o Twitter está MUITO abaixo do Facebook, porém não podemos ser medíocres em querer nos enganar pela mídia televisiva paga em tentar nos tendenciar a dar crédito de margens próximas de popularidade, usuabilidade e dinamismo entre Twitter e Facebook. Todos sabemos que essa diferença é, no mínimo em números mais plausíveis, média.

          VA:F [1.9.11_1134]
          Rating: 0 (from 0 votes)
          #1170
  4. Roberto Fermino

    Ótimo Post! Podemos Perceber o quão complexo pode ser “um site” como a maioria dos leigos falam, achando que é tudo a mesma coisa. Mas ficou claro o alto nível de engenharia para desenhar e executar os processos.

    VA:F [1.9.11_1134]
    Rating: +3 (from 3 votes)
    #246
  5. Muito bom o post Barbolo! Parabéns!
    Muitas informações importantes para quem trabalha na área. E claro, uma fantástico exemplo de como o mundo do FreeSoftware é “TOP END”.

    Abraços

    VN:F [1.9.11_1134]
    Rating: 0 (from 2 votes)
    #251
  6. “E claro, uma fantástico exemplo de como o mundo do FreeSoftware é “TOP END”.”

    POis é, queri ver se num tivesse uma grande empresa por traz,,,, Nada contra o software livre, muito pelo contrário, mas pra chegar a nivel empresárial só da quando tem uma grande empresa ou dando suporte ou ditanto as regras, porque qualquer briga é fork atraz de fork. Mesmo assim viva o software livre, ao linux e ao c++ que ainda tem utilidade.

    VA:F [1.9.11_1134]
    Rating: 0 (from 2 votes)
    #465
  7. Quite interesting article. Your web pages is rapidly becoming one of my favorites.

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #902
  8. PANDA

    Eu achando q o FACE usava ORACLE!

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #944
  9. Belíssimo post. Parabéns!

    VA:F [1.9.11_1134]
    Rating: +2 (from 2 votes)
    #1022
  10. Ótimo post. Parabéns!

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #1023
  11. Vinicius

    Rafael Barbolo, se hoje eu fosse criar uma rede social, o que inicialmente iria precisar?

    VA:F [1.9.11_1134]
    Rating: +2 (from 2 votes)
    #1062
    • Vinicius, é muito difícil responder sua questão. Vou deixar o ex-chefe de tecnologia do Facebook responder:

      http://www.quora.com/Facebook-1/How-long-would-it-take-to-build-Facebook-as-of-July-2011

      VN:F [1.9.11_1134]
      Rating: +2 (from 2 votes)
      #1063
    • Carlos Eugênio

      Gostei imensamente da pergunta, pois meu objetivo a que estou trabalhando a 2anos e meio é criar isso (só que como o projeto inicial, somente interno estilo intranet mas com uma “cara de face” {fechada}), acho que meu inglês instrumental dá para ler o link que o Rafael Barbolo deixou e vou ver o que posso aproveitar.
      Ah, comentei acima e esqueci de parabenizá-lo Rafael pelo post. Ao mesmo tempo aproveito para desejar sucessos na sua carreira, pois você merece! Vinícius, valeu pela pergunta!

      VA:F [1.9.11_1134]
      Rating: +1 (from 1 vote)
      #1171
  12. Rafael

    Olá! Não consigo acessar meu facebook! Quando abro ele, a página fica em branco e diz que o BigPipe é nulo ou não existe! Como faço para resolver isso? É virus?

    VA:F [1.9.11_1134]
    Rating: -2 (from 4 votes)
    #1067
  13. Iran Eduardo

    Um belissimo artigo… Alguem sabe as tecnologias por tras do google ou do orkut?

    VA:F [1.9.11_1134]
    Rating: +2 (from 2 votes)
    #1084
  14. Edgard S. Neto

    Boa noite Rafael,estou tendo probemas com o Facebook abro a pagina e la aparece uma msm ,BIGPIPE é nulo ou não é um objeto,como faço pr corrigir isto,desde já agradeço,abrç

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #1125
  15. Edgard S. Neto

    Rafael muito obrigado,so consegui abrir com firefox,valeu a dica,abrçs

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #1132
  16. liliane matos

    ola tenho os navegadoresa ie e o chrome e em nenhum dos dois estou conseguindo entrar no face.no ie dis que o bigpipe é nulo ou não é um objeto .o que faço?

    VA:F [1.9.11_1134]
    Rating: +1 (from 1 vote)
    #1133
  17. Hoch

    Facebook usando MySql? Tem certeza?

    VA:F [1.9.11_1134]
    Rating: -3 (from 3 votes)
    #1138
  18. Junior

    Ola Rafael,

    Qual tecnologia de ponta para hoje se construir um sistema web que podera ter muitos acessos simultaneos?
    Um sistema que seja estavel, usando ferramentas baratas ou de graca e estrategias de utilizacao de multiplos servidores para o servico nao correr o risco de queda dos mesmos.

    abs,

    Jr

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #1157
    • Se é uma aplicação que utiliza muita CPU, eu usaria Ruby on Rails, com módulos específicos em C se necessário. Python + Django também é uma boa opção para a sua restrição de ferramentas gratuitas (no caso, open source). Caso a aplicação utilize pouca CPU, uma plataforma orientada a eventos seria a melhor escolha, as melhores opções na minha opinião são Node.js (Javascript), EventMachine (Ruby) e Twisted (Python).

      Esse é o tipo de pergunta que eu prefiro responder com: use o que você quiser. É muito improvável que você terá um problema de escalabilidade nos primeiros meses de vida de sua aplicação. E se você se preocupar muito com essa questão, é capaz que você demore muito para lançar seu produto.

      VN:F [1.9.11_1134]
      Rating: 0 (from 0 votes)
      #1224
  19. Vagner

    O NodeJS será a solução de todos os problemas :D

    VA:F [1.9.11_1134]
    Rating: 0 (from 2 votes)
    #1159
  20. Daiana Avila

    Olá Rafael, o que está descrito acima sobre o Facebook, ainda está valendo? “Explorando o software por trás do Facebook, a maior rede social do mundo”
    Você sabe qual o banco de dados utilizado pelo Google??

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #1161
    • H11

      Daiana, veja o link abaixo e espero que lhe ajude. Lembre-se que independente do banco de dados (Oracle, DB2, Sql Server, MySQL, etc…), as informações são sempre gravadas em arquivo.
      http://en.wikipedia.org/wiki/BigTable

      Leia também sobre NoSQL.
      https://en.wikipedia.org/wiki/NoSQL

      Em tempo, não importa qual a tecnologia que você irá utilizar. Pesquise, estude e depois trabalhe nas suas idéias e necessidades. Todas funcionam se bem aplicadas.

      VA:F [1.9.11_1134]
      Rating: 0 (from 0 votes)
      #1178
    • Daiana, a maioria das soluções evoluíram. O Facebook criou um portal para apresentar as soluções (muitas open source) que utilizam: https://code.facebook.com/projects/

      O Google utiliza vários bancos de dados diferentes. Existe um portal criado pelo Google com vários artigos científicos produzidos por eles: http://research.google.com/pubs/papers.html. Por meios desses artigos, é possível conhecer várias das soluções que eles utilizam.

      Eu, particularmente, gosto muito de um artigo publicado no fim de 2013 sobre o F1, um banco de dados híbrido (é não relacional, mas respeita as regras importantes de um banco de dados relacional): http://research.google.com/pubs/pub41344.html. Estão surgindo algumas soluções desse tipo e acredito que vão se tornar popular nos próximos anos.

      VN:F [1.9.11_1134]
      Rating: 0 (from 0 votes)
      #1225
  21. Fernando S.

    Ola.
    Sabe me informar que linguagem ou é utilizado nos jogos do facebook ?

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #1166
    • Fernando, os jogos do Facebook não são desenvolvidos pelo Facebook. É possível utilizar diferentes tecnologias para isso e cada empresa escolhe a que entender que é mais adequada.

      VN:F [1.9.11_1134]
      Rating: -1 (from 1 vote)
      #1226
  22. Elaine

    OI tira uma duvida minha,eu entro no face e so aparece o cabeçario mais o resto da pagina fica em branco, ta dizendo que o big pipe nao esta funcionando, e so no micro,pois no tablet ta funcionando normal. me ajuda
    Obrigado

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #1168
  23. Flavio

    boa noite RAFAEL
    gostaria de saber qual o melhor software para criação de interface de uma rede social(no caso do facebook qual ele utilizou)?

    obrigado

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #1173
  24. kkkk nao sem nem HTML mt bem, e so de ler esse conteudo ja nem quero mais aprender a mecher com sites. Pensava que sabia alguma coisa e nao sem nem 1% kkkkkkKKKKKKKKKKK

    VA:F [1.9.11_1134]
    Rating: +1 (from 1 vote)
    #1190
  25. Ibisen

    Olá, Rafael, cara post incrível, quando haverá uma atualização ou o lançamento de um post no cenário atual?

    Abraços

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #1192
  26. Eder

    Olá, Rafael, o facebook faz uso do Thrift para juntar várias linguagens…
    Nesse sentido, o que você diz sobre a linguagem Python, que promete oferecer
    recursos simplificados de integração com várias linguagens.
    Além disso, é uma linguagem nativa do linux, sendo assim, qual a sua opinião
    sobre a utilização dessa linguagem para o desenvolvimento de um sistema
    como o facebook?

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #1199
    • Eder,

      Eu acho Python uma linguagem muito boa. Ela não é tão nova assim, foi criada em 1991. O seu criador, Guido van Rossum, trabalhou no Google por muitos anos e, recentemente, juntou-se ao time do Dropbox. Essas duas empresas utilizam Python em muitos de seus projetos.

      Eu acho que a utilização de Python para a criação de um sistema como o Facebook é uma boa escolha :)

      Vale comentar que eu não considero que a escolha da linguagem seria o maior desafio para a construção de um sistema complexo. Definições de arquitetura, infraestrutura e modelos de dados podem ser mais importantes do ponto de vista técnico.

      VN:F [1.9.11_1134]
      Rating: 0 (from 0 votes)
      #1229
  27. Roberto

    Olá, eu solicitei a exclusão do meu registro( tudo referente a minha máquina x Facebook), mandei um e-mail para o privacy@facebook.com, você acha que eles vão excluir?

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #1200
  28. Eu quria saber como faço para colocar eus jogos no facebook?isto é possivel?

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #1208
  29. Reinaldo

    Olá Rafael Boa noite! O facebook inicio a utilização da inteligência artificial, Qual o domínio desta aplicação de IA? Qual tecnologia foi utilizada?

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #1217
    • Olá, Reinaldo.

      Acredito que faz muito tempo que o Facebook usa inteligência artificial. Eles possuem a maior base de dados de pessoas do mundo e uma das maiores bases de conteúdo, e isso permite que você faça muitas coisas. Alguns problemas conhecidos em que eles trabalharam foram: reconhecimento de faces, recomendações (artigos, amigos, páginas, anúncios etc…), score (para fazer ranking do feed de notícias), traduções e análise semântica de conteúdo não estruturado (posts, comentários, etc…).

      O Facebook também já criou competições públicas com dados no Kaggle (Data Science). A primeira foi: http://www.kaggle.com/c/FacebookRecruiting

      Aqui você pode encontrar a lista de projetos open source do Facebook:
      https://code.facebook.com/projects/

      Em geral, quando falamos de IA, não pensamos muito nas tecnologias (podem ser várias e estruturadas de diversas formas), mas pensamos mais nas técnicas e algoritmos. Alguns que têm resolvido problemas muito bem são Neural Networks, SVM, KNN, Random Forests, Natural Language Processing entre outros.

      Por fim, fica também um link de competições públicas muito relevantes em classificação de dados:
      http://rodrigob.github.io/are_we_there_yet/build/classification_datasets_results.html
      (eu gosto muito do desafio de descobrir qual o número da casa a partir de fotos do Street View, é impressionante que o melhor resultado tenha 98% de acertos)

      Você poderia comentar um pouco sobre o porquê da sua pergunta? Pretende trabalhar com IA?

      Um abraço.

      VN:F [1.9.11_1134]
      Rating: 0 (from 0 votes)
      #1219
  30. teste

    teste teste teste

    VA:F [1.9.11_1134]
    Rating: -1 (from 1 vote)
    #1247
  31. Junior Bahás

    Rafael, primeiramente parabéns. Não só pelo artigo, mas pelo espaço e atenção aos leitores.

    Tenho uma ideia de Rede Social que me assombra a 6 anos, tentei por diversas vezes encontrar um programador que pudesse executa-la, mas não obtive êxito, principalmente porque na minha cidade, Belém do Pará, temos pouca mão de obra. Resolvi estudar programação e estou colocando em prática. Comprei uma versão de uma rede social Open Source parecida a do Facebook, programada em para adiantar, claro que sem muitas funções, mas com o que preciso para iniciar o meu projeto. Nesse momento estou acrescentando novas funções em PHP, e pelo que pesquisei a respeito de um módulo que necessito, vou ter que implementar em Ajax.
    Lendo o seu artigo a respeito do facebook entendi o grau de dificuldade em fazer uma rede do porte do face, mas também entendo que eles só usam todos estes programas por conta da real necessidade (no começo não devia ser assim), tem que ter demanda de usuários, conteúdo, etc… Minha dúvida é:

    Eu conseguiria fazer uma rede social como o Facebook, usando apênas PHP?

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #1251
    • Olá, Junior.

      Obrigado pelo comentário. O post está completando 4 anos e continua bem lido, isso é muito gratificante pra mim.

      Sobre sua dúvida, a resposta é: depende.

      Criar uma rede social simples, para poucos usuários, com funcionalidades limitadas, com alguns problemas de desempenho, de segurança, de usabilidade e com alguns bugs é possível sabendo apenas PHP. Eu entendo que PHP inclui tudo que é necessário para um desenvolvimento web básico em PHP, ou seja: HTML, CSS, JavaScript (+ AJAX), MySQL, PHP. Seria ainda desejável saber Git, jQuery, algum framework de frontend web (Bootstrap ou Foundation) e algum framework de organização de código em PHP (eu não sou a pessoa mais indicada para sugerir um nesta linguagem).

      Para criar algo confiável, com alta disponibilidade, com boa usabilidade, fácil de dar manutenção, seguro etc… seria necessário ter muito mais conhecimentos. Em uma faculdade de ciência ou engenharia de computação, por exemplo, aprende-se muitos cálculos, álgebras, lógica etc… antes de se começar a programar qualquer sistema. Isso é necessário? Depende do que você quer. No seu caso, eu diria que pra começar não é necessário, mas se a sua rede social der certo e crescer, você vai precisar se especializar mais ou contratar alguém que tenha essas competências.

      No caso do Facebook em si, também seriam necessários diversos conceitos gerais de computação para se construir algo no mesmo nível: sistemas operacionais, linguagens e compiladores, inteligência artificial, arquitetura/organização de sistemas digitais, engenharia de software, etc.

      Eu recomendo que você veja os cursos disponíveis nos links abaixo, pois a qualidade é excelente:
      https://www.udacity.com/
      https://www.coursera.org

      Se quiser perguntar algo mais, fique à vontade.

      Um abraço e boa sorte na sua rede social! Depois compartilhe o endereço aqui.

      VN:F [1.9.11_1134]
      Rating: 0 (from 0 votes)
      #1252
      • Junior Bahás

        Sempre que pensamos em rede social, nos vem à cabeça o facebook, e isso nos remete a várias barreiras, pois tentamos sempre fazer analogias. Na verdade, inicialmente não precisarei de inteligencia artificial, o que precisarei é implantar códigos de para geolocalização, e essa, aparentemente, é a parte mais complicada. Até ler o seu artigo, tinha muitas dúvidas sobre a possibilidade de misturar de vários programas na mesma página. Como comecei uma pesquisa recentemente e pretendo me aprofundar, inclusive fazer uma faculdade a fim, não queria começar pelo caminho errado (programa), mas como foi o caso do twitter, percebo que pode haver a troca do programa posteriormente quando necessário, sem afetar a estrutura.

        VA:F [1.9.11_1134]
        Rating: 0 (from 0 votes)
        #1253
  32. estenio

    eu queria saber como o facebook faz, para armazenar tantos amigos em uma conta

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #1259
  33. Boa tarde Rafael. São tantas engenharias, tecnologias e conhecimentos que até fiquei desanimado! Estou a configurar o phpfox para usar como minha rede social, mas assim, com tantas engenharias e softwares, creio eu que não é pra minha alçada! Mas mesmo assim penso positivo e por isso estou fazendo este comentário, para aproveitar e pedir-lhe uns conselhos. Rafael, sem ter de usar tanta tecnologias, é possível eu colocar minha rede social no ar? Se sim, por favor, me dê umas orientações . . . ficarei eternamente agradecido. Seu conhecimento é vasto e creio que podes me orientar. Parabéns pelo seu empenho e pela sua capacidade e conhecimentos. Como diz um certo ditado popular: “Se melhorar estraga”! Seu artigo aqui é sensacional! Caso venha me orientar, pode ser por email, se preferires! Obrigado pelo espaço concedido aqui . . . Abraços!

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #1291
    • Olá, Ademar.

      A ideia do post não era desanimar, mas sim ANIMAR!!! =D

      Eu gostaria de aproveitar este comentário para motivá-lo a persistir na sua ideia. Não desista!

      O Facebook é uma rede social diferente, extremamente complexa, com requisitos muito específicos, diferente da realidade de outras redes sociais. Nenhuma rede social começa com 1 bilhão de usuários, com bilhões de atividades diárias, com bilhões de faturamento.

      A mensagem que quero deixar é que você não precisa construir o Facebook para ter uma rede social. Você pode construir algo muito mais simples e provavelmente vai atender muito bem as suas necessidades.

      Fico à disposição.

      Um abraço.

      VN:F [1.9.11_1134]
      Rating: +2 (from 2 votes)
      #1292
  34. Cara… to com um probleminha aqui com o meu Facebook,,,! ele nao carrega , e nao consigo mexer em quase nada,, ele ta tipo travado, entra normal, mas fica branco, ele não responde os Comandos, será o que pode ser isso moço.. O Feed de noticias não carrega nada, problema com a internet não é,, ela ta rapida demais… vc que é o genio, da uma ajuda aqui moço. depois pago um Doce..kk mas é serio o trem aq ta estranho…

    VA:F [1.9.11_1134]
    Rating: +1 (from 1 vote)
    #1315
  35. Maiara

    Ola!
    Sabe me dizer o que o facebook usa paea segurança em Android e iOS?

    VA:F [1.9.11_1134]
    Rating: -1 (from 1 vote)
    #1327
  36. Luiz Claudio

    Opa, blz?
    Adorei o post, foi de muita valia e muito interessante, todavia não pude deixar de notar que a data de publicação do mesmo é de 6 anos atras rsrs

    Seria muito bom mesmo uma atualização quanto ao tema…

    desde já grato.

    VA:F [1.9.11_1134]
    Rating: +1 (from 1 vote)
    #1345
  37. Andre Carvalho

    Olá Rafael,
    Primeiramente, parabéns pelo seu post. Muito Ilustrativo, e ainda que tenha sido escrito a quase 6 anos ainda tem muita importância para aqueles que tem alguma idéia que precise ser implementada “ala facebook”.
    Em relação as tecnologias utilizadas, mudou muito de quando vc escreveu o seu artigo para cá?

    Obrigado.

    VA:F [1.9.11_1134]
    Rating: -1 (from 1 vote)
    #1351
  38. julio

    como eu posso invetar um site ou aplicativo quase semelhante ao do facebook

    VA:F [1.9.11_1134]
    Rating: -1 (from 1 vote)
    #1560
  39. Fantastic website you have here but I was curious about if you knew of any discussion boards that cover
    the same topics talked about in this article?

    I’d really love to be a part of online community where I can get comments from other knowledgeable people that share the same interest.
    If you have any suggestions, please let me know. Cheers!

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #5779
  40. You could definitely see your expertise within the work
    you write. The sector hopes for more passionate writers like you who aren’t afraid to mention how they believe.

    Always go after your heart.

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #5799
  41. At this time it seems like Drupal is the preferred blogging platform available
    right now. (from what I’ve read) Is that what you’re using on your blog?

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #5803
  42. Right here is the perfect web site for anybody who really wants to understand this topic.
    You realize a whole lot its almost tough to argue with you (not that I
    really will need to…HaHa). You definitely put a fresh spin on a topic
    that’s been written about for decades. Excellent stuff, just wonderful!

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #6365
  43. Dos bilhões usuários facebook 20% são falsos e/ou fake….

    Show de bola… GAÚCHO GNU/Linux

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #6570
  44. An outstanding share! I have just forwarded this onto a coworker who had been doing a little homework on this.

    And he in fact ordered me lunch due to the fact that I discovered it for him…

    lol. So let me reword this…. Thank YOU for the meal!! But yeah, thanks for spending time to discuss this matter
    here on your web site.

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #9249
  45. Thanks for finally talking about > Explorando o software por trás do
    Facebook, a maior rede social do mundo | Bit a Bit < Loved it!

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #9604
  46. O que do Acontecendo sou novo para isso,
    me deparei com este tenho encontrados -positivamente
    útil e tem auxiliado me cargas. Espero para dá um contributo & auxiliar outros usuários como
    seu auxiliado me. Trabalho grande.

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #14691
  47. filipe

    vocÊ saberia me dizer em quais áreas foram utilizadas as linguagens java e c++?

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #15323
  48. Quando alguém escreve um artigo He/she mantém o
    ideia de um usuário em sua cérebro que como um usuário pode sabe .

    Portanto é por isso que este artigo é outstdanding.
    Obrigado!

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #16341

Deixe um Comentário

Spam Protection by WP-SpamFree

Get Adobe Flash playerPlugin by wpburn.com wordpress themes