Imagem por Node.js Foundation
Node.js é um runtime de JavaScript, criado por Ryan Dahl em 2009. Foi desenvolvido em cima do motor JavaScript V8 — engine criada pelo Google e utilizado no Chrome e Chromium — , que leva o processamento e renderização do JavaScript para o lado do servidor.
Node.js usa um modelo de I/O não bloqueante orientada a evento que o torna leve e eficiente, que possibilita criar aplicações rápidas, escaláveis e estáveis. Desde seu surgimento, vem ganhando crescente espaço entre profissionais de tecnologia do Brasil e do mundo.
Já pensou, poder utilizar javascript no back-end, com a mesma segurança proporcionada por linguagens como PHP e ASP.NET?!
Para quem já tem certa experiência com desenvolvimento web (certamente conhece a limitação de uso do Javascript no front-end) nunca iria imaginar essa possibilidade.
Agora estamos em uma era diferente, onde praticamente todas as grandes limitações do Javascript não existem mais. A cada dia infinitas possibilidades surgem e diversas referências vem aderindo a esse avanço.
Por que (e quando) utilizar Node.js?
Vou listar pontos cruciais, alguns já mencionados anteriormente, que irão te esclarecer o porquê de utilizar o Node.js:
Assíncrono;
I/O sem bloqueios;
Alta performance;
Escalabilidade fácil e barata;
Loop de eventos.
Um detalhe que toma a dianteira em relação aos concorrentes é o loop de eventos. Irei explicar melhor como isso funciona.
Geralmente, um jeito “tradicional” de lidar com muitas requisições é criando múltiplas threads, ou seja, para cada requisição é criada uma thread. Nela é tratada a requisição e somente após o retorno deste tratamento a thread é finalizada. Porém, muito recurso é gasto nesse processo e muitas vezes de forma desnecessária, já que nem sempre todo aquele recurso reservado é utilizado e a thread fica “estacionada” enquanto o tratamento não estiver concluído.
Quando uso o termo “tratamento” me refiro a qualquer processo feito antes de devolver uma resposta, seja uma consulta no banco, verificação de arquivo, cálculo…
Já o Node.js, trata toda e qualquer requisição em uma única thread.
Aí você me pergunta: Então como é possível ele ser tão performático?
Quando ele recebe uma requisição, ao invés de esperar o resultado do tratamento desta, ele segue com a próxima requisição e assim por diante, como uma fila. Quando alguma requisição em espera tiver seu tratamento finalizado, é sinalizado um evento que a retornará o quanto antes.
Isso quer dizer que, com o Node.js, temos um ganho muito grande de número de requisições que podem ser processadas.
Node.js não é apenas um servidor, já que hoje em dia pode ser utilizado para criar até mesmo aplicações desktop. Também é ótimo para realizar diversos tipos de projetos, como:
APIs (principal uso);
Aplicações web real-time como servidores de chat ou aplicações colaborativas entre múltiplos usuários (socket);
Jogos multiplayer;
Aplicações que demandam alta escalabilidade;
Servidores de streaming de dados;
Quando não utilizar?
Por usar somente uma thread, ele não serve para lidar com algoritmos complexos que consumam muita CPU, como edição de imagens, por exemplo. Isso impediria a execução de outras ações até o processamento estar completo.
Quem já utiliza?
Então quer dizer que não é só uma “modinha”?
Aqui vai uma lista de empresas conhecidas que utilização esta linda tecnologia:
Walmart;
PayPal;
Groupon;
Netflix;
LinkedIn;
New York Times;
Flickr;
Mozilla;
Yahoo.
Obrigado e até mais!
Esta é minha primeira postagem. Se você gostou do meu texto, me acompanhe e terá mais informações em breve.
Quer saber mais sobre o assunto ou tem alguma dúvida? Deixe um comentário. Ah, estou aberto a críticas também.