Por que aprender NodeJS? 8 Casos reais!

nodejs-logo

Atualizado em 11/05/17 com vídeos de palestras!

Depois de uma década desenvolvendo principalmente em Java e C#, recentemente minha atenção se voltou para NodeJS. Isso tem chamado a atenção de pessoas próximas à mim que me perguntam porque não troquei Java e C# por linguagens mais “legais” como Ruby e Python.

Como alguém que sempre trabalhou com linguagens fortemente tipadas, orientadas à objeto e em projetos com arquiteturas bem definidas, eu gosto de linguagens “chatas”. Não estou à procura de “zoeira” na minha vida de programador. Eu estou à procura de eficiência.

Eu quero reduzir meus custos com infraestrutura. Eu quero aumentar o desempenho dos meus projetos. Eu quero programar mais rápido.

NodeJS me proporciona tudo isso em uma escala sem precedentes. E quanto mais aprendo sobre a plataforma, mais me interesso por ela.

Mas uma dúvida sempre ficava em minha cabeça: será que tem alguém “grande”, que use NodeJS em projetos de verdade?

Fui atrás de resposta e embora seja uma plataforma relativamente nova, ela já está sendo utilizada por várias empresas da Fortune 500 e gigantes da tecnologia, principalmente pelas características que citei antes: escalabilidade, velocidade de entrega e performance excepcional. Groupon, LinkedIn, Walmart, PayPal – são apenas algumas empresas bem sucedidas no uso de NodeJS.

Groupon

Em 2013 o Groupon trocou sua tecnologia de backend de Ruby on Rails para NodeJS. O engenheiro Adam Geitgey comenta sobre essa mudança nesse post, e eu transcrevo uma parte aqui:

“Estávamos buscando por uma solução para um problema específico – manipulação eficiente de múltiplas requisições HTTP, fazendo chamadas de API paralelas para servir cada uma dessas requisições e renderizando os resultados em HTML. Também queríamos algo em que pudéssemos confiar.”

A troca para NodeJS lhes entregou exatamente isso. Groupon notou uma melhora significativa no tempo de carregamento das páginas de todo o site, na faixa de 50%. Não só isso, mas os times de desenvolvedores passaram a entregar features mais rápido também.

LinkedIn

Quando a maior rede social profissional do mundo relançou seu app mobile em 2011 usando NodeJS como backend, eles conseguiram melhorar a velocidade do seu sistema em 20x ao mesmo tempo em que reduziram o número de servidores em 90%.

O líder de desenvolvimento mobile Kiran Prasada, em entrevista ao VentureBeat, disse que “Foi rápido acima de qualquer padrão”. “Eu já trabalhei em empresas grandes e startups como Yahoo, e yeah, era muito rápido.”

Walmart

O maior varejista do mundo levou o uso de NodeJS a outra dimensão quando decidiram adotar a plataforma para uso na Black Friday, o maior dia de vendas do ano. E a escolha se pagou: na Black Friday, os servidores do Walmart não chegaram a usar mais de 1% de suas CPUs, a despeito do fato de que suportam 200 milhões de usuários naquele dia.

“Node nos permitiu…escalar muito bem,” conforme dito por Dion Almaer, VP do Walmart para arquitetura mobile. “Ele é perfeito para o que estamos fazendo em mobile.”

PayPal

PayPal é outra grande empresa que está colhendo os benefícios do Node. Sua primeira aplicação NodeJS foi uma reescrita de sua página de overview da conta – “uma das mais visitadas do site”, segundo Jeff Harrell do PayPal. Querendo testar o Node, mas sem se arriscar demais, eles decidiram por construir a aplicação em NodeJS e em Java, lado a lado, para ver qual teria a melhor performance.

E nesse teste lado-a-lado, NodeJS venceu. O time que usou Node desenvolveu duas vezes mais rápido, com menos pessoas, com 33% menos linhas de código e com 40% menos arquivos. Além disso temos a performance. Node conseguiu atender o dobro de usuários por segundo do que o Java, com uma média de 35% mais velocidade na entrega das requisições.

Segue um vídeo de uma das apresentações que o PayPal fez de como estão usando Node em seus projetos:

Dow Jones

