O Node.js pode me ajudar?

Louis Raymond Blocked Desbloquear Seguir Seguindo 20 de dezembro de 2018

Enquanto continuo minha jornada como desenvolvedor, o próximo framework que eu tenho que entender é o Node.JS. Pensei em compartilhar uma visão geral do que é essa tecnologia, o que ela faz e fornecer algumas informações, para que você possa ver se o Node.Js pode ser adequado para você.

O logotipo do Node.js

O que é o nó

Em brief, o Node é um programa que permite executar JavaScript fora do navegador e contém recursos que permitem usar o idioma para tarefas de back-end.

O mecanismo do V8 do Google é a força motriz por trás do Node.js

Você pode já ter usado o JavaScript para criar aplicativos para serem executados em um navegador, que executa o código usando um mecanismo JavaScript . Eles pegam o código JS escrito por desenvolvedores e o transformam em código de máquina que os computadores podem entender. O navegador envolve o mecanismo e fornece um ambiente de tempo de execução , com recursos como o DOM, com o qual podemos usar nosso código para interagir.

Antes de o Node.js ser lançado, os navegadores eram o único ambiente de tempo de execução JavaScript disponível. Embora forneçam um ambiente ideal para o desenvolvimento front-end, os navegadores não podem executar tarefas essenciais para o trabalho de back-end, como poder acessar seu sistema de arquivos ou processar solicitações HTTP.

No entanto, tudo isso mudou em 2009, quando Ryan Dhal pegou o motor V8 do Google e o incorporou em um programa C ++ chamado “Node.exe”, que forneceu o primeiro ambiente de tempo de execução para JS fora de um navegador. O nó substitui os recursos ambientais incorporados no Chrome ou Firefox (como o DOM) e os substitui por recursos para o trabalho de back-end.

Qual problema o Node.js resolve?

Enquanto você pode estar ciente de que muitas grandes empresas, como Netflix, Uber e PayPal esporte Node back termina. Se você é como eu, há, sem dúvida, uma pergunta em sua mente:

“Já não existem ferramentas dedicadas ao desenvolvimento de back-end? Outras linguagens como Ruby, Python e C # já possuem frameworks dedicados ao desenvolvimento de back-end – existe realmente alguma necessidade de utilizar o JavaScript fora do navegador? ”

Bem, tipo de

Embora nunca exista uma necessidade firme de executar JavaScript fora do navegador, dependendo do seu projeto, isso poderia potencialmente beneficiar você enormemente.

Bloqueio, threads e código assíncrono

Uma fila é semelhante ao bloqueio da arquitetura de backend

Para entender por que, considere como uma cadeia de café opera. Em cada loja, há uma fila onde cada pessoa faz um pedido antes de continuar aguardando enquanto o café é servido. Na maioria das lojas, um pedido é processado de cada vez, o cliente por trás daquele que está sendo servido tem que esperar que a pessoa na frente dele receba sua bebida antes de fazer um pedido e o barista pode servir apenas um cliente de cada vez.

Esse protocolo é análogo a uma arquitetura de back-end de bloqueio ou síncrona . Existe uma alternativa – outras cafeterias têm um sistema pelo qual, enquanto o barista prepara uma bebida, recebe outras solicitações. Este segundo processo é um esboço de como é a arquitetura sem bloqueio . Ele aproveita muito melhor nossos recursos, pois evitamos que os clientes tenham que esperar para fazer um pedido e processar solicitações mais rapidamente.

No mundo da engenharia de back-end, nosso barista acima representa algo como um encadeamento de execução , o número de encadeamentos disponíveis depende de quantos núcleos a CPU do seu servidor possui. Quando você recebe uma solicitação (por exemplo, para consultar um banco de dados), um thread é alocado para lidar com isso. Na maioria das estruturas de backend – como Rails – as solicitações são tratadas de forma síncrona, portanto, enquanto a consulta está sendo executada, essa thread não pode ser usada para atender a outros clientes.

Se você tiver um grande número de clientes, o computador que você está executando como um servidor ficará sem threads, forçando seus clientes a começar a esperar que alguns deles sejam liberados. Conseqüentemente, seu aplicativo pode ficar lento ou você precisará comprar mais hardware para poder alocar mais threads.

Algumas estruturas oferecem soluções para esse problema, mas você precisa fazer um trabalho extra para tornar a arquitetura assíncrona, enquanto o Node não é bloqueado por padrão .

Como funciona o Node.js

Como é que isso funciona? Bem, enquanto o banco de dados prepara o resultado de uma consulta, ele coloca uma mensagem em algo chamado fila de eventos . O Node monitora constantemente essa fila em segundo plano – se encontrar uma solicitação concluída, ela será retirada e processada. Isso torna o Node uma ferramenta ideal para aplicativos que são intensivos de entrada / saída (I / O) – ou seja, aplicativos que exigem muito acesso ao disco rígido ou à rede. Isso ajuda a tornar os aplicativos escaláveis e facilita o gerenciamento de dados em tempo real.

Para ter uma noção de quanto de um boon pode ser, considere que, quando o PayPal reconstruiu uma de suas aplicações Java / Spring usando o Node, descobriu que a versão do Node poderia ser construída na metade do tempo por uma equipe menor. 33% menos código foi necessário e houve uma redução de 40% no número de arquivos criados. Por isso, era mais conveniente, mais rápido de construir e menos confuso de manter. mas o mais importante – o novo aplicativo pode processar o dobro de solicitações que o antigo.

Espero que agora os benefícios potenciais sejam menos misteriosos

As vantagens do JavaScript de pilha inteira

Usar o Node em seu back end é excelente para protótipos e desenvolvimento ágil. Os aplicativos de nós são rápidos e altamente escaláveis e o uso do JavaScipt em todos os lugares torna o código mais limpo e consistente. Além disso, o Node permite que você aproveite o enorme ecossistema de bibliotecas do JavaScripts. Se você está pensando em construir um novo projeto – Por que não dar uma chance ao Node.js?

Desvantagens e Limitações

Até agora, o Node pode parecer bom demais para ser verdade. À medida que nos concentramos nos problemas, o Node resolve e descreveu os casos de uso em que isso era aplicável. No entanto, o Node não é um marcador de prata projetado para uso em todos os aplicativos da web. Usá-lo para executar seu back-end para serviços intensivos de CPU (como streaming de vídeo) tirará todas as vantagens da tecnologia, pois a computação pesada poderia bloquear o thread único do Node e causar problemas para cada um de seus clientes até a operação em pergunta está completa.

Além disso, o Node não é tão eficaz quanto outras estruturas, como o Ruby on Rails, quando acoplado a um serviço de banco de dados relacional. Embora você possa usar o Node com Postgres ou MySQL se quiser (talvez com a ajuda de bibliotecas como Sequelize ou Node ORM2 ), as ferramentas disponíveis para você estão terrivelmente subdesenvolvidas em comparação com o ActiveRecord e o Gems, você pode encontrar o ecossistema do Ruby.

The Bottom Line

Você deve usar o Node no seu próximo projeto? Desde que o trabalho que você está tentando realizar não envolva cálculos pesados, e desde que sua pilha não dependa de um banco de dados relacional – sim.

O Node.js pode ser exatamente o que você precisa para tornar seu próximo projeto escalável e o mais rápido possível. Mas, lembre-se de suas desvantagens ao decidir se é a tecnologia de back-end certa para você.