A revolução do Node.js

A revolução do Node.js

 Afinal, o que é o Node.js ?

    O Node.js ou apenas “Node” é um interpretador de javascript assíncrono, de código aberto e orientado a eventos criando pelo programador Ryan Dahl em 2009, fazendo com que o javascript rodasse não só no cliente como também no servidor. A grande magia por trás do Node.js é o seu core, o V8, um motor que converte o javascript para código de máquina, esse processo trás um grande ganho em desempenho, o V8 foi criado pelo Google é também é usado no Google Chrome, Opera e Vivaldi, todos navegadores web.

    O Node tira muita vantagem da arquitetura que o javascript foi construído, o call stack por exemplo, que empilha as chamadas de funções, o callback queue que empilha os call backs ou seja, as funções em si e o event loop que fica o tempo todo checando se um evento foi disparado para então executar a sua call back lembrando que tudo isso é assíncrono.

Mas afinal de contas o que é assíncrono?

   Existe uma explicação clássica para exemplificar o que é assíncrono, imagine o seguinte cenário: Você está num restaurante o qual possui apenas um garçom, imagina se ele anotasse seu pedido e ficasse lá na cozinha esperando até seu pedido ficar pronto para então levá-lo até você, como ficaria os outros clientes? Se pra cada cliente ele fizesse a mesma coisa, ficasse lá por 15 ou 30 minutos, isso é o que chamado de single thread, por ser apenas um garçom e o fato dele só continuar a atender os outros clientes após  terminar por completo um atendimento, ou seja, ele vai anotar seu pedido, levar ele para para a cozinha e esperar até que ele fique pronto e então ele irá levar até você e só então ele irá atender outro cliente.

    Trazendo isso para o mundo da engenharia de sistemas, o garçom sendo a thread e o fato dele esperar todo o processo do pedido se concluir é chamado de arquitetura bloqueante, isso resolvemos adicionando mais threads por exemplo, mas em muitos casos isso não é o ideal. Já arquitetura não bloqueante é o modelo atual de restaurantes, quando fazemos um pedido o garçom envia ele para a cozinha e continua atendendo os outros clientes e então quando nosso pedido ficar pronto ele vai buscar.  O Node nos permitiu usar uma linguagem que já era famosa e muito conhecida no frontend, o javascript, isso facilitou tanto no desenvolvimento quanto na busca de desenvolvedores.

    Os pacotes do Node.js são gerenciados por uma ferramenta chamada NPM – o Node Package Manager – ele é o maior repositório de softwares do mundo, fazendo o Node ser utilizado em muitas situações. Além disso, o Node é extremamente leve, criar um ambiente Node e servir uma aplicação não exige muitos recursos de hardware em comparação com outras tecnologias, também podemos usar em conjunto com o Docker aumentando assim a velocidade de deploy. Além disso o ambiente de desenvolvimento acaba ficando simplificado também.

    Devido a arquitetura do Node.js algumas empresas, como a nossa parceira Rocket.Chat, que escreveram seu software de chat usando Node.js, pois tal aplicação exige muito pouco de processamento sendo basicamente transferência de dados entre clientes, o servidor apenas direciona pra quem vai as mensagens.

   O Node também é indicado para ambientes escaláveis por ser extremamente simples e fácil de escalar tanto lateral quanto vertical. E por fim, por ser javascript, a integração com NoSQL é muito intuitiva pois as bases de dados são baseadas em json (javascript object notation) e nesse caso não há a necessidade de transformar os objetos ou criar um intermediário para processar esses dados e organizá-los, apenas os tratamos e o exibimos. Vale ressaltar que o Node funciona bem também com banco de dados relacionais, sendo possível usar uma ORM, por exemplo a sequelize (https://sequelize.org/).

    O Node.js apesar de novo, já está sendo amplamente usado e recebe atualizações frequentes adicionando novos recursos e resolvendo alguns problema que são encontrados, e por ser de open source, qualquer um pode ajudar a melhorar ainda mais essa ferramenta. Atualmente várias empresas ajudam o Node.js a crescer, seja com código ou com doações, algumas delas são: GoDaddy, IBM, LinkedIn, Microsoft, Netflix, Paypal dentre outras. Nós da 4Linux apoiamos a implementação do Blockchain em um grande banco público com Node.js, que é outra área que está ficando cada vez mais comum e tende a se expandir ainda mais com o tempo, com isso temos grandes instituições públicas usando não só Node.js, mas também software livre como um todo.

    O Node ainda vai evoluir muito e será adotado por muitas outras empresas, por ele ser um software relativamente novo ainda há uma certa resistência, porém também devemos nos atentar aos usos que queremos aplicar o Node, ele não é uma bala de prata e não resolverá TODOS os problemas, os requisitos devem ser corretamente levantados e analisados, para então decidir se o Node deve ou não ser usado, ou se alguma outra tecnologia poderia atender melhor as necessidades como django, flask, rails e etc.

    Falando um pouco do seu principal framework, o express, de acordo com o site oficial ele é rápido, flexível e minimalista, apesar de ser perfeitamente possível usar apenas Node com você mesmo escolhendo qual arquitetura usar, o express tende a ser uma opção pra quem busca padronizar uma arquitetura –  apesar de ser flexível, a comunidade não recomenda que sua arquitetura seja alterada. O express pode ser instalado facilmente com o npm rodando o seguinte comando: npm install express. Após isso rodando o comando express [nome_do_projeto] toda a arquitetura inicial da aplicação será construída e depois podemos rodar um npm install para instalar as dependências do projeto e depois um npm start, ele irá rodar o servidor web. Criar uma API usando express é outra maneira de aproveitar vários recursos disponíveis no framework, como utilitários HTTP e middleware, é possível criar uma API robusta de maneira fácil, pois o express fornece uma camada a mais de recursos sem tirar toda a vantagem de se usar o Node.js.

    Sobre o NPM ou Node Package Manager, além de ser um dos maiores repositórios que temos de módulos, também é o nome da ferramenta CLI que usamos para gerenciar nosso projeto, com ele é possível instalar um pacote, gerenciar múltiplas versões do Node.js dentre outras coisas, além de ser facilmente instalado, em algumas distribuições Linux ele já é uma dependência do Node, caso não for, procure no repositório da sua distro por npm. Também temos algo semelhante ao requirements.txt do python o package.json, com ele no nosso projeto basta rodar um npm install e todas as nossas dependências listadas no package.json serão instaladas.

    Por ser javascript o Node funciona muito bem com bancos não relacionais o mais famoso usado com Node.js é o MongoDB, um banco orientado a documentos de código aberto, ele vem ganhado força já há algum tempo e quem vem ajudando isso é a popularização do Node, pois, muitas aplicações usam um ou mais bancos de dados e no caso do Node um deles comumente é o Mongo, um outro fator é a facilidade para manipular os dados, com isso quero dizer que escrita e leitura são extremamente simples e performáticas.

CURSOSCONSULTORIA    CONTATO

Anterior Um banco de dados "Time Series" chamado TimescaleDB!
Próxima 4Linux atualiza seu curso de PenTest !

About author

José Augusto
José Augusto 2 posts

Analista de Infraestrutura e Programador na 4linux, contribuidor opensource nas horas vagas, apaixonado por video games e leitura (amo Dan Brown).

View all posts by this author →

Você pode gostar também

Uncategorized

Defesa em profundidade defense depth e falacia da segurança.

Continuando a série de posts que estou fazendo sobre segurança da informação (mais uma vez um grande obrigado a 4Linux por me ceder o espaço e garantir a audiência) e

Uncategorized

Julio Cezar Neves ministra treinamentode shell script na 4Linux.

Nem só de palestras vive o FISL: integração, bate papo e troca de experiências são partes fundamentais do Fórum de Porto Alegre, que teve sua oitava edição nos dias 12,

Uncategorized

Dica da semana: Conexões de rede netcat.

Nesta dica da semana da 4Linux, iremos aprender como trabalhar com o nc (Netcat), uma ferramente utilizada para auditoria de vulnerabilidades e segurança. O que é? O comando netcat é