Em 2010 a editora Dow Jones (responsável pelo jornal financeiro mais famoso do mundo, o The Wall Street Journal, com 2.1 milhões de cópias vendidas por dia) já usava Javascript. De acordo com Scott Rahner, líder de desenvolvimento da empresa, o time de desenvolvedores começou a usar Node.js em produção pela primeira vez em 2011, durante uma aplicação experimental de leitura do Facebook, o Wall Street Journal Social. Eles experimentaram grande performance na aplicação e no processo de desenvolvimento, que foi concluído em poucas semanas. O CTO ficou espantado com o sucesso obtido com Node.js e convenceu a diretoria a apoiar a tecnologia o que culminou com o Node.js sendo a tecnologia primária da empresa, sendo atualmente utilizada para a maioria dos projetos, especialmente os produtos para os consumidores.

Com as palavras, Scott Rahner da Dow Jones (em uma tradução livre):

“Quando você pensa em Javascript, não há nenhuma tecnologia igual. Algo que você pode fazer deploy em qualquer plataforma, não importa se é Linux, Windows, Heroku, AWS, Digital Ocean, etc… É mais famosa entre os engenheiros do que qualquer outra linguagem. Obviamente combina com as exigências de performance das aplicações de hoje em dia. Combina perfeitamente.”

Uber

Na NodeConf que aconteceu em 2015, Tom Croucher, Engenheiro Sênior na Uber, compartilhou o seguinte relato (tradução livre):

“A coisa que eu mais gosto no Node é o quanto de poder que eu pessoalmente passei a ter com ele. A facilidade com a qual eu consigo fazer coisas com Node amplificou o meu poder enquanto desenvolvedor.”

O Uber começou a usar Node ainda na versão 0.8 e desde a versão 0.10 que eles relatam que a plataforma é super estável e funciona muito bem. O core dos sistemas dessa empresa que na época do relato valia 15 bilhões de dólares é escrito em Node, mais especificamente seus confiáveis sistemas distribuídos e suas bases de dados geoespaciais.

Segue o vídeo com a referência original:

GoDaddy

Dessa vez quem fala bem de Node é Stephen Comissio, desenvolvedor sênior da GoDaddy, uma das maiores empresas de hospedagens de site e registro de domínio do mundo.

Stephen, agora ex-desenvolvedor .NET, conta que há alguns anos atrás a GoDaddy empregava alguns dos mais experientes desenvolvedores Java e .NET do mercado. Eles queriam iniciar uma mudança cultural na empresa e pensaram que começar a prototipar aplicações em Node.js, lá atrás em 2013, foi um primeiro passo rumo a uma cultura mais ágil. Até então, o front-end da GoDaddy sempre confiou no Javascript e em aplicações single-page (SPA), mas o backend rodava com .NET. Para aumentar sua capacidade de atender requisições em uma de suas aplicações, a empresa decidiu mudar inteiramente seu backend para uma infraestrutura baseada em node.js.

Durante o anúncio chamado ‘Puppet Master’ durante o SuperBowl de 2014, a GoDaddy enfrentou o seu maior desafio de escala. Eles tinham como meta que 100 milhões de pessoas visitassem um site em questão. A infraestrutura inteira da GoDaddy, naquele momento, conseguia lidar com 13 mil requisições por segundo, com um tempo de resposta médio de 87ms. Mas isto não era o bastante e eles tiveram que pensar em como melhorar ambas métricas, pois estimava-se que apenas um site relacionado ao SuperBowl receberia 10.000 requisições por segundo. Para suportar essa carga o site teve de ser migrado para um cluster próprio de 12 servidores e felizmente eles conseguiram fazer a tempo.

De acordo com Stephen, agora a GoDaddy suporta essa mesma carga com apenas 10% do hardware desde que migraram de .NET para Node.js. Isso significa menos servidores para gerenciar. Eles hoje estão aptos a servir 1.7 milhões de requisições por mês e sobreviveram a diversos ataques DDOS com impacto quase nulo usando Node.js.

O uso da tecnologia também representou um boom para a GoDaddy em termos de aquisição de talentos.

Netflix

A diretora de engenharia de front-end do Netflix, Kim Trott, contou a história do uso da plataforma na Netflix no último Node Summit em Portland.

