A infraestrutura do Facebook, vai muito além de seus data centers e rede social, tendo em seu campus um laboratório que além de desenvolverem design para seus data centers, o Facebook também investe pesado em software e ferramentas open source, fazendo com que sua escalabilidade aumente. Com isso, todos esses temas são explicados deste artigo.
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Artigo científico infraestrutura do facebook - gabriella lima de carvalho - 14.12.2016
1. Infraestrutura do Facebook
Gabriella Lima de Carvalho
Análise e Desenvolvimento de Sistemas
Universidade Estácio de Sá
gabriella.lima.carvalho@gmail.com
Abstract – The Facebook's infrastructure goes
far beyond there data centers and social
network, the campus has a laboratory that not
only develops design for there data centers,
Facebook also invests heavily in open source
software and tools, increasing there scalability,
working to develop a range of data-handling
tools in terms of storage and content delivery in
order to make data processing scalable and
analysis easier.
Keywords- infrastructure, Storage, software,
scalability, database, NoSQL, MySQL.
I. Infraestrutura do Facebook
Como todos sabemos, o Facebook é uma
grande empresa voltada para redes sociais, a
maior do mundo atualmente, com isso,
descobrimos informações importantes
relacionado à essa grande empresa.
Primeiramente irei comentar sobre sua
infraestrutura, o Facebook utiliza uma
ferramenta muito interessante, que se chama
Busca Social (Graph Search), que tem como
ideia, aprofundar os resultados das pesquisas
voltadas para pessoas, lugares, fotos e
interesses dos usuários. As pesquisas podem
ser feitas à la Google, porém são limitadas ao
conteúdo presente no Facebook.
Para tudo isso acontecer de forma eficaz,
existe uma solução inteligente capaz de
processar tanta informação; essa solução
chama-se ‘Rack Desagregado’. Porém, há uma
controvérsia sobre essa solução, a qual relata
que a ferramenta Graph Search unida com um
poderoso sistema de pesquisa, tenha encantado
os cibercriminosos e tenha se tornado uma
grande ameaça à segurança de seus usuários.
Um elemento agravante, é o fato de usuários
não estarem cientes do perigo ou simplesmente
não saberem como usar os controles de
segurança e privacidade para navegar no
Facebook. Para resolver esse problema, é
altamente aconselhável marcar a opção de
navegação segura (HTTPS), tomar cuidado
com as “pegadinhas virtuais” e proteger ao
máximo informações como fotos, postagens no
mural, comentários e marcações, tornando tudo
isso o mais privado possível e claro, definir o
público que pode visualizar cada conteúdo
pessoal na rede. Porém, ao navegar na internet,
sabemos que estamos sujeitos a qualquer
perigo, o que devemos fazer é tomar muito
cuidado ao acessar um link ou expor alguma
informação.
Antes de encontrar essa solução chamada de
‘Rack Desagregado’, o Facebook sofria com a
falta de flexibilidade, especialmente com
serviços cujas necessidades mudam com o
tempo, ou seja, os servidores não trabalhavam
bem com mais de uma variável. Com isso, a
Busca Social começou a trabalhar com 20
servidores Compute, 8 módulos flash, 2
módulos RAM e um módulo de
armazenamento, para 3TB de memória RAM e
30TB de memória flash, tendo como ideia,
sempre aumentar o poder computacional ao
longo do tempo. Contando que hoje (2016), de
acordo com um funcionário do Facebook, a
empresa se apóia em aproximadamente 200
servidores memcached para produção
(operação diária do site) e um pouco mais para
propósitos desenvolvimentistas.
OBS: Memcached quer dizer memória cache,
um método de armazenar dados
temporariamente.
Um servidor de memória cache armazena
informação temporariamente na memória do
servidor, reduzindo a necessidade de fazer uma
busca na base de dados pela informação, isso
reduz o tempo levado entre um pedido de
informação e a entrega daquele dado.
2. II. A super infraestrutura do Facebook para
conectar o mundo
Os Data Centers são uma grande
infraestrutura essencial para quem se conecta à
internet e existe uma parte grande do Facebook
nessa iniciativa, trabalhando em sistemas de
infraestrutura que movem seu site. Com isso, o
Facebook também infrenta problemas de
engenharia em seus data centers, em parte,
devido ao seu tamanho, com mais de 1 bilhão
de usuários ativos mensalmente, criando
petabytes de dados.
Para resolver esse problema, o Facebook
contratou arquitetos para projetar data centers
inspirados em mobília modular, que podem ser
montados de maneira mais rápida, barata e
eficiente do que os convencionais, a empresa
também evita hardware comercial, preferindo
montar suas próprias máquinas, tornando tudo
isso aberto para quem quiser copiá-lo. O
Facebook também tem uma fazenda eólica para
gerar a própria energia.
Armados com um laboratório no campus do
Facebook, o grupo consegue criar protótipos
das suas ideias e mergulhar nos problemas de
design em um data center. Par isso, eles usam
máquinas de dobrar placas de metal,
impressoras 3D e até placas de madeira para
modelagem, tendo então, racks articulados
inspirados em mecanismos de abertura de
garagem.
Algo interesse é que dentro do data center,
todo mundo da equipe passa pela experiência
de fazer reparos de manutenção, estudar a
cadeia de suprimentos e trabalhar próximo dos
desenvolvedores de software, isso para evitar a
situação comum de que os dois lados soft e
hard, existam em um vácuo até que sejam
misturados.
III. Explorando a maior rede social do
mundo
O tamanho do cluster data warehouse do
Facebook têm aumentado consideravelmente
ao longo dos últimos anos. Sendo usados várias
peças de software de fonte aberta no armazém
de dados, incluindo Apache Hadoop , Apache
Hive , HBase , Apache Thrift e Facebook
Scribe. Juntos, eles mantem este motor de
processamento de dados.
Clusters de armazenamento de dados são em
grande parte os sistemas de processamento em
lote, onde a ênfase está na escalabilidade e
rendimento. Com mais de um bilhão de
usuários e requisitos para analisar com mais de
105 terabytes a cada 30 minutos, o apetite do
Facebook por dados atingiu proporções
descomunais.
A Hadoop é a ferramenta chave usada pela
rede social, e não simplesmente para análise,
mas como um motor para muitos recursos
oferecidos por ela, incluindo mensagens. Essa
carga de trabalho monstruosa levou a empresa a
lançar o seu projeto Prisma, que suporta dados
distribuídos geograficamente em diversas
instalações Hadoop.
O Projeto Prisma é a resposta da empresa
para alcançar novos patamares de capacidade
Hadoop. Com o Prisma, uma camada de
abstração lógica é adicionada para que um
cluster Hadoop possa ser executado através de
vários centros de dados, removendo
efetivamente os limites de capacidade.
Apache Hadoop está sendo usado em três
grandes tipos de sistemas:
1 - Como um armazém para análise da web,
como o armazenamento para um banco de
dados distribuído e para backups de banco de
dados MySQL.
Como uso de provimento de aplicação em
tempo real, sendo assim, o Apache Hadoop foi
aumentado para fazer latências pequenas e
tempos de resposta mais rápido. Um dos
aplicativos do Facebook, o Mensseger usa um
banco de dados distribuído chamado Apache
HBase para armazenar dados em clusters
Apache Hadoop.
2 - Outro caso de uso é recolher clique de
registros em tempo quase real de nossos
servidores web e transmitir-lhes diretamente
em nossos clusters Hadoop. Usamos Scribe
para tornar isso mais fácil. Scribe é bem
integrado para armazenar dados diretamente no
3. Apache Hadoop. A maioria destes grupos em
tempo real são menores em tamanho, algo em
torno de cem nós de cada um.
3 – E o último, é o uso para arquivamento de
médio prazo de bancos de dados MySQL. Esta
solução fornece backup e recuperação rápida de
dados armazenados no Hadoop File System e
reduz nossos custos de manutenção e
implantação de conjuntos de dados de tamanho
de arquivo petabyte.
Como funciona o Hadoop:
1) AvatarNode
Tanto a base de código de armazenamento e a
base de código em tempo real contem o
Hadoop AvatarNode, de alta disponibilidade
para um Hadoop Distributed File System
(HDFS). O AvatarNode é um invólucro em
torno do software Hadoop NameNode.
Há dois AvatarNodes em um único cluster
HDFS:
One atua como o primário e o outro como um
hot standby. O AvatarNode primário e o
AvatarNode de espera são coordenados via
Apache ZooKeeper . O administrador pode
alternar o avatar de cada um desses nós,
permitindo-nos para implantar um novo
software para o cluster sem incorrer em tempo
de inatividade. O tempo de failover é de alguns
segundos para grandes clusters. Este patch foi
contribuído volta ao Apache Hadoop no HDFS-
976.
2) RaidNode
A base de código tem HDFS-RAID que usa
arquivos de paridade para diminuir o uso do
armazenamento.
Hadoop, por padrão, mantém três cópias de
dados. HDFS-RAID cria blocos de paridade de
blocos de dados, permitindo-nos armazenar
menos cópias de dados, mas mantendo a
mesma probabilidade de perda de dados. Com
isso, o Facebook implanta o gerador XOR de
paridade, poupando cerca de 5 petabytes de
armazenamento bruto na implantação de
produção. Também há uma variante, Reed-
Solomon, que gera blocos de paridade, isto
permite armazenar ainda menos cópias de
dados. Recurso atribuído para Apache Hadoop
e pode ser encontrado no sub-projeto Hadoop
MapReduce.
3) Anexa
A base de código em tempo real tem suporte
completo para as operações de arquivo de
anexação HDFS confiável e é um requisito
básico para HBase para ser capaz de armazenar
índices de forma confiável no HDFS. As
versões anteriores do Apache HBase eram
suscetíveis à perda de dados, porque HDFS não
tem uma API para sincronizar dados para
armazenamento estável. Por isso, foi
adicionado uma nova interface para Apache
Hadoop para sincronizar dados de forma
confiável para o armazenamento estável. Esta é
a primeira instância conhecida de Apache
Hadoop em um ambiente de produção que
suporta a perda de dados zero, enquanto usando
Apache HBase.
Hive - Um armazém de dados petabyte Scale
usando Hadoop
Hive é uma fonte aberta de petabytes de
armazenamento escalável baseado em Hadoop,
que foi desenvolvido pela equipe de
Infraestrutura de Dados no Facebook. O que
inspirou a criação do Hive, foi o fato de ser
preciso melhorar a capacidade de consulta do
Hadoop, trazendo os conceitos familiares de
tabelas, colunas, divisórias e um subconjunto
de SQL para o mundo desestruturado do
Hadoop, mantendo a extensibilidade e
flexibilidade do Hadoop. Sendo muito utilizada
para tarefas simples de compactação,
inteligência de negócios e aprendizado de
máquina e muitas outras aplicações.
Nas seções seguintes, é fornecido mais detalhes
sobre a arquitetura e capacidades Hive.
Modelo de dados
Hive organiza dados em tabelas e partições.
Os dados para uma determinada data entram
em uma partição para essa data. Um esquema
de particionamento boa permite o Hive podar
4. os dados ao processar uma consulta e que tem
um impacto direto sobre o quão rápido um
resultado da consulta pode ser produzido.
Um esquema de particionamento bom
também ajuda no gerenciamento de dados e
abre possibilidades para arquivar dados mais
antigos para o armazenamento mais barato,
mantendo os dados mais recentes sobre o
cluster principal.
O esquema de particionamento pode ter
várias colunas, bem como no caso em que cada
coluna de particionamento mapeia para um
nível dentro do espaço de nome do diretório.
Dentro de cada partição os dados podem ser
bucketed em arquivos individuais. O bucketing
pode ser aleatório ou hash em uma determinada
coluna. Configurando um bom esquema
bucketing ajuda na rápida amostragem de
dados que pode ser usado para análise rápida e
verificação de dados em dados de amostra.
Arquitetura de Sistemas e Componentes
Hive compreende os seguintes componentes
principais:
Metastore: Para armazenar os dados de meta.
Compilador de consulta e mecanismo de
execução: Para converter consultas SQL para
uma sequência de mapa / reduzir postos de
trabalho que são executadas em Hadoop.
SerDe e ObjectInspectors: as interfaces
programáveis e implementações de formatos de
dados comuns.
UDF e UDAF: as interfaces programáveis e
implementações para funções definidas pelo
usuário (escalar e funções de agregação).
Clientes: cliente de linha de comando similar à
linha de comando MySQL e uma interface
web.
O metastore armazena as informações sobre
as mesas, divisórias, as colunas nas tabelas, os
SerDe usados para serializar e desserializar a
partir de partições, os locais dos dados para
essas unidades dentro hdfs, atributos
bucketization etc. Ele também oferece uma loja
de base, o valor de chave que pode ser usada
para armazenar qualquer tipo de meta-dados
com estes objetos.
O compilador de consulta usa as informações
armazenadas no metastore para converter
consultas SQL em uma seqüência de mapa /
reduzir postos de trabalho.
Hive também suporta construções de consulta
mais avançadas como cláusula FROM, sub
consultas e UNION ALL. O compilador
também cria planos inteligentes através de uma
série de otimizações, tais como:
Pushdown de predicado
Combinando mapa múltipla / reduzir postos de
trabalho para único mapa / reduzir empregos
Diminui número de Coluna
Agregações Mapa do lado Mapa-side
Uma vez que o plano é gerado o compilador
passa para o mecanismo de execução que
executa o mapa / reduzir postos de trabalho,
lançando-os ao cluster Hadoop na ordem de
suas dependências. Juntos, todos esses
componentes trabalham para fornecer uma
poderosa estrutura e linguagem para gerenciar e
consultar dados. Além dos componentes de
consulta no âmbito linguagem também fornece
capacidades normais DDL como criar, apagar e
modificar tabelas e partições e descrevendo e
mostrando tabelas também.
Formatos de dados, tipos definidos pelo
usuário e funções definidas pelo usuário
Hive é flexível o suficiente para analisar
diferentes formatos de dados e tipos de dados
através de suas interfaces SerDe e
ObjectInspector Java. Ele fornece alguns tipos
construído em implementações dessas
interfaces para formatos de dados, tais como
arquivos de texto delimitados, arquivos CSV e
alguns formatos binários eficientes. No entanto,
se os dados não estiverem em qualquer um
destes formatos (por exemplo, pode ser dados
XML ou em algum formato proprietário que é
utilizado por outras aplicações), é fácil de
escrever uma classe de implementação em
conformidade da interface SerDe.
5. Extensibilidade e escrever seu próprio
mapa/ Reduzir
Hive também proporciona uma grande
flexibilidade no apoio a cálculos que podem
não se encaixar totalmente o modelo de
processamento de SQL. Aprendizagem de
máquina de geração do modelo, a construção
de diferentes tipos de índices e muitas outras
aplicações não são facilmente exprimível e em
SQL e Hive é capaz de suportar tais aplicações,
fornecendo construções de linguagem que
permitem que o usuário conecte seus próprios
scripts de transformação em uma instrução
SQL. Isto é feito através do MAP, REDUZIR.
Esta flexibilidade permite tipo de análise não
SQL que tem sido extensivamente utilizada no
Facebook para uma variedade de tarefas.
O Facebook cresce a passos incríveis. Sua
base de usuários aumenta quase que
exponencialmente, até final de 2015 atingiu
1,65 bilhão de usuários e tem mantido uma taxa
de cerca de 100 milhões de novos usuários a
cada 6 meses. Com isso, o Facebook depende
muito de escalabilidade para enfrentar os
desafios diários com o qual tem que lidar, pois
os números são bem grandes. A seguir um
pouco sobre o que estou dizendo:
O Facebook serve mais de 550 bilhões de
visualizações de páginas por mês
Há mais fotos no Facebook do que em todos os
outros sites de fotos juntos
Mais de 3 bilhões de fotos são visualizadas por
dia, mais de 25 bilhões de tipos de conteúdo
(atualizações de status, comentários, etc) são
compartilhados todo mês.
Com mais de 60 mil servidores
Até final de 2015, atingiu 1,65 bilhões de
usuários
Para suportar todos esses números, o
Facebook precisa de escalabilidade, então,
vamos acompanhar o que os engenheiros estão
desenvolvendo!
Utilização de Softwares para escalar
A infraestrutura de software que o Facebook
usa pode ser vista como 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, porém, Linux
otimizado para garantir alta vazão de rede;
Usa MySQL, mas principalmente para
persistencia 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 de
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, o Scribe, um
sistema de loggins (registro de ações) que
consegue operar na escala do Facebook.
Durante o crescimento do Facebook, 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, a qual muitas
delas se tornaram open-source. 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.
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.
6. 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 HiveQL
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 milhares de 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 desenvolvida
em C++, Java, Python, PHP, e Ruby.
Lembrando 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.
IV. 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. O torna-se em 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.
7. 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.
V. Facebook e projetos open source
Antes de encerrar está parte do trabalho, é
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.
Além de todas essas soluções e ferramentas
que fazem com que o Facebook fique cada dia
melhor e atraindo mais usuários, agora os
engenheiros e o fundador da empresa estão de
olho no ‘próximo bilhão’ de humanos
conectados, com isso, foi anunciado para o
segundo semestre de 2016, uma plataforma
para implantação de infraestrutura de telefonia
celular de baixo custo, voltada exatamente para
as regiões do planeta ainda sem nenhuma
conectividade.
Chamado de OpenCellular, trata-se de um
sistema de rede sem fio definida por software
que a empresa promete transformar em ‘open
source’, ou seja, de uso livre sem cobrança de
royalties. O OpenCellular é uma plataforma de
acesso sem fio desenhada para reduzir os custos
de implantação de redes de celular em locais
onde têm sido tradicionalmente difícil esse
acesso. Para tanto, o projeto envolve o design
de ferramentas, de hardware e software, de
forma a ser possível implantar uma rede
completa do equipamento físico ao software
que a opera. A decisão de tornar o uso dessa
tecnologia “livre” busca incitar interessados em
materializar a ideia em infraestruturas efetivas.
O Facebook planeja tornar o design de
hardware ‘open source’, juntamente com o
firmware e software de controle, para permitir
que operadoras de telecom, empreendedores,
OEMs e pesquisadores a construir,
implementar, instalar e operar infraestruturas
sem fio baseadas nessa plataforma.
Ainda segundo o Facebook, a plataforma é
capaz de suportar uma ampla variedade de
padrões de rede, de 2G ao LTE, ou até pontos
de acesso WiFi. Fazendo isso, qualquer um
pode customizar a plataforma para atender a
suas necessidades de conectividade e implantar
a rede de sua preferencia, tanto em áreas rurais
como urbanas.
A rede social é acessada por um bilhão de
usuários de todo o mundo todos os dias. Os
dados são referentes ao primeiro trimestre de
2016 e constam do balanço financeiro da
empresa, que também apontam o número de
adeptos de outros aplicativos, como os serviços
de bate-papo WhatsApp e Messenger, além da
rede social de fotos Instagram.
O número de usuários diários do Facebook
aumentou 16%, com a adesão das pessoas aos
aparelhos móveis. No ano passado, a rede
social comemorou ter conectado mais de bilhão
de usuários em um único dia, mas somente
neste trimestre esse nível de acesso foi
constante. Por mês, a média de usuários ativos
chegou a 1,65 bilhão, com aumento anual de
15%.
Instagram, WhatsApp e Messenger
Além das informações de acesso ao
Facebook, a rede social informou também a
quantidade de usuários de seus outros serviços
conectados. O WhatsApp chegou a 1 bilhão de
usuários, conforme antecipado em fevereiro
2016.
Com 900 milhões de usuários, o Messenger
está próximo de se tornar a terceira ferramenta
do Facebook a chegar a um bilhão de membros.
Já o Instagram tem 400 milhões de pessoas
abastecendo o app com fotos.
Vídeo ao vivo
O Facebook pontuou ainda que foi no
primeiro trimestre de 2016 que ampliou as
opções de recursos dos vídeos ao vivo e
começou a vender os óculos de realidade
virtual Oculus Rift.
8. VI. Apollo
Facebook e suas inovações sempre
atualizadas. Dessa vez a nova invenção foi o
Apollo, um banco de dados NoSQL similar ao
Paxos.
O que é NoSQL?
NoSQL (Not Only SQL - Não Somente SQL) é
um termo genérico para uma classe definida de
banco de dados não-relacionais que rompe uma
longa história de banco de dados relacionais
com propriedades ACID.
Tendências em arquiteturas de computadores,
como a computação na nuvem e a necessidade
crescente de prover serviços escaláveis, estão
pressionando bancos de dados numa direção
onde eles necessitam oferecer escalabilidade
horizontal. Bancos de dados NoSQL
armazenam os dados com técnicas que visam
atender a esse requisito. Há alguns exemplos
proeminentes de softwares de código fechado
que atendem estes requisitos, sendo alguns
deles o BigTable, do Google, IBM Cloudant e
o DynamoDB da Amazon. E alguns exemplos
de software open-source como Apache
Cassandra (originalmente desenvolvido para o
Facebook), Apache HBase, LinkedIn's e vários
outros.
O Apollo é um sistema de storage
hierárquico, onde todos os dados são divididos
em shards, muito semelhantes ao
funcionamento do Hbase, escrito em C++ e
construído sobre o RPC Apache Thrift 2.
O Apollo é um storage de baixa latência
online que utiliza armazenamento flash e
processamento em memória.
O modo que Apollo trabalha é bem diferente
do modelo de banco de dados orientado a
documento ou uma chave valor.
O Apollo primeiramente trabalha com
modificações em estrutura de dados,
permitindo que seja representado mapas, filas,
árvores, entre outras estruturas, usando
pequenas partes do sistemas de dados, algo
entre 1byte e 1 MB, indo a um tamanho total
que vai de 1MB até 10+PB, sendo assim, o
Apollo pode ser instalado em um mínimo de
três servidores até ser composto de uma
infraestrutura de milhares de nós.
Segundo componente deste banco NoSQL, é
a estrutura de Storage. Sendo assim, a gravação
do primeiro storage é baseada no RocksDB,
uma persistencia de Chave / Valor, construído
sobre o Google’s LevelBD. Uma explicação
importante é que o Facebook está usando essa
tecnologia para simular outras estruturas de
dados, já que o Apollo foi projetado para ser
um storage agnóstico e está sendo usado para
adicionar um suporte ao MySQL como
mecanismo de storage alternativo.
O terceiro componente do Apollo, é uma
API de cliente composta dos métodos read() e
write(). Toda operação que o Apollo executa
em Shard é atômica, assim, ele suporta a
criação de pré-condições e se estas estiverem
satisfeitas, ela retorna o resultado da operação.
Quarto componenente de Shard é o Fault
Tolerant State Machines (FTSMs), ele é um
componente utilizado, principalmente, pelo
código interno do sistema, mas também podem
ser utilizados pelo cliente.
Cada FTSM é atrelado a um Shard de modo
que, por exemplo, em um shard de três
máquinas, todas elas irão executar o mesmo
código simultaneamente. Com isso,
observamos que esses shards são capazes de
acessar o storage persistente, porém algo ainda
mais importante , é o fato que, caso um dos nós
falhe, o código continua sendo executado em
uma ordem adequada de execução nos demais
nós.
Com tudo, de modo geral, o Facebook está
diariamente estudando novos métodos e meios
para melhorar seu sistema e ainda o acesso dos
seus usuários, com novidade constantes para
atender à mais de 1 bilhão de usuários, com
isso, ele procura aplicações de storage in-
memory, tanto para aplicações novas, quanto
substituir sistemas legados de forma a realizar
uma comparação de performance em relação
aos sistemas existentes.
A empresa também está procurando utilizar o
Apollo como um sistema confiável de filas,
9. para envio de mensagens do Facebook para Ios,
Android e operadoras via SMS e também
potencialmente utilizá-lo para análises
estatísticas mais eficientes.
VII. Recente novidade
Agora o Facebook está com mais uma
novidade, sua presença também na área
cognitiva. Baseado em um projeto sem fins
lucrativos, no dia 04/10/2016, foi anunciado a
parceria das maiores empresas de tecnologia do
mundo, as quais possuem a chave para um dos
maiores bancos de dados do planeta,
enraizando seus dados nas suas aplicações para
Inteligência Artificial.
Qualquer empresa que tiver domínio dos seus
dados, efetivamente possui Inteligência
Artificial, o que significa que empresas como
Facebook, Amazon, Google, IBM e Microsoft,
possuem uma tonelada dessas informações.
As cinco empresas se reuniram para anunciar
o lançamento de uma nova parceria. Elas são
encarregadas por desenvolver pesquisas e
promover as melhores práticas de Inteligência
Artificial, por isso, irão se reunir com
frequência para discutir os avanços dessa
tecnologia. Vale lembrar que no dia a dia, as
equipes estão em constante competição para
desenvolver os melhores produtos e serviços
movidos com a inteligência da máquina, então
já podemos imaginar que coisas muito boas e
utilizáveis para nossa melhoria poderá
acontecer. Essa nova parceria parece vir com a
intenção de realmente promover uma mudança,
em vez de ser usada apenas para o mundo da
tecnologia. Eles querem usar uma licença
aberta para publicar pesquisas sobre o tema,
incluindo ética, inclusão e privacidade.
VIII. Conclusão
Com uma visão geral do que foi mostrado, ao
todo concluo que:
A infraestrutura do Facebook, cresceu
enormemente durante os anos e para isso, o
Facebook utiliza uma solução chamada de
‘Rack Desagregado’, que proporciona alta
flexibilidade em serviços que mudam com o
tempo. Por exemplo, a utilização de mais
servidores que trabalham com mais de uma
variável e como seus data centers, que são do
tamanho de um boing, criam petabytes de
dados.
Porém, sua infraestrutura vai muito além de
seus data centers e rede social, tendo em seu
campus um laboratório que além de
desenvolverem design para seus data centers, o
Facebook também investe pesado em software
e ferramentas open source, fazendo com que
sua escalabilidade aumente.
Esses softwares, na maioria das vezes, são
desenvolvidos como um complemento
melhorado de alguns softwares já utilizados,
fazendo com que atenda todas as suas
necessidades.
O Facebook também trabalha para
desenvolver uma série de ferramentas para
lidar com dados, em termos de armazanamento
e relacionado à entrega de conteúdo, a fim de
tornar o processamento de dados escalável e
análises mais fáceis. Dentre essas ferramentas,
o Facebook desenvolveu ferramentas de código
aberto para ajudar a lidar com grande
quantidade de dados e como modelo de
colaboração sustentável. Um dos softwares
mais importantes que o Facebook utiliza é o
Hadoop e o Hive, que foram mostrados durante
o trabalho, entre outros que tem grandes
importâncias em todo o processo.
E para finalizar, também foi citado o Apollo,
um banco de dados NoSQL, que é um sistema
de storage hieráquico de baixa latência online,
que utiliza armazenamento flash e
processamento em memória, fazendo com que
o Apollo seja um modelo de banco de dados
diferente do modelo orientado a documento ou
chave/valor.
O Apollo foi projetado para ser um storage
agnóstico usado para adicionar suporte ao
MySQL, com mecanismos de storage
alternativo, usando aplicações de storage in-
memory, tornando-se então, desenvolvido para
melhorar a performance em relação aos
sistemas existentes, como um sistema em filas
10. que seja confiável para envio de mensagens e
para análise de estatísticas mais eficiente.
Ainda sobre o Apollo, é importante entender
que o intuito não é eliminar bancos de dados
relacionais, mas oferecer uma alternativa, pois
durante muito tempo o modelo relacional foi
usado como "bala de prata" para todos os
problemas de persistência.
Em termos de capacidade de Hadoop, o
Facebook atingiu um limite extraordinário.
Recentemente, a empresa declarou-se
proprietária daquele que é provavelmente o
maior cluster Hadoop do mundo, com mais de
100 petabytes. E, no entanto, a empresa diz que
não é grande o suficiente
Referências
SANTOS, Fernanda. Facebook, Amazon,
Google, IBM e Microsoft se unem
para criar parceria histórica de Inteligência
Artifical; STARTUPI.
Disponível em:
<http://startupi.com.br/2016/09/facebook-
amazon-google-ibm-e-microsoft-se-unem-
para-criar-parceria-historico-de-inteligencia-
artifical/>.
Último acesso em: 12/12/2016
GUILHERME, Paulo. Stephen Hawking teme
que robôs possam evoluir rápido demais e nos
matar; TECMUNDO.
Disponível em:
<https://www.tecmundo.com.br/inteligencia-
artificial/106649-stephen-hawking-teme-robos-
possam-evoluir-rapido-
matar.htm?utm_source=tecmundo.com.br&ut
m_medium=internas&utm_campaign=saibama
is>.
Último acesso em: 12/12/2016
REDAÇÃO, canaltech. Conheça a
infraestrutura por trás da nova ferramenta de
busca do Facebook; CANALTECH.
Disponível em:
<https://canaltech.com.br/noticia/facebook/Co
nheca-a-infraestrutura-por-tras-da-nova-
ferramenta-de-busca-do-Facebook/>.
Último acesso em: 12/12/2016
LIMA, Gustavo. Guia Sobre a Infraestrutura do
Facebook; CORUJADETI.
Disponível em:
<http://blog.corujadeti.com.br/guia-sobre-a-
infraestrutura-do-facebook/>.
Último acesso em : 12/12/2016
BARBOLO, Rafael. Explorando o software
por trás do Facebook, a maior rede social do
mundo; BITABIT.
Disponível em:
<http://www.bitabit.eng.br/2010/07/28/explora
ndo-o-software-por-tras-do-facebook-a-maior-
rede-social-do-mundo/ >.
Último acesso em: 12/12/2016
HUMBLE, Charles. Facebook anuncia o
Apollo, um novo banco de dados NoSQL para
armazenamento online de baixa latência;
INFOQ.
Disponível em:
<https://www.infoq.com/br/news/2014/08/face
book-apollo >.
Último acesso em: 12/12/2016
EWBANK, Kay. Facebook Apollo NoSQL
Database; I-PROGRAMMER.
Disponível em:
<http://www.i-programmer.info/news/84-
database/7441-facebook-apollo-nosql-
database.html >.
Último acesso em: 12/12/2016
CAMPBELL-DOLLAGHAN, Kelsey. Como o
Facebook está repensando a infraestrutura
online usada por um bilhão de pessoas;
GIZMODO.
Disponível em:
<http://gizmodo.uol.com.br/facebook-
hardware/>.
Último acesso em: 12/12/2016
STRICKLAND, Jonathan. Fatos e números
sobre o Facebook; TECNOLOGIA.
Disponível em:
<http://tecnologia.hsw.uol.com.br/facebook5.ht
m >.
Último acesso em: 12/12/2016
11. A ENCICLOPÉDIA LIVRE, Wikipédia.
NoSQL; WIKIPEDIA.
Disponível em:
<https://pt.wikipedia.org/wiki/NoSQL>.
Último acesso em: 12/12/2016
BORTHAKUR, Dhruba. Olhando para o
código por trás de nossos três usos do Apache
Hadoop; GOOGLEUSERCONTENT.
Disponível em:
<https://translate.googleusercontent.com/transl
ate_c?depth=1&hl=pt-
BR&prev=search&rurl=translate.google.com.b
r&sl=en&u=https://www.facebook.com/notes/f
acebook-engineering/looking-at-the-code-
behind-our-three-uses-of-apache-
hadoop/468211193919/&usg=ALkJrhjPK6OB
NfK4Fk9zoH7pH2-Wz5iVRg >.
Último acesso em: 12/12/2016
LAMPIT, Andrew. Facebook empurra os
limites do Hadoop; CIO.
Disponível em:
<http://cio.com.br/tecnologia/2012/11/05/faceb
ook-empurra-os-limites-do-hadoop/ >.
Último acesso em: 12/12/2016
Muito obrigada pela atenção e qualquer dúvida
estarei a disposição para esclarecimentos.
Atenciosamente, Gabriella Lima de Carvalho.