quinta-feira, 11 de novembro de 2010

"The Social Network" - linguagem usada para o Facebook

Resumo do filme
O filme fala sobre um jovem universitário de Harvard, Mark  Zuckerberg, que sempre quis pertencer a uma rede social, pois nunca foi um rapaz com muitos amigos e achava que com uma rede social poderia fazer novas amizade.
Após discutir com a sua namorada sobre o tema, vai para casa e cria uma pequena rede social ligada ao servidor da universidade, FaceMash, com o objectivo de comparar fotos das raparigas da universidade, e fotos delas mas modificadas por ele. Este, em apenas 2h tem 22 mil visitas, mas passado 4h descobrem que ele entrou na rede da Universidade e é expulso, sendo acusado de infringir regras de segurança na Internet, de privacidade, ... 
Vendo que teve sucesso, três estudantes de Harvard, Divya Narendra, Cameron Winklevoss e Tyler Winklevoss, decidiram convidar Mark para  entrar num projecto, a criação de uma rede social, HarvardConnection, para a universidade. Mark aceita o projecto mas não o realizou. Mais tarde desenvolveu com a ajuda financeira de um  amigo  Eduardo Saverin uma rede social. E em apenas 1 meses fez 2 mil linhas de código para o inicio do "The Facebook".
Pouco depois Zuckerberg, Dustin Moskovitz e Chris Hughes juntaram-se para expandir para universidades e escolas.
No final do ano lectivo, Mark e Dustin mudaram-se para Palo Alto, Califórnia, com Andrew que tinha conseguido um estágio de verão na Electronic Arts. Eles alugaram uma casa perto da Universidade de Stanford, onde se juntaram a Adam D'Angelo e Sean Parker.
Com ajuda de Sean Parket, o fundador de Napster, acabou por ter uma empresa para continuar a melhorar o Facebook.
Andrew McCollum decidiu deixar a Electric Arts para ajudar todo o tempo no desenvolvimento do Facebook e do site "irmão" Wirehog. Divya Narendra, Cameron Winklevoss e Tyler Winklevoss, proprietários do site HarvardConnection, posteriormente chamado ConnectU, entraram com uma acção judiciaria contra o Facebook reclamando a propriedade intelectual, Mark Zuckerberg teria utilizado código fonte ilegalmente do HarvardConnection, do qual ele tinha acesso. Mark depois acabou por pagar uma indemnização aos irmãos Winklevoss.
 Facebook torna-se o revolução da comunidade, Mark decide alargar os horizontes e expandir por mais países, e evoluindo cada pormenor que se lembrava. Em apenas 5 anos consegue mais de 500 mil amigos.
Tornando-se assim o bilionário mais novo do mundo.
...

Linguagem de programação usada no Facebook
Mark para criar o Facebook usou uma linguagem própria utilizado nas fanpage, o FBML Facebook Markup Language, basicamente são tags especiais que podem ser inseridas no código HTML. Essas tags permitem incluir uma grande variedade de complementos às páginas sem as complicações do HTML padrão.
O principal motivo para a utilização das tags do FBML é a integração com os serviços oferecidos pelo site, como a implementação de campos de comentários, botões de "Like", murais e tudo mais que há no Facebook.
É claro que o Facebook não foi só criado com as funções HTML, pois nem todas as funções funcionam com as fanpage, assim as tags especiais não dão hacks. 


A infraestrutura de software que Mark usou pode ser vista como a de um site LAMP (é um acrónimo para a combinação: Linux, Apache, MySQL, PHP, Perl ou Python), mas com melhorias e extensões de vários serviços.  
Mark utiliza o Memcached, que é no momento um dos softwares mais famosos na Internet, como uma camada de cache entre aplicação web e banco de dados.
PHP é uma linguagem interpretada e por isso o seu código quando executado é relativamente lento quando comparado com código que executa inicialmente. O HipHop converte PHP em código C++ que pode ser então compilado e apresentar um desempenho melhor. Isso permitiu que Mark aproveitasse muito melhor os seus servidores web já que dependem demais de PHP para servir conteúdo.
Para armazenar e recuperar fotos de alto desempenho, Mark utilizou o Haystack, que armazena em quatro diferentes resoluções e executa tarefas como por exemplo a remoção de foto, a actualização ou o acesso.  
Mark também utilizou o BigPipe, que é um sistema dinâmico que serve para páginas web. Ele é capaz de dividir uma página em secçõ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 as melhorias de desempenho, e os utilizadores recebem um site que funciona mesmo se uma parte dele for desactivada ou estiver com defeitos.
O Facebook para pesquisar Inbox usa a Cassandra que é um sistema de armazenamento distribuído baseado no projecto do BigTable. Que é um destaque do movimento NoSQL.
Mark usou o Scribe, que é um sistema de logging flexível, que o Facebook usa para uma infinidade de propósitos internos. Ele foi criado para ser capaz de registar todas as acções ocorridas no Facebook, e automaticamente lida com novas categorias de acções registadas conforme aparecem.
O Hadoop é uma implementação open source de MapReduce que permite a execução de cálculos numa quantidade execiva de dados. O Facebook usa-o para análise de dados da sua rede. O Hive é uma interface de acesso ao Hadoop através de consultas SQL, facilitando o seu uso, que também foi aplicado dentro do Facebook.
Mark usou 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 muito o desenvolvimento das cross-language no Facebook.
Mark usou o Varnish (que é um acelerador HTTP, que pode agir como uma alteração de estado da carga e também realiza cache de conteúdo para servi-lo rapidamente) para servir fotos, lidando com milhões de requisições todos os dias.
Mark usou vários sofwares e varias linguagem, para realizar o Facebook, foi um longo trabalho que teve bom resultado é por isso que, hoje, é o bilionário mais novo do mundo.