A história começou em 2013 quando o Netflix não usava Node.js em produção. Eles tinham um grande sistema legado com um tempo de inicialização de 40 minutos, monolítico, builds demorados e máquinas de desenvolvimento enormes. Isto afetava a habilidade de serem mais produtivos e inovarem mais rapidamente. Eles até mesmo não conseguiam construir testes A/B eficientemente, o que é algo crucial uma vez que o Netflix constantemente roda diferentes versões das interfaces para fazer testes, centenas delas simultaneamente na verdade.

Para eles, estava impossível continuar nessa situação, cheios de retrabalhos e tudo mais, principalmente tendo de escrever um código completamente diferente para o front-end e para o backend. Eles usavam Java no servidor e Javascript no cliente. Eles tinham duas maneiras diferentes de depurar, acessar dados e renderizar, e estava ficando muito difícil de continuar trabalhando nesse ambiente. A contratação de profissionais experientes também estava sendo um problema. No fim das contas, eles não estavam se movendo tão rapidamente quanto precisavam para manter o negócio inovador.

Em um primeiro momento, eles estavam simplesmente buscando uma maneira simples de renderização para sua camada de front-end, mais especificamente fazer o roteamento correto das páginas, carregamento de templates e mescla de dados junto aos templates. Netflix também queria transformar o site em um Single Page Application ao invés de ficar renderizando todas as páginas do início ao fim.

Netflix escolheu Node.js uma vez que queria uma linguagem comum para escrever esse mesmo código já existente e de uma maneira que pudessem rodar onde quisessem. Isto ajudou muito os desenvolvedores que estavam constantemente ocupados trocando de contexto entre Java e Javascript toda hora.

Agora Netflix roda de maneira análoga a um SPA e com uma experiência de usuário muito mais rica, sendo que o Node.js é usado em todas as partes do site. Mais que 30% do time do Netflix trabalha com Node em produção e eles dizem que “você vai de 0 a 100 com Node muito rápido, você consegue fazer as coisas funcionarem rapidamente”.

Segue o vídeo com a referência:

Conclusões

Esses relatos, entre tantos outros que existem pela Internet, me fazem crer que é uma ótima opção de linguagem a se ter no rol de tecnologias dos programadores modernos. Empresas brasileiras que vem crescendo rápido, como a 4all, também estão utilizando Node e mesmo em meus projetos pessoais tenho aprendido a extrair cada vez mais dessa tecnologia.

Em um projeto recente, estimo que os ganhos de trocar C# por NodeJS como tecnologia de backend vai me permitir reduzir os custos com datacenter em 75%, uma vez que 1) Node vai atender o dobro de usuários e 2) vou poder rodar ele em Linux sem receios e sem gambiarras.

Isso é eficiência.

Quer aprender hoje como programar em NodeJS? Dá uma olhada nesse meu post aqui: http://www.luiztools.com.br/post/introducao-nodejs-com-mongodb-parte-1/

De nada! 😉

O que achou desse artigo?
[Total: 1 Média: 5]
  • Gêisson Machado Antunes

    Ótimo post, realmente Node veio pra ficar, estamos usando aqui na empresa em todos nossos produtos e os resultados sāo muito bons!
    Uma dica de post é ensinar como criar um cluster de processos filhos com node para realizar tarefas em off, nāo achei muita coisa na web sobre isso.

    • Tenho grande interesse em fazer coisas parecidas. Já tenho agendado alguns posts sobre o desenvolvimento usando Node + Express + MongoDB para criação de aplicações web, APIs e mecanismos de busca, mas já vou começar a estudar essa parte de clusters também. Um abraço.

  • Muito bom Luiz. Vou ficar no aguardo dos próximos posts.
    Também estou em processo de troca, mas do PHP para o NodeJS.
    Abraço mestre.

  • Paulo Henrique

    netflix com node js? certeza? quais sao as referencias?

    • Obrigado pelo comentário Paulo, você me lembrou que tinha de adicionar uns vídeos de um evento de Node onde algumas dessas empresas mencionam coo usam Node no dia-a-dia, incluindo o Netflix. Dá uma olhada de novo no post, adicionei os vídeos nele.

      • Paulo Henrique

        boa… valeu 😀