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

Exploração de uma vulnerabilidade de heap overflow real.

Na continuação dos artigos da série, vamos recriar os passos utilizados para se descobrir uma vulnerabilidade real (CVE-2010-0083) encontrada pelo autor, bem como definir a forma de explorar tal vulnerabilidade.

Uncategorized

Como aprender segurança de verdade.

Continuando a séria de artigos que estou escrevendo a pedido da 4Linux, gostaria de discutir um pouco a respeito do aprendizado de segurança da informação. Muitas vezes me perguntam o

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,