Atualizado em 21/06/17 com mais cases!
Depois de uma década desenvolvendo principalmente em Java e C#, recentemente minha atenção se voltou para Node.js. 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.
Node.js 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 Node.js 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 Node.js.
Se você nem sabe o que é Node.js ainda, recomendo começar por este vídeo abaixo.
Os cases deste artigo são:
Vamos lá!
Groupon
Em 2013 o Groupon trocou sua tecnologia de backend de Ruby on Rails para Node.js. 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 Node.js 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.
Quando a maior rede social profissional do mundo relançou seu app mobile em 2011 usando Node.js 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 Node.js 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 Node.js 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 Node.js e em Java, lado a lado, para ver qual teria a melhor performance.
E nesse teste lado-a-lado, Node.js 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 e neste post o mesmo Tom Croucher fala do uso de Node e de Go, junto de Python, em toda aplicação do Uber:
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
Existem outras empresas que não divulgam tão publicamente seu apreço por esta tecnologia, como Google, Yahoo e Mozilla. Outras, como a Microsoft, que escreveu sua ferramenta de CLI do Azure em Node, tem apoiado, e muito, a Node Foundation.
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 Node.js 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 Node.js? Dá uma olhada nesses posts aqui:
- Tutorial Node.js + MongoDB
- Tutorial API em Node.js
- Tutorial Node.js + MySQL
- Como criar um mecanismo de busca em Node.js
De nada! 😉
Curtiu o post? Então clica no banner abaixo e dá uma conferida no meu livro sobre programação web com Node.js!
Olá, tudo bem?
O que você achou deste conteúdo? Conte nos comentários.
Ó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.
Essa semana ainda já teremos outro post sobre o assunto! 🙂
Legal Luiz. E que servidor está utilizando para o NodeJS?
Queria utilizar no Umbler, mas ainda não é possível.
A Umbler deve começar um beta fechado de Node até o final do mês. Até lá, tenho usado RedeHost e Amazon, dependendo da verba de cada projeto.
Saiu post novo: http://184.73.67.74/post/introducao-nodejs-com-mongodb-parte-1/
Já saiu Node e Mongo na Umbler. Não tem mais desculpa pra não usar! 😀
Saiu esse post? “Migrando do php para node” rs
Me referia a mais posts de Node na ocasião, de PHP eu não entendo quase nada, mas certamente seria um ótimo post, hehehe.
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.
boa… valeu 😀
tem um programa do pessoal da hipster.tech da alura que fala sobre o netflix.. confere lá depois
MT bom o artigo.
Mas sempre me pergunto: somente nodejs? Oke mais usam em conjunto? Mongodb, angular, react, express?
Verdade. É bem difícil de encontrar informações sobre o stack completo dessas empresas. Algumas informações se acha no Quora, outras em palestras deles, mas é tudo muito fragmentado e em constante evolução. 🙁
Pois eh.. Falam q ganham velocidade com node no lugar do java.. Mas o front end tbm conta MT.. Comprar jsf 2.1 com angular nao rola.. Angular sai muito mais na frente
https://stackshare.io/netflix/netflix
Só deixando também claro que que não é só o Node que influencia na performance de um projeto, mas toda a arquitetura que o projeto tem base. Já vi projetos em Node que não escalavam e que precisaram ser reescrito em Node (rsrs) mas com uma arquitetura muito mais trabalhada/estudada.
Bom artigo!! 😉
Excelente contribuição. Essa questão de usar a arquitetura certa vale para todas linguagens. A tecnologia sozinha não faz milagres, é necessário um cérebro pensante usando ela.
Gostei mto do artigo e achei util. Agora o video de sua explicação parte#1 parece bom e gostaria mto de aproveita-lo mas a musica esta muito alta e repetitiva e estraga a experiencia
Que pena que não conseguiu aproveitar, mas o conteúdo não é muito diferente do video.Vou aproveitar seu feedback e passar ao rapaz que edita meus vídeos para tomar cuidado com a música de fundo. Obrigado.
Muito bom artigo, em que há muita informação, obrigado. Agora trabalho em uma empresa http://corevalue.net/solutions/salesforce-services/ que lida com o desenvolvimento de software e estudo muito sobre API-interfaces.
Mas e ai, investir mais em NodeJS ou em .Net Core?
Eu acabei optando por Node.js, mas ambas são excelentes opções.
É até estranho Node adentrar em ambientes antes dominados por C# e Java e ver essas migrações mesmo hdsiahsaiu
Acredito que para iniciantes, tbm seja vantagem focar em node, certo?
Até porque focar em js, vai ter mais facilidade em ver front posteriormente.
Mesmo as grandes empresas optaram pelas metodologias ágeis, por DevOps e pela arquitetura de micro serviços. Node casa bem com estes conceitos, por isso ganhou força em muitas empresas que antes usavam tecnologias mais tradicionais. Obviamente isto não é um consenso, mas é um movimento forte.
Sim, para novatos a curva de aprendizagem do Node é muito menor (semelhante a PHP) e se tornar um dev fullstack usando Node é bem mais “simples” do que se você usar mais de uma linguagem.
Como fica o uso de typescript com node e o que acha dele?
Por mim, preferiria que se tornasse padrão como no Angular kkk.
Nunca usei, não sou capaz de opinar. No início achei que sentiria muita falta de tipagem, mas com exceção do code-complete não ser muito esperto no JS por causa da falta de tipagem, o resto eu levo numa boa sem tipos. Mas Typescript parece muito interessante, uma hora dessas vou estudar e escrever algo a respeito.