O Facebook e seus Esforços para a Escalabilidade Open Source

Quando se precisa escalar um serviço para lidar com um volume cada vez maior de dados, creio que não exista exemplo melhor para seguir do que o do Facebook. O gigante das redes sociais começou como um serviço para estudantes de Harvard e agora possui 500 milhões de usuários.

Mas esse número não reflete adequadamente a demanda da empresa por escalabilidade e armazenamento. Então, aqui vão algumas estatísticas: Os usuários gastam 8 bilhões de minutos no site todos os dias. São 3,5 bilhões de unidades de conteúdo compartilhados semanalmente. Os usuários sobem 2,5 bilhões de fotos todos os meses, e 1,2 milhões de fotos são colocadas no servidor a cada segundo. E como 70% dos usuários do Facebook estão fora do EUA, a quantidade de dados armazenados e oferecidos é ainda mais complicado pelas localizações dos usuários e data centers.

Não é nenhuma surpresa que algumas das formas mais tradicionais de escalabilidade não funcionam para o Facebook. Você não pode simplesmente fazer sharding no banco de dados com base na localização de um usuário ou na informação que ele irá acessar, já que os usuários estão interligados de maneira global e imprevisível.

Enquanto o Facebook foi crescendo, a empresa tem trabalhado para desenvolver uma série de ferramentas para lidar com esses dados, tanto em termos de armazenamento quanto na entrega de conteúdo, e muitos delas se tornaram open-source. O Facebook foi construído desde o início com tecnologias abertas, de acordo com David Recordon, gerente de programas open source do Facebook. Mas o uso do open source pelo Facebook vai muito além do LAMP (ou até mesmo, além do LAMP e também do Memcached). A empresa também criou e lançou vários projetos de código aberto e participa ativamente de outros, talvez o mais notável sendo o Hadoop.

Aqui estão algumas das ferramentas de código aberto do Facebook que ajudaram a lidar com a enorme quantidade de dados:

Cassandra

O projeto da Apache Software Foundation, Cassandra, é um sistema de armazenamento distribuído para gerenciamento de dados estruturados que é projetado para escalar uma grande quantidade de dados entre muitos servidores de commodities, sem falhar. Originalmente desenvolvido para ajudar a melhorar a busca do Facebook, o Cassandra é uma das muitas soluções de banco de dados NoSQL.

Hive

Também um projeto Apache, o Hive é uma estrutura de armazenamento de dados construído em cima do Hadoop que fornece ferramentas para permitir fácil sumarização de dados, consultas adhoc e análises de grandes conjuntos de dados. O Hive fornece uma linguagem de query simples chamada Hive QL que é baseada no SQL, permitindo aos familiarizados com o código a desenvolver com esses dados.

Hip Hop

Para economizar os recursos para seus servidores, o Facebook desenvolveu o Hip Hop, que transforma o código fonte PHP em um C++ altamente otimizado. O Hip Hop se tornou open source no início deste ano.

Scribe

O Facebook registra cerca de 25 terabytes de dados diariamente. Não é surpresa que outras ferramentas não foram capazes de escalar para esta capacidade, então o Facebook desenvolveu o Scribe para registrar dados transmitidos em tempo real para um grande número de servidores.

Thrift

Atualmente um projeto de encubadora Apache, o Thrift fornece um framework para serviços escaláveis de linguagem desenvolvidos em C++, Java, Python, PHP, e Ruby.

David lembra que muitas das novas tecnologias do Facebook começaram como “hacks,” e a empresa está trabalhando não só para desenvolver novas ferramentas, mas para também incentivar seu desenvolvimento e uso externo. Por enquanto poucas empresas têm as necessidades massivas de armazenamento e escala que o Facebook possui, e os esforços no open source da empresa são para a construção de um “modelo de colaboração sustentável” de desenvolvimento.

Aqui vocês podem conferir na íntegra uma apresentação do início deste ano na FOSDEM:

0 responses to “O Facebook e seus Esforços para a Escalabilidade Open Source

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *