como o WhatsApp conseguiu suportar 50 bilhões de mensagens por dia com apenas 32 Engenheiros hoje eu quero reagir a esse artigo aqui com vocês que é oito razões pelo quais o WhatsApp foi capaz de suportar 50 bilhões de mensagens por dia com apenas 32 Engenheiros cara é realmente um feito marcante assim é bem interessante vamos ver que que o artigo tem para dizer pra gente se a gente parar a pensar cara 50 bilhões de mensagens por dia deixa eu fazer uma conta rápida aqui isso dá 579.00 requests por segundo mano bizarro é muito muita coisa
é muita coisa inacreditável enfim vamos ver vamos ver se a gente consegue aprender alguma coisa com esse artigo Aqui Esta postagem descreve a incrível história do confad do WhatsApp janum sei lá como é que fala esse nome e as técnicas de engenharia usadas para dimensionar o WhatsApp considere compartilhar essa mensagem com alguém que deseja estudar padrões de escalabilidade já tô aqui fazendo Exatamente isso e claro que o link vai est na descrição também e aproveitando se a gente falou da descrição Não esquece de se inscrever no canal e deixar o like não custa nada é
de graça Janeiro de 2008 Califórnia Estados Unidos Jan conum Engenheiro do yahu óbvio né e a ru na época era gigantesco se candidata para trabalhar no Facebook foi rejeitado este não foi o fim ele seguiu em frente com a sua vida ele compra um iPhone no próximo ano e reconhece imediatamente o enorme potencial da nova App Store essa história meio que já é um Clichê né o cara é rejeitado por alguém ou por uma empresa enfim aí ele acaba criando um concorrente que vira um problema para essa empresa que rejeitou ele no primeiro lugar eu
acho que a mais famosa é da Ferrari com a Lamborghini né para quem não sabe o Lamborghini foi falar com o Ferrari porque tava dando muito problema nas Embreagens da Ferrari alguma coisa assim e aí basicamente o cara da Ferrari o Ferrari n virou PR ele e falou assim cara deixa comigo vai fazer trator porque Lamborghini na época só fazia trator né aí o Lamborghini ficou revoltado e falou então beleza aí surgiu a Lamborghini enfim tangente aqui vamos voltar pro pro artigo então ele decidiu construir um mensageiro instantâneo com alguns de seus ex colegas de
trabalho do yaho e nomeou o WhatsApp a visão por trás do WhatsApp era substituir o caro SMS inclusive isso é uma coisa para mim é muito bizarra mano lá nos Estados Unidos me corriga is se f falando besteira mas tem muito essa treta de blue Bubble versus Green Bubble da do Android né com o iPhone e eles lá eles só usam SMS mano SMS eu não cara bizarro isso PR mim é completamente fora da casinha e Pelo que eu entendi Só acontece nos Estados Unidos tipo é poder ter uma dominância absurda lá por causa da
cor da mensagem enfim eu não sei direito como é que isso funciona até porque eu não moro nos Estados Unidos pelo que eu entendo o imessage ele funciona de Apple para Apple né tipo de iPhone para iPhone mas se você for mandar mensagem para alguém que tá usando um Android aí vai vira uma um SMS aí deixa de usar o imessage alguma loucura assim Enfim gente WhatsApp signal telegram pelo amor de Deus continuando com artigo com 1 milhão de pessoas se inscrevendo todos os dias a taxa de crescimento do WhatsApp foi impressionante Caraca 1 milhão
por dia muita gente o WhatsApp conseguiu suportar 50 bilhões de mensagens por dia e 450 milhões de usuários ativos diariamente e fizeram isso com apenas 32 Engenheiros realmente é impressionante embora o crescimento explosivo do produto seja um bom problema Jan con1 e a equipe do WhatsApp tiveram que adotar melhores práticas de engenharia para superar os desafios Com certeza né 50 bilhões de mensagens por dia não é pouca coisa as práticas de engenharia do WhatsApp para atender a escalabilidade Extrema foram single responsibility principle o s de Solid né eles colocam o foco do produto apenas no
recurso principal mensagens e não se preocupou não se preocuparam né e não se preocuparam em construir uma rede de Publicidade ou plataforma de mídia social Cara isso é muito muito muito bom mesmo quando o seu produto ele tem uma visão Clara você sabe exatamente a dor que você quer sanar você sabe exatamente o que o seu cliente precisa Isso é muito bom porque te permite realmente escalar muito seu produto e fazer um produto muito perfeito muito bem feito perfeito é difícil mas muito bem feito para aquele cliente específico para aquela dor específica Então realmente isso
é muito interessante essa imagem é sensacional que que o usuário precisa as ideias dos stakeholders cara se você trabalha numa empresa de consultoria você sabe muito bem o que que é isso aqui é é verdade essa imagem é muito verdade além disso eles eliminaram o aumento de recursos a todo custo o aumento de recursos ocorre quando você adiciona recursos excessivos a um produto e dificulta o uso além disso eles focaram na confiabilidade do WhatsApp acima de tudo ok muito bom número dois a stack que eles usaram eles usaram earling Caraca eu não fazia ideia disso
mano que maneiro eu acho que eu nunca vi um projeto grande tipo que o usasse erlang dizem que erlang foi meio que o prepulsid de erlang e adaptou Pô maneiro não faz ideia disso cara bem bem interessante realmente maneiro eles usaram o erlang para construir as principais personalidades dos Servidores do WhatsApp Por que disso fornece alta escalabilidade com espaço reduzido e suporta carregamento a quente carregamento a quente ah Hot loading ok ok Hot reloading beleza Fred são um recurso nativo do erlang mas em já você mais mais os freds pertencem ao sistema operacional portanto não
há necessidade de salvar todo o estado da CPU leng isso torna a troca de contexto mais barata é isso aí basicamente é Green Fred hoje em dia praticamente toda a linguagem tem isso gol foi um dos percussores aí e isso é uma das coisas que dizem que ele Copiou né de Earl copiou não né se inspirou em Earl hoje dia isso é muito comum mas realmente na época fazer muito sentido o carregamento a quente cara carregamento a quente eu adorei isso eu vou só falar carregamento a quente não vou mais falar hot loading muito bom
enfim o que que eu tô falando cara o o carregamento a quente facilita a implantação de alterações de código sem a reinicialização do Servidor ou redirecionamento de tráfego em palavras simples o carregamento a quente oferece alta disponibilidade isso É bem interessante né você poder fazer um hot reloading ali sem precisar parar o servidor Isso é realmente bem legal número três por que Reinventar a roda não reinvente a roda use código aberto ou compre uma solução comercial É eu falei disso em um vídeo meu aqui do canal não Reinventar roda é realmente muito bom quando você
quer lançar um produto fazer um MVP ou realmente lançar um produto comercial algo que os usuários vão utilizar é bom você não perder tempo reinventando a roda mas para aprender às vezes el legal você Reinventar a Roda para entender como que as coisas funcionam né EJ Bard é um servidor de mensagens em tempo real de código aberto escrito em erlang e eles construíram WhatsApp em cima do e Bard além disso eles reescreveram alguns dos componentes principais do e Bard para atender as suas necessidades além do WhatsApp aproveitou serviços de terceiros a tradução aqui ficou estranha
né besides WhatsApp leverage Third Party Tá além disso o WhatsApp aproveitou serviços de terceiros como Google push para fornecer notificações de push Ok realmente Foram boas decisões número quatro Cross cutting concerns ou preocupações transversais eles colocam grande ênfase em preocupações transversais para melhorar a qualidade do produto preocupações transversais são coisas que afetam muitas partes de um produto E são difíceis de separar por exemplo monitorar E alertar a saúde dos serviços aí aqui ele deu um exemplo né Security loging alerting performance monitoring Exception handling e tudo isso tá meio que interligado ok e melhoraram o processo
de desenvolvimento de software com uma integração contínua e integra contínua É mas isso aí hoje em dia é porque esse artigo Deve ser não o artigo em si não deve ser antigo né mas ele tá falando de WhatsApp antigamente então não sei se essa integração contínua integra contínua era uma coisa tão falada tão comum em 2008 né Pode ser que seja realmente algo revolucionário pra época não revolucionário mas interessante no mínimo pra época hoje em dia todo mundo faz ci CD né não existe nenhum produto sem isso eu acho a integração contínua é o processo
de mesclar as alterações do código regulamente um repositório Central enquanto a entrega contínua é o processo de implementação do código ambiente e teste ou produção número cinco escalabilidade o artigo é como o WhatsApp conseguiu ser escalável e o número cinco é sendo escalável Mas beleza vou ler aqui vou vou vou deixar o cara cozinhar o WhatsApp Z usou escala diagonal é diagonal scaling né que você faz tanto escalonamento horizontal e vertical ao mesmo tempo para manter os custos baixos e a complexidade operacional e a complexidade operacional Baixa também né o escalonamento horizontal é o processo
de aumentar o número de máquinas no pull de recursos o escalonamento vertical é o processo de aumentar a capacidade de uma máquina existente como CPU ou memória é exatamente isso no esento horizontal você pega vários nodes várias máquinas e coloca elas para trabalhar ao mesmo tempo uma do lado da outra por isso que é horizontal o estamento vertical é quando você melhora o hardware em si então por exemplo você tem um GB de Ram com um núcleo Aí você faz o melhoramento para uma virtual Machine de 10 núcleos com 8 GB de Ram coisa nesse
sentido a escala diagonal é um híbrido de escala horizontal e vertical sim os recursos de computação são adicionados vertical e horizontalmente isso é excelente inclusive go é muito bom para isso go você consegue escalar tanto horizontalmente quanto verticalmente algumas outras linguagens Já não são tão fáceis assim de fazer esse escalonamento eles rodavam servidores WhatsApp no sistema operacional free bst porque eles tiveram experiência anterior com free SD enquanto trabalhava no yahu Além disso O Free SD ofereceu uma pilha de rede confiável interessante eu nunca usei free BSD na minha vida não tenho ideia de que que
ele tem de diferente inclusive se você usa deixa aqui nos comentários que eu fiquei interessado para saber além disso eles ajustaram o free BSD para acomodar mais de 2 milhões de conexões por servidor e parâmetros de Kernel modificados como arquivos e sockets clássico né a infraestrutura mexe muito nisso toda hora você tem que mudar o limite de Fire descriptors a quantidade de sockets que você pode ser aberto ao mesmo tempo é são realmente modificações que fazem sentido que vão além do nível de código né você tá modificando o sistema operacional em si bem interessante eles
provisionar servidores em excesso para lidar com os picos repentinos de tráfego e manter espaço para falhas por exemplo falhas como partições de rede ou falhas de hardware Ok número seis efeito flywheel eles mediram métricas como CPU troca de contexto e chamadas de sistema S calls né em seguida identificaram e eliminaram os gargalos e eles faziam isso em intervalos regulares cara sensacional é muito bom você realmente constantemente ficar rodando profiles do seu sistema para ver onde é que estão os bonex E aí tentar achar soluções para melhorar esses bonex e melhorar a performance do sistema realmente
é uma boa dica aqui o ciclo contínuo de feedback melhorou tremendamente o desempenho do WhatsApp de novo realmente é uma excelente dica inclusive É sempre bom você rodar um profile porque você vai saber exatamente onde é que tá o bonc da sua apliação muitas vezes o pessoal só faz isso porque tipo ah eu acho que é aqui que tá o problema aí eles fazem aquilo e não era ali que tava problema continua tendo problema de performance então usar um profiler é realmente muito bom número sete é qualidade eles usaram testes de carga para identificar pontos
únicos de falha o teste de carga é o processo de medir o desempenho do sistema sob a carga prevista Isso é realmente muito bom você fazer um stress Test no seu serviço para ver como é que ele vai se comportar e uma coisa interessante que poucas pessoas levam em consideração quando eles estão fazend um teste de estresse é ver quanto tempo aquele teste de estresse dura principalmente se a sua linguagem for garbage collected porque se você fazer um teste de stresse de sei lá 10 segundos você vai alocar um bandoo de coisa na memória o
seu garbage collector provavelmente não vai rodar toda aquela memória simplesmente vai ser retornada pro os porque o seu sistema desligou mas se você faz um teste de estresse por 5 minutos 10 minutos 15 minutos aí sim você vai conseguir entender como seu sistema vai performar em grandes escalas porque em 5 10 15 minutos Obrigatoriamente o seu garv de collector vai ter que trabalhar porque vai ter muita memória locada e se ele não trabalhar você simplesmente vai ficar sem memória então lembrem disso quando for fazer um teste de estresse deixa o teste rolar por bastante tempo
principalmente se a linguagem for jogar B collected porque aí você vai ver o quanto que o GC tá influenciando na performance do seu código e eles também usaram tráfego de produção artificial e alteração de configurações de DNS para teste de carga beleza número oito um time pequeno os caminhos de comunicação entre Engenheiros aumentam quadraticamente à medida que o tamanho da equipe aumenta e isso é uma receita para produtividade degradada essa imagem ilustra bem o que ele tá querendo dizer você com duas pessoas no time você só tem um meio de comunicação que é você com
aquela pessoa enquanto que com cinco pessoas no time você tem 10 mos de comunicação porque as pessoas podem ir se comunicando entre si né eu entendi realmente é um bom ponto mas aqui eu acho que chega um momento que não tem como se o seu produto começa a crescer muito ou a empresa né e a empresa começa a criar vários produtos você Obrigatoriamente vai ter que expandir o seu time também agora no caso do WhatsApp que é um produto muito nichado muito específico é bem focado em mensagens realmente manter um time pequeno pode ajudar aí
muito então eles mantiveram o tamanho da equipe pequeno apenas 32 Engenheiros o WhatsApp é um dos mensageiros de Sant anos de maior sucesso do mercado em 2014 o mesmo Facebook rejeitou o janc 1 adquirir o WhatsApp por colossais 19.000 Milhões de Dólares 19.000 Milhões de Dólares é muito muito bom 19 Bilhões de Dólares segundo a forbs janka 1 tem um patrimônio líquido de 14 bilhões de dólares em 2023 o tradutor tá ótimo né aqui botou 19.000 milhões e aqui 14 bilhões faz sentido nenhum mas enfim como eu falei o link vai est aqui na descrição
do vídeo cara excelentes dicas muito boas práticas aqui foi um artigo interessante eu espero que vocês tenham conseguido aprender alguma coisa através dele e por esse vídeo é isso Não esquece de se inscrever no canal deixar o seu like e até o próximo valeu