Descubra o poder do Node.js e como ele pode transformar seu desenvolvimento web
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.
About author
Você pode gostar também
Entenda os princípios S.O.L.I.D para melhorar a manutenção e escalabilidade do seu sistema
S.O.L.I.D. são 5 princípios da orientação a objetos que visam facilitar a manutenção e tornar seu sistema altamente escalável. Seu acrônimo define os diferentes princípios, sendo eles: SRP – Single
Guia Prático: Ferramentas para Simulação de Requisições em APIs
Quando estamos construindo uma API precisamos fazer uma simulação das requisições que serão feitas por agentes externos. Como uma API não tem um HTML diante de nós, como simular essas
React Native ou Flutter: Qual é a melhor tecnologia para desenvolvimento mobile?
Hoje em dia no mundo da tecnologia de desenvolvimento mobile, quando falamos de desenvolvimento de aplicações multiplataformas (IOS e ANDROID) as tecnologias que logo vem a nossa mente são React