Front End

11 jun, 2015

6 dicas de performance de Node.js que você pode começar a usar hoje

Publicidade

Todos já ouvimos sobre a rápida adoção do JavaScript nos anos recentes. Para resumir, JavaScript é a linguagem número 1 em uso no GitHub e parece que essa tendência vai continuar. Na verdade, como dito neste artigo, “JavaScript é a linguagem número 1 no mundo; é a linguagem da web, e o ponto de partida de muitos desenvolvedores…”. Uma das maiores razões para a rápida adoção do JavaScript tem sido a influência do Node.js.

Node.js é um software usado para construir aplicações em rede de forma rápida e escalonável. É baseado na engine JavaScript V8 do Google, ou no runtime do Chrome, e tem ganhado enorme popularidade entre as grandes empresas.

nodejs1

Ele provê uma arquitetura dirigida a eventos e uma API que não bloqueia I/O e otimiza a troca de dados e a escalonabilidade. Uma característica notável no Node.js é que ele contém uma biblioteca embarcada que permite que aplicações atuem como web servers sem um software como Apache HTTP Server ou IIS.

Provavelmente você ainda verá mais e mais projetos de desenvolvimento web mudando para uma linguagem uniforme com o Node.js capitaneando essa mudança.

Dada a crescente presença quase ubíqua do JavaScript e da plataforma Node.js, você vai querer estar bem atualizado com as últimas otimizações e melhores práticas. Neste artigo, veremos 6 dicas de performance para Node.js que você deveria usar para otimizar ao máximo as suas aplicações.

 1. Rode as coisas em paralelo

Sua aplicação vai, invariavelmente, requisitar múltiplas chamadas para várias APIs para buscar dados. Uma forma de fazer isso é depender de diferentes middlewares para cada função. No entanto, JavaScript tem um componente assíncrono, o que significa que ele não para de rodar as chamadas de funções subsequentes enquanto está finalizando. Para otimizar o Node.js, o melhor a fazer é tirar vantagem das features paralelas através da chamada async.js. É um módulo Node.js que ajuda a gerenciar melhor seus JavaScript assíncronos. Veja um trecho do código que mostra como as diferentes funções podem rodar em paralelo usando o async.js:

nodejs2

2. Seja assíncrono

Node.js é de thread única, o que significa que há muitos componentes síncronos que podem vir a travar toda a aplicação. Mesmo que você evite métodos síncronos em seu código, ainda é possível que uma biblioteca externa seja usada e que ela tenha uma chamada de bloqueio – e isso pode reduzir a performance seriamente. A melhor forma de contornar isso é sempre usar APIs assíncronas em seu código, especialmente seções de performance crítica. Tenha isso em mente quando for escolher módulos de terceiros para garantir que uma biblioteca externa não reverta em chamadas síncronas.

3. Use compressão Gzip

Gzip é um programa utilizado para comprimir e descomprimir arquivos. A maioria dos servidores e clientes hoje tem suporte para gzip. Quando um navegador é compatível com Gzip e faz a requisição para um recurso que o servidor pode comprimir, isso é feito antes de a resposta ser enviada para o browser, o que reduz tempo de lag e latência. Garanta que você utiliza o Gzip tanto quando você responde a um cliente como quando faz requisições a servidores remotos, pois isso pode realmente melhorar a performance geral da sua aplicação.

nodejs3

4. Faça códigos pequenos e leves

Na era do mobile, quando performance de aplicações é algo tão crítico, é especialmente importante manter o código do seu Node.js o mais compacto possível, para reduzir a latência e acelerar tudo. Este artigo traz uma série de questões de organização que são ótimas para serem perguntadas no estágio de desenvolvimento: “Realmente precisamos deste módulo?”, “Por que estamos usando este framework?”, “Podemos fazer isso de forma mais simples?”. Outra forma de otimizar aplicações é minificando e concatenando múltiplos arquivos JS em um único arquivo. Por exemplo, se a sua app tem cinco arquivos JavaScript, o navegador vai fazer cinco requisições HTTP para buscá-los. Para evitar bloqueios e tempo de espera, uma alternativa é minificar e concatenar esses cinco arquivos em um único.

5. Não use Node.js para renderizar assets

Uma dica de performance crítica seria renderizar seus assets estáticos, como CSS e imagens, em um servidor padrão como Nginx. Ao fazer com que o Nginx sirva seu conteúdo estático, você vai ter uma redução significativa no carregamento na sua instância Node.js e no processo de melhorar a performance.

6. Aplique renderização no client side

Graças aos novos e poderosos frameworks client side, como AngularJS e BackboneJS, ficou muito fácil criar apps dinâmicos e com uma única página. Esses frameworks expõem APIs que enviam respostas JSON diretamente para o cliente em vez de pelo servidor. Se você deixar o Node.js renderizar no server side, então ele vai retornar uma página HTML para cada requisição. Usar a renderização no client side seu ambiente Node.js pode salvar uma economizar quantidade de banda e reduzir a latência.

***

Ralph Eck faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: http://www.monitis.com/blog/2015/04/06/top-7-node-js-performance-tips-you-can-adopt-today/