★ Você conhece o Node.js?

Gráfico (Node.js)

INFORME PUBLICITÁRIO

por Leandro Cissoto (Desenvolvedor iOS – Quaddro)

Em um passado não muito distante, um sistema web normalmente era uma parceria de tecnologias bem simples: um pouco de Javascript no front-end junto de CSS, e o PHP cuidando do back-end — intermediando a relação com o MySQL. Essa parceria era — e ainda é — um sucesso tão grande que fica muito difícil no nosso dia-a -ia não passarmos por pelo menos um site ou portal que não utilize PHP. Seja em uma página do Facebook ou um blog em WordPress, o PHP está em todo lugar, o que torna seguro afirmar que a linguagem é uma das grandes responsáveis pela evolução da internet nas últimas décadas.

Entretanto, essa combinação tem perdido força de alguns anos para cá. Seja pela evolução das tecnologias de front-end (que demandam um back-end mais eficiente) ou pelo “boom” dos aplicativos mobile (que comumente demandam um web service), estamos diante de uma nova arquitetura. Uma mais dinâmica, flexível e que atenda todas requisições de todas plataformas sem decepcionar no quesito desempenho.

Para essas e outras tarefas no back-end, apresento-lhes o Node.js.

Quem é este tal de Node.js?

O Node.js é um interpretador de código JavaScript que nasceu em 2009 pelas mãos de Ryan Dahl e outros 14 colaboradores. Eles criaram o Node.JS visando facilitar o desenvolvimento de aplicações em tempo real, que era pouco utilizada na web devido a grande complexidade e aplicações altamente escaláveis.

Junte estes princípios com o motor V8 do Google Chrome e temos uma plataforma extremamente versátil, completa e usando a sintaxe do JavaScript no server-side.

Node.js vs. PHP

Quando se fala de desenvolvimento web, é inevitável comparar o PHP com qualquer outra tecnologia. Enquanto o PHP possui plataformas maduras, como o WordPress, Drupal, Magento, entre outras, o Node.js conta com um desempenho assombroso — com uma quantidade de módulos gigantesca e uma ótima escalabilidade por não possuir threads bloqueantes, diferente do combo PHP + Apache que atendem apenas um usuário por vez, gerando uma enfileiramento para as requisições. Quanto mais usuários acessando, maior a “fila” e, consequentemente, menor o desempenho.

Veja os benchmarks nos gráficos abaixo:

10.000 requisições, 10 concorrentes

Gráfico (Node.js)

Neste teste, o PHP levou em média 5.4162 segundos para realizar as requisições, enquanto o Node.js levou uma média de apenas 2.7756 segundos.

O segundo teste utiliza um cálculo um pouco mais complexo (cálculo do Pi). Os códigos fontes utilizados para o cálculo podem ser encontrados neste link.

100 requisições, 100 concorrentes

Gráfico (Node.js)

Agora podemos perceber uma boa diferença entre eles. Enquanto o PHP levou em média 37.4984 segundos para completar as requisições, o Node.js levou apenas 3.8054 segundos. Um resultado impressionante!

Node.js está para Mongodb assim como PHP está para MySQL

O PHP e o MySQL formam um casal perfeito, e o Node.js com o Mongodb também. Com a crescente utilização de bancos de dados não relacionais, utilizar o Node.js com Mongodb é uma boa pedida se você busca desempenho e facilidade, principalmente utilizando módulos como o mongoose. O mongodb guarda documentos no formato JSON (JSON-style documents), e o Node.js também utiliza este formato nativamente, por ser em Javascript.

Conclusão

O Node.js chegou com força total. Com uma grande comunidade e cheia de inovações, mesmo que utilizando a sintaxe do bom e velho JavaScript, a linguagem veio mostrando sua força com um desempenho excepcional e uma facilidade imensa para resolver tarefas antes maçantes.

Utilizar o Node.js também é um prato cheio para os que estão desenvolvendo aplicativos mobile e precisam criar um web service. Com muita facilidade, é possível criar uma API RESTFul e um sistema integrado com o Mongodb para dar ainda mais vida para nossos aplicativos.

O PHP terá que correr atrás do prejuízo: mesmo ainda sendo uma das linguagens mais utilizadas do mundo, está obsoleta em relação a outras linguagens e corre o risco de perder a coroa pela sua falta de padrões e desempenho abaixo da média. O futuro ainda é incerto, mas se eu fosse apostar, apostaria em Node.js

Gostou do Node.js e quer aprender a construir web services?

A Quaddro oferece um treinamento prático para você criar aplicações real-time e construir os seus próprios web services. Não perca tempo e faça já a sua inscrição — as vagas são limitadas!


Referências utilizadas para a criação do artigo:

Posts relacionados

Comentários

