Este artigo vem de Tomislav Capan, consultor técnico e entusiasta do Node.js. Tomislav publicou este artigo originalmente em agosto de 2013 no blog Toptal – você pode encontrar o artigo original aqui; o blog foi ligeiramente atualizado. O assunto a seguir é baseado na opinião e experiências deste autor.
JavaScript’s crescente popularidade trouxe com ele muitas mudanças, e a face do desenvolvimento web hoje é dramaticamente diferente. As coisas que podemos fazer na web hoje em dia com o JavaScript rodando no servidor, bem como no navegador, foram difíceis de imaginar há apenas alguns anos, ou foram encapsuladas dentro de ambientes sandbox como Flash ou Java Applets.
Antes de escavar no Node.js, você pode querer ler sobre os benefícios do uso do JavaScript através da pilha, que unifica a linguagem e o formato de dados (JSON), permitindo que você reutilize de forma ideal os recursos do desenvolvedor. Como este é mais um benefício do JavaScript do que o Node.js especificamente, nós não discutiremos muito sobre isso aqui. Mas é uma vantagem chave para incorporar o Node.js na sua pilha.
Node.js é um ambiente de execução JavaScript construído sobre o motor JavaScript V8 do Chrome. Vale a pena notar que Ryan Dahl, o criador do Node.js, pretendia criar sites em tempo real com capacidade de “push”, “inspirado em aplicações como o Gmail”. No Node.js, ele deu aos desenvolvedores uma ferramenta para trabalhar no paradigma de E/S não-bloqueio, orientado por eventos.
Em uma frase: Node.js brilha em aplicações web em tempo real, empregando tecnologia push sobre websockets. O que há de tão revolucionário nisso? Bem, depois de mais de 20 anos de web stateless baseada no paradigma de resposta sem estado, finalmente temos aplicações web com conexões bidirecionais em tempo real, onde tanto o cliente quanto o servidor podem iniciar a comunicação, permitindo que eles troquem dados livremente.
Isso está em contraste com o típico paradigma de resposta web, onde o cliente sempre inicia a comunicação. Além disso, tudo é baseado na pilha web aberta (HTML, CSS e JS) rodando sobre a porta padrão 80.
Pode-se argumentar que temos isso há anos na forma de Flash e Java Applets – mas na realidade, esses eram apenas ambientes sandboxed usando a web como um protocolo de transporte para ser entregue ao cliente. Além disso, eles eram executados isoladamente e frequentemente operados sobre portas não-padrão, que podem ter exigido permissões extras e tais.
Com todas as suas vantagens, Node.js agora desempenha um papel crítico na pilha de tecnologia de muitas empresas de alto perfil que dependem de seus benefícios únicos. A Fundação Node.js consolidou todas as melhores ideias sobre o porquê das empresas considerarem o Node.js numa breve apresentação que pode ser encontrada na página de Estudos de Caso da Fundação Node.js.
Neste post, vou discutir não só como essas vantagens são alcançadas, mas também porque você pode querer usar o Node.js – e porque não – usando alguns dos modelos clássicos de aplicações web como exemplos.
- Como Funciona?
- npm: O Node Package Manager
- Where Node.js Should Be Used
- API ON TOP OF AN OBJECT DB
- QUEUED INPUTS
- DATA STREAMING
- PROXY
- BROKERAGE – STOCK TRADER’S DASHBOARD
- APLICATION MONITORING DASHBOARD
- SYSTEM MONITORING DASHBOARD
- SERVER-SIDE WEB APPLICATIONS
- APLICAÇÃO WEB SERVER-SIDE COM UMA BASE DE DADOS RELACIONAL BEHIND
- COMPUTAÇÃO/PROCESSAMENTO DO LADO CÉLIDO DO SERVIDOR
- Conclusão
Como Funciona?
A idéia principal do Node.js: usar E/S não bloqueadoras e acionadas por eventos para permanecer leves e eficientes diante de aplicativos em tempo real que rodam em dispositivos distribuídos.
Isso é uma boca cheia.
O que realmente significa é que o Node.js não é uma nova plataforma prateada que irá dominar o mundo do desenvolvimento web. Ao invés disso, é uma plataforma que preenche uma necessidade particular. E a compreensão disto é absolutamente essencial. Você definitivamente não quer usar o Node.js para operações intensivas de CPU; de fato, usá-lo para computação pesada irá anular quase todas as suas vantagens. Onde o Node.js realmente brilha é na construção de aplicações de rede rápidas e escaláveis, pois ele é capaz de lidar com um grande número de conexões simultâneas com alto throughput, o que equivale a alta escalabilidade.
Como ele funciona sob o capô é bastante interessante. Em comparação com as técnicas tradicionais de serviço web, onde cada conexão (pedido) gera uma nova thread, ocupando a RAM do sistema e eventualmente maximizando a quantidade de RAM disponível, Node.js opera em uma única linha, usando chamadas I/O sem bloqueio, permitindo que ele suporte dezenas de milhares de conexões simultâneas (realizadas no loop do evento).
Deixe uma resposta