setembro 18, 2020

Conhecendo o Node JS

By setembro 01, 2020 0
Conhecendo o Node JS Imagem: D.R

Desde aparição do Node JS, a web nunca foi a mesma, Node JS é um framework que influenciou muito na forma como se desenvolve aplicações web e mobile modernas, diríamos que o Node JS foi mais além, deu possibilidades a linguagem de programação Javascript a ter um lugar de destaque no desenvolvimento de aplicações embarcados, diríamos mais que, o Node Js trouxe o Javascript em todos os lugares tirando - o assim da sua zona de conforto, a Web.

Por um lado, isso tem sido muito bom porque o Node Js quebrou uma barreira que enfrentamos há mais de 20 anos, hoje podemos desenvolver aplicações web com conexões bidirecionais em tempo real, onde o cliente e o servidor podem iniciar a comunicação, permitindo que eles troquem dados livremente. E por outro lado isso é mau, o facto do Node JS ter trazido o Javascript em todos os lugar faz com que para alguns o NodeJs seja um martelo para todos os pregos. Hoje nós vamos conhecer  o propósito do Node JS e onde ele brilha mais, boa leitura.

Porque Node Js foi criado?

Tudo aconteceu quando o Ryan Dahl o criador do NodeJS, se deparou com o desafio de fazer o carregamento de ficheiros, infelizmente para ele a experiência era desastrosa por ter sido complexo e desafiador de mais, a tentativa de oferecer uma boa experiência de uso dessa feature (funcionalidade). Para teres uma ideia do que se trata, Ryan Dahl, queria que o sistema enquanto carregasse o ficheiro pudesse mostrar um medidor de progresso do carregamento em tempo real isso era um problema, daí veio a solução, uma vez que ele já tinha um conhecimento vasto sobre servidores orientados a eventos, para criar a primeira versão do Node só precisava de uma linguagem de programação e ele escolheu javascript porque acreditava que poderia ser usada facilmente por desenvolvedores web mais acostumados a trabalhar com tecnologias web. Como o javascript carece de bibliotecas do lado do servidor, Dahl e outros desenvolvedores tiveram que criar o que são consideradas bibliotecas padrão para o Javascript do lado do servidor.

Ecosisstema do NodeJS

Após a criação do NodeJs os  desenvolvedores receberam a tecnologia com grande entusiasmo usando - o assim como backend para seus protótipos. O que mais influencia na adoção do Node JS é o seu ecossistema funcional de bibliotecas reutilizáveis. E Já que estamos a falar de bibliotecas vale a pena falarmos um pouco sobre o NPM (Node Package Manager). Uma das biblioteca responsável pela ampla adoção do Node JS é a Sockect.io esta é uma biblioteca responsável na conectividade em tempo real entre servidores e clientes, esta tecnologia disponibiliza de uma forma automática a tecnologia de conexão apropriada em diferentes caso de usos seja via websocket, Ajax Streaming, Ajax polling etc dependendo do recurso disponíveis do navegador, de modo geral o npm conta com vários tipo de bibliotecas basta.

NPM é o gerenciador de pacotes oficial do Node JS, de acordo com o developers.slashdot.org npm é o maior repositório de pacotes do mundo, só essa informação por si já diz muita coisa sobre a importância que o NodeJs.

A grande vantagem do Node JS está em tornar o seu sistema de E/S (Entrada & Saída) orientada a eventos e sem bloqueio, isso torna as aplicações web mais performáticas e eficientes. É importante que se saiba por mais que o Node JS atacou bem o problema que se propõe a resolver (E/S orientada a eventos, e E/S não bloqueantes), Node JS não é uma plataforma bala de prata que dominará o mundo do desenvolvimento web por completo sem deixar espaço para mais ninguém. Que fique bem claro, o Node JS é uma tecnologia que atende a uma necessidade específica e entender isso é extremamente importante.

Temos alguns lugar aonde não se recomenda usar o NodeJS principalmente quando queremos fazer operações com uso intensivo de CPU, na verdade se considerarmos usar o NodeJS para cálculos pesados anula quase todas as suas vantagens.

Onde o NodeJs brilha?

Um diferencial grande entre Node Js e as tecnologias tradicionais web está na forma de como se faz a requisição, para as tecnologias tradicionais em cada conexão ou requisição gera um novo thread, ocupando a RAM do sistema e, eventualmente, maximizando a quantidade de RAM disponível, o Node JS faz diferente ele opera em um único thread de  entrada (E) sem bloqueio, permitindo que ele suporte dezenas de milhares de conexões.