26 comments

  1. Nodejs não é uma linguagem.
    Apache+php não atendem somente um usuário por vez.
    “mySQL e php formam um casal perfeito assim comp node e mongo”, esta afirmação não faz o menor sentido. Utilizar um banco no-Sql ou um banco SQL, depende do tipo de informação que vai ser guardada, é perfeitamente normal usar php com mongo ou node com mySQL.

    Entao, eu decido qual banco usar baseado na minha plataforma? Se for node uso mongo, se for php mysql, se for c# sqlSever ???

    “NodeJs é uma linguagem orientada a eventos de IO”, essa afirmação não tem pé nem cabeça.

    Nao propague a desinformação.
    Me proponho a reescrever o artigo

  2. Realmente… Senti muita dor com início do artigo: “O Node.js é uma linguagem orientada a eventos”… Não cara, NodeJS não é uma linguagem de programação e sim uma plataforma.

  3. Não dá pra ficar assim não, é muito conceito básico sendo passado errado.

    Vamos editar esse post ae!

  4. Sou full stack developer, e trabalho com PHP e com a plataforma NodeJS, e esse artigo faz comparações absurdas, tecnicamenete erradas.

    O mais óbvio e primário para qualquer pessoa que entenda de arquitetura de software, é comparar PHP rodando por trás de Apache com NodeJS puro. Você está carregando um servidor web inteiro para executar algo simples e óbvio, logo o seu PHP + Apache está fazendo muito, mas muito mais do que o NodeJS. Esse benchmark da forma que está, sem explicação técnica de porque isso ocorre, prova no máximo que, se você for fazer um web service que calcule o número Pi, NodeJS é melhor que PHP + Apache.

    “Node.js está para Mongodb assim como PHP está para MySQL” – Qual fundamento *técnico* disso? Tanto PHP como NodeJS tem drivers nativos para maioria dos bancos de dados relacionais e não relacionais mais usados. Esse tipo de afirmação no máximo é um amontoado de buzzwords que aparecem junto em pesquisas no Google. PHP e NodeJS pode trabalhar com n bancos de dados.

    “Mongodb é uma boa pedida se você busca desempenho e facilidade (em detrimento de MySQL)” – Outra afirmação bizarra. Você está comparando bancos com propósitos bem diferentes. Performance e facilidade de uso de dados está bem mais relacionado ao tipo informação e relacionamento de informação do que bancos de dados em si. O principal erro dos benchmarks de bancos de dados é que também fazem comparações simplistas. Outro problema cĺássico são programadores que testam um banco NoSQL com um MySQL nas configurações padrões e não otimizam pra usar memoria adequadamente, ou absurdo de comparar performance de um servidor compartilhado com um dedicado.

    “PHP terá que correr atrás do prejuízo (…) falta de padrões e desempenho abaixo da média” – Novamente, desempenho abaixo da média comparado com o que? Vai comparar um WordPress que calcula n coisas com um NodeJS que apenas gospe um HTML? E quando a padrões, bem, isso depende da qualidade do programador e dos salários pagos. A linguagem PHP em si nas versões atuais não tem nada a perder em relação as outras quando a design patterns.

  5. Achei engraçado como foi colocado a questão de enfileiramento de requisições, ela são posta primeiramente em fileira para serem processadas uma a uma, se uma está sendo processada as demais ficam em ociosidade isso é comum nas plataformas bloqueantes, mas se faz uso de spdy para ter o mesmo comportamento de um non-blocking. Já fui progamador php e não desmereço essa linguagem, ela não é engessada. Sou entusiasta nodejs, inclusive palestrei sobre ele há um dia atrás, e cara nodejs não é uma linguagem, é uma plataforma de desenvolvimento, a linguagem dele é javascript graças ao javascript v8 do google chrome do qual ele é baseado. Sugiro reformularem o post.

  6. O que estão esperando para apagar este post e fazer de conta que nunca foi publicado? Jurou que vou fazer de conta que esqueci. 🙂

  7. Agora que percebi “O texto que você leu é de responsabilidade do anunciante e/ou da sua agência publicitária”. Neste caso uma empresa que vende cursos. ‘-‘

  8. então cara .. vc sabe o que significa : “Node.js. It’s the latest in a long line of “Are you cool enough to use me?”programming languages, APIs, and toolkits. ”
    aqui não está falando que nodejs é uma linguagem de programação ..
    de qualquer forma, não é o autor do livro que escreve essa descrição ..

    O StackOverflow está ERRADO ..

    meu comentário tem 620 caracteres .
    eu usei só 28 pra dizer que nodejs não é uma linguagem de programação . mesmo que eu estivesse errado ainda tem os outros 592 caracteres

    Eu lí denovo pra procurar a minha agressividade, e não encontrei …
    cara .. eu passo boa parte do meu tempo estudando e ajudando outras pessoas, principalmente os iniciantes …
    Escrevo quando dá tempo, e dou palestras quando me chamam, dou consultoria de node.js .. etc …
    Quando eu leio um artigo desses, onde está claro que foi escrito sem nenhum fundamento. Sinto parte do meu trabalho sendo jogado fora em troca de dinheiro.. no caso para vender cursos ..
    isso sim é agressivo ..

    Já viajei para dar palestras tudo custeado do meu bolso .. nunca cobrei um centavo por isso ..

    entende ?

  9. o livro não está errado …
    “Node.js. It’s the latest in a long line of “Are you cool enough to use me?” programming languages, APIs, and toolkits.”

    “Node.js É o último da série “você é cool o suficiente para usar ?” linguagens de programação, APIs e ferramentas.”(tradução livre)

    e ai ? onde aí está dizendo que node é LP ?

    e essa descrição não é feita pelo autor . .
    é feita por alguém que quer vender o livro ..
    assim como esse artigo, feito para vender curso..

Os comentários estão fechados.