Com esse artigo você vai entender o que é e como funciona Node.js de forma simples.
Sumário
- Intro: Front-end e Back-end
- Javascript: o ‘js’ de Node.js
- Node.js: o que é, como foi feito e como funciona?
- Consideração final
Intro: Front-end e Back-end
A arquitetura de uma aplicação web pode ser dividida em basicamente 2 componentes: o Front-end e o Back-end.
O Front-end é a interface do aplicativo, ou seja, toda estrutura que você vê em tela. Essa parte do projeto irá interagir diretamente com o usuário e por isso é tão relevante.
Já o Back-end é toda a inteligência por trás das cortinas. O usuário não o vê, mas é o que faz o aplicativo funcionar.
Esses 2 segmentos conversam o tempo todo.
Exemplo:
- O Front-end exibe em tela um formulário de login.
- Ao apertarmos o botão o Front-end faz uma requisição ao Back-end.
- O Back-end, com os dados inseridos no formulário, verifica no servidor o e-mail e a senha e retorna se houve um erro ou se o usuário foi autenticado.
- Com essa informação, o Front-end decide se exibe uma mensagem de erro ou se transfere o usuário para a página principal da aplicação.
Javascript: o ‘js’ de Node.js
Javascript para front-end.
Definida como uma linguagem script para o ambiente web, Javascript é tradicionalmente aplicada no Front-end. Com seu uso, é possível construir sites e aplicações interativas e dinâmicas. Para isso os navegadores têm mecanismos, chamados também de motores, que são capazes de executar javascript.
Javascript para back-end?
Antes da existência de Node.js, javascript não era comumente utilizado para programação do Back-end. Pelo fato da linguagem ser interpretada ao invés de compilada, seu uso não era eficiente para essa finalidade e podia deixar o aplicativo web muito lento.
Node.js
O que é?
Node.js é um ‘runtime enviroment’ de javascript. Em outras palavras: É um mecanismo responsável pela execução do programa de uma forma que torna eficiente o seu uso para Back-end. O seu reconhecimento deve-se à sua rapidez, responsividade e escalabilidade.
Como foi feito?
O Node foi construído com base no motor, desenvolvido e usado pelo Google Chrome, que executa javascript no browser, chamado V8 engine.
O V8 compila javascript em tempo de execução (compilação just-in-time) ao invés de interpretá-la. Isso, junto a uma série de outras características desse motor, acaba deixando a execução mais rápida.
Como funciona?
Ao pesquisar sobre Node.js você pode se deparar com termos como:
- Orientação a eventos
- Single-thread
- Event Loop
- Assíncrono
- I/O não bloqueante
Para explicar seu funcionamento e os termos acima, iremos expor a, comumente usada, analogia do restaurante.
Fazendo um paralelo de uma aplicação com um restaurante, os clientes seriam os usuários e seus pedidos seriam as requisições feitas. Sendo a cozinha o equivalente ao Back-end.
O comportamento dos garçons é o que será estudado conforme as características do Node.
Node.js opera com uma única thread (single-thread), designada como event-loop, que age de forma orientada a eventos. Em contrapartida, temos a abordagem thread-based, que funciona com múltiplas threads. No restaurante single-threaded existe somente um garçom e no multi-threaded, vários.
Mas como um restaurante com menos garçons vai realizar pedidos mais rapidamente?
Isso acontece por causa do comportamento de I/O não bloqueante que faz com que a cozinha atue de forma assíncrona dos garçons. Essa prática difere do modelo thread-based, onde cada garçom, ao fazer o pedido, deve esperar o prato ficar pronto para retornar o pedido à mesa e poder atender outro cliente. Considerando esse último modelo, um restaurante com X garçons e 1000X clientes teria um atendimento extremamente lento. Já o modelo com single-thread se mantém rápido e eficiente com muitos clientes, mesmo com só um garçom, ou seja, mesmo exigindo menos hardware. E é por isso que o uso de Node.js torna a aplicação altamente escalável.
Como o restaurnte da analogia funcionaria. Esquerda: com Node; Direita: abordagem thread-based.
Consideração final
Então concluímos que Node.js é a melhor forma de programar um aplicativo web?
Não necessariamente.
Em uma aplicação com um grande volume de requisições, Node pode ser a melhor pedida, mas num aplicativo cujas requisições exigem mais do CPU, como manipulação de imagens e vídeos por exemplo, optar Node.js não seria a melhor saída. Para entender melhor, imagine que no exemplo do restaurante, o tempo necessário para anotar o pedido de cada cliente seja maior que o tempo do prato ser preparado. Desse modo, a abordagem thread-based seria mais rápida.
Fontes:
Dany York, 2011;
StackPath, Robert Gibb, 2019;
Programming with Mosh, 2018..
Top comments (0)