Quando ou onde usar o Node JS?

Como já dissemos anteriormente, o Node JS não é um martelo para todos os eventuais pregos, tem alguns lugar onde o Node Js brilha mais e tem outros lugares onde não se aconselha a usar o Node JS, agora vamos ver alguns lugar onde o Node JS brilha mais.

Chat em tempo Real

Chat é um aplicativo multiusuário em tempo real mais comum. Anteriormente   usava - se IRC (Internet Relay Chat) que é um protocolo de comunicação utilizado na internet, hoje em dia podemos implementar um chat facilmente usando o Node Js com websockets rodando na porta 80 padrão.

Entradas em filas (Queues)

Esse caso de uso implementa-se na eventualidade de estarmos recebendo uma grande quantidade de dados simultâneos, isso pode causar danos de performance e de segurança as vezes, para evitar isso, nós criamos uma fila para processar melhor e com mais seguranças os dados que nós estamos recebendo dos usuários, o Node js pode lhe dar bem com requisições simultâneas mais as bases de dados já não, porque a operação com as bases de dados são operações bloqueantes, uma de cada vez, e a outra não entra em acção se a primeira não terminar. A solução é reconhecer o comportamento do cliente antes que os dados sejam realmente persistidos em uma base de dados.

Com essa abordagem, o sistema mantém sua capacidade de resposta sob uma carga pesada, o que é particularmente útil quando o cliente não precisa de confirmar uma acção de persistir um determinado dado. Exemplos típicos incluem operações que não precisam refletir instantaneamente (dar um like em um artigo), actualizar os dados de rastreamento do usuário etc.

Transmissão de dados

Em plataformas web tradicionais, as requisições e respostas HTTP são tratadas como eventos isolados. Já com o Node Js, é possível processar arquivos enquanto eles ainda estão sendo enviados, já que os dados chegam por meio de um fluxo e podemos processá-los em tempo real. Isso pode ser feito para codificação de áudio ou vídeo em tempo real e proxy entre diferentes fontes de dados.

Proxy

O Node.js é facilmente empregado como um proxy do lado do servidor, onde pode lidar com uma grande quantidade de conexões simultâneas de uma maneira sem bloqueio. É especialmente útil para fazer proxy de diferentes serviços com diferentes tempos de resposta ou coletar dados de vários pontos de origem.

Dashboard

Se tem uma coisa que de verdade Node Js brilha, é na hora de construirmos sistemas web com fluxos de dados em tempo real, assim sendo o Node Js é uma ferramenta ideal para implementar software como o de navegação de corretores, usado para rastrear preços das acções, realizar calculos, análises técnicas, criar gráficos e tabelas em tempo real.

Quando ou Onde não usar o Node JS?

Quando se trata de computação pesada, Node Js não é a melhor escolha. Definitivamente não quererás desenvolver uma api de computação Fibonacci em NodeJS. Em geral, qualquer operação com que usa de forma intensiva a CPU anula os benefícios de taxa de transferência que o Node Js oferece com o seu modelo E/S não bloqueante e orientado a eventos, porque nessa operação, todas as requisições de entrada serão bloqueadas enquanto o thread está ocupado com sua análise de números isso leva o sistema a entender que estejas a executar seus cálculos na mesma instância do Node com a qual estejas respondendo as requisições.

Conclusão

O nosso objectivo foi conhecer mais de perto o Node JS, desde a motivação que levou o seu criador Ryan Dahl até as suas vantagens e desvantagens.

Vimos que quando as pessoas enfrentam os problemas com Node Js, quase sempre resume-se ao facto de que as operações de bloqueio são a raiz de todos males. Lembre-se o Node js não foi criado para resolver o problema de dimensionamento de computação. Ele foi criado para resolver o problema de escalonamento de E/S.

Sem mais assunto, não me resta mais nada senão me despedir e agradecer pela sua companhia e  espero que o resto do teu dia seja abençoado, happy coding!. Até a próxima.

José Tandavala

Desenvolvedor de Software, OpenSource enthusiast, co-organizador do DevOps day Luanda actualmente trabalha como programador backend.

https://www.linkedin.com/in/josetandavala/

Leave a comment

Deixe o seu comentário. Os campos com * são obrigatórios.

© 2020 Portal de T.I Todos Direitos Reservados