Quando usar ou não Node.js

1,941 views
Skip to first unread message

Samuel Castro e Silva

unread,
Feb 24, 2014, 10:18:58 AM2/24/14
to nod...@googlegroups.com
Boa Tarde meus caros, após ler um artigo sobre node.js (https://www.ibm.com/developerworks/br/library/os-nodejs/), fiquei com uma grande dúvida sobre onde usar e onde não usar o Node.js. O autor mencionou que "o Node não era recomendado para aplicativos pesados em banco de dados relacionais".

Por exemplo, seria uma boa escolha utilizar o node para a criação de ERP, ou um sistema de controle de locações ou até mesmo controle de ordem de serviços? Ou a sua utilização seria recomendada apenas para situações específicas onde o fator Real Time seja crucial?

Obrigado pela atenção e a paciência, sou novo no pedaço. ;)

Att,
Samuel

--

Samuel Castro

(37) 9110-8850

Augusto Pissarra

unread,
Feb 24, 2014, 11:07:12 AM2/24/14
to nod...@googlegroups.com
O node define um estilo de desenvolvimento com Javascript - desenvolvimento com promisses ou callbacks, e logicamente que tem todos os seus benefícios não bloqueantes (core do node). Não tem nada a ver com  a questão transacional (ATOMICIDADE de uma transação). O node, através de seus drivers, pode ser usado com qualquer tipo de banco de dados (SQL e No-SQL). Para atingir atomicidade na transação, deve-se usar um SQL (MS-SQL, Oracle, Postgres, MySQL, etc…). A não ser que TODAS as duas transações estejam em um documento, key-pair, etc… de um No-SQL DB).

A escolha de uma linguagem para o seu projeto, passa por uma decisão técnica, mas também há outros pontos a considerar como conhecimento do seu time, investimento em linguagens e profissionais de sua empresa, etc.

O node cabe em qualquer tipo de projeto, destaca-se em vários outros, mas no final há várias outras linguagens que também tem seus méritos e podem ser de ótima escolha.

Mas volta a colocar, que NENHUMA delas, resolver questão relacional ou transacional. Quem resolver é banco de dados!

Abs,


Augusto Bernardo
(55 11) 98851-6629
www.highdesign.com.br

email_hd


 



--
Você está recebendo esta mensagem porque se inscreveu no grupo "Node.js Brasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para nodebr+un...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.

Alan Hoffmeister

unread,
Feb 24, 2014, 11:40:53 AM2/24/14
to nod...@googlegroups.com
Eu não usaria Node.js para cálculos pesados, no projeto em que
trabalho, um módulo em C/++ consegue fazer o parse dos dados de uma
serial muito mais rápido que o javascript, obviamente, mas fora isso
não tenho nenhum contra até o momento.

Eu não sei se esse artigo está tão ultrapassado assim ou o autor for
infeliz em suas colocações, ele chega a comentar que não é possível
fazer um loop simples dentro de um template HTML com o Node.js
(woot?[0]), sendo que qualquer engine do Node consegue fazer isso...

Pesquisando mais a fundo vi que o Handlebars já havia sido lançado[1],
então foi falta de pesquisa do autor mesmo.

A questão do banco de dados é totalmente arquitetural, se a quantidade
de conexões no banco de dados é o problema, então alguma queue deve
ser implementada assim como spawnar mais slaves para a leitura, cache,
bla bla bla, não tendo nada a ver com o Node.js, sendo essa mais uma
infeliz colocação dele. Uma pessoa como eu, que adora fazer leitura
dinâmica das coisas, iria ler o título e achar que o problema em uma
aplicação Node.js -> SQL era o Node.js.

Para terminar, o chantilly em cima da cereja, o camarada solta essa pérola:

"Finalmente, em algum momento, espero um servidor Node pronto para
implantação, que você faça o download, instale e simplesmente coloque
seus arquivos HTML dentro dele como faria com o Apache ou o Tomcat."

Precisa comentários?

Sempre que for pesquisar recursos didáticos sobre novas tecnologias,
pesquise primeiramente pelo nível de conhecimento que a pessoa que
escreveu tem sobre essa tecnologia e logo após a data de publicação.

0 - http://goo.gl/zBd5L
1 - http://i.imgur.com/iOOwpQK.png
--
Att,
Alan Hoffmeister


Em 24 de fevereiro de 2014 13:07, Augusto Pissarra
<aberna...@gmail.com> escreveu:
> O node define um estilo de desenvolvimento com Javascript - desenvolvimento
> com promisses ou callbacks, e logicamente que tem todos os seus benefícios
> não bloqueantes (core do node). Não tem nada a ver com a questão
> transacional (ATOMICIDADE de uma transação). O node, através de seus
> drivers, pode ser usado com qualquer tipo de banco de dados (SQL e No-SQL).
> Para atingir atomicidade na transação, deve-se usar um SQL (MS-SQL, Oracle,
> Postgres, MySQL, etc...). A não ser que TODAS as duas transações estejam em um
> documento, key-pair, etc... de um No-SQL DB).
>
> A escolha de uma linguagem para o seu projeto, passa por uma decisão
> técnica, mas também há outros pontos a considerar como conhecimento do seu
> time, investimento em linguagens e profissionais de sua empresa, etc.
>
> O node cabe em qualquer tipo de projeto, destaca-se em vários outros, mas no
> final há várias outras linguagens que também tem seus méritos e podem ser de
> ótima escolha.
>
> Mas volta a colocar, que NENHUMA delas, resolver questão relacional ou
> transacional. Quem resolver é banco de dados!
>
> Abs,
>
> ________________________________
>
> Augusto Bernardo
> (55 11) 98851-6629
> www.highdesign.com.br
>

Alan Hoffmeister

unread,
Feb 24, 2014, 11:59:05 AM2/24/14
to nod...@googlegroups.com
O artigo original em inglês já foi retirado do ar[0], entrei em
contato com os responsáveis pela developerWorks Brasil (Flavia
Carvalho <flav...@br.ibm.com>) para tentar retirar o artigo traduzido
também.

0 - http://www.ibm.com/developerworks/opensource/os-nodejs-resources-.html
--
Att,
Alan Hoffmeister


Em 24 de fevereiro de 2014 13:40, Alan Hoffmeister
<alanhof...@gmail.com> escreveu:

Samuel Castro e Silva

unread,
Feb 24, 2014, 12:03:24 PM2/24/14
to nod...@googlegroups.com
Opa, obrigado pelas informações e principalmente pela atenção.

Abraços.
Samuel

Samuel Castro

(37) 9110-8850

willian firmino

unread,
Feb 24, 2014, 1:00:44 PM2/24/14
to nod...@googlegroups.com
Um sistema do tipo ERP tipico de empresas corporativas com muitos formulários e relatórios eu ainda faria em Java não faria em Node. Pelo menos hoje ainda não.

Alan Hoffmeister

unread,
Feb 24, 2014, 1:06:35 PM2/24/14
to nod...@googlegroups.com
@Willian, por que?
--
Att,
Alan Hoffmeister


Em 24 de fevereiro de 2014 15:00, willian firmino
<willian....@gmail.com> escreveu:

principe...@gmail.com

unread,
Feb 24, 2014, 1:18:29 PM2/24/14
to nod...@googlegroups.com
eu penso o mesmo.

Samuel Castro e Silva

unread,
Feb 24, 2014, 1:38:18 PM2/24/14
to nod...@googlegroups.com
Pois é pessoal, tenho pesquisado e lido bastante, percebi que tem muita gente falando coisas equivocadas, por exemplo, neste artigo (http://www.gonow.com.br/blog/2011/12/12/node-js-trabalhando-com-alta-concorrencia-na-web/), o cara escreveu: (copiei e colei do artigo)

O que não deve ser feito com Node, a saber:
- Aplicação direta com grande banco de dados relacionais
- Sistemas com alto volume transacional

Pessoas que estão começando (como eu), acabam tendo uma visão errada da plataforma, sobre a questão de ERP, estou com um projeto novo, que terá bastante volume de transações, e gostaria muito de utilizar o Node.

Abs.



principe...@gmail.com

unread,
Feb 24, 2014, 1:48:18 PM2/24/14
to nod...@googlegroups.com
eu tb comecei a pouco no node, embora eu tenha muita experiencia com dev, principalmente web, mas vejo que o node tem muito, muito potencial, nao so com programacao, com desenvolvimento mas em tecnologia em si (desenvolvi um projeto com node e arduino q so foi possivel com node). Entretanto o que eu nao gosto do node eh a organizacao, vc poe tudo num app.js ou server.js e start o node....

Eu hj desenvolvo uma intranet corporativa numa empresa offshore, e acredite ela eh gigante, pois compreende todos os departamentos da empresa, com seus subdepartamentos. Hoje utilizo o zend framework 2 por conta de sua modularizacao, a mesma que o node nao possui. Por conta de alguns requisitos terei que trocar para angular com couchdb e o node servindo uma unica pagina (o angular fara o resto).

Resumindo, acho que o node seria para web em tarefas pequenas e grande para tecnologias, digo, ligar tecnologias absurdamente diferentes (ligar um hardware a um software com o minimo de esforço). Mas da pra fazer qq coisa com ele? depende do seu projeto, assim como eu nao consegui fazer so com php, havera algo q nao dara pra fazer com ele etc. nada na informatica em 100%, nada é perfeito.

Augusto Pissarra

unread,
Feb 24, 2014, 1:58:13 PM2/24/14
to nod...@googlegroups.com
Samuel,

O node é capaz de receber inúmeras chamadas e este é o ponte forte dele. Indiferente do tipo de dado ou qual é o tipo da chamada. Não podemos confundir com transação. As pessoas tem o costume de pensar que as chamadas no node são transações. Pode-se até chamar assim, mas fica ambíguo, quando se refere a transação de dados em um banco de dados.

Eu prefiro falar que o node recebe chamadas (assíncronas) e a base de dados trabalha com transações.

No que se refere a capacidade do node de aguentar o tranco de chamadas, se você seguir os padrões de desenvolvimento, você terá um sistema altamente responsivo. Este é o ponto forte do Node.

No que se refere a alto volume transacional com a base de dados, isto não tem nada a ver com o node, e sim com a sua escolha de um driver bom que irá conversar com a base de dados.

Ai sim, a pergunta a se responder não é usar o node ou não, e sim qual tipo de base de dados usar (SQL, No-SQL, etc…).

Se o seu sistema requer um grande controle transacional (ATOMICIDADE e DURABILIDADE), ai sugere-se um banco de dados relacional. Estes já são mais que comprovados em relação a qualquer tipo de sistema. Se o sue sistema precisa de rapidez e pode-se ter  ATOMICIDADE e DURABILIDADE em níveis de chaves ou documentos, ai um No-SQL cabe bem.

Uma união de forças nas bases de dados para que você possa tirar o máximo de cada uma, é uma solução que deve ser explorada para que o sistema possa ser escalável.

Mas ai, também sugiro acompanhar as listas das bases de dados para obter melhores informações.

Voltando ao node… O node sim é capaz de atender a grandes volumes de chamadas. E se transação para você quer dizer, a quantidade de chamadas ao seu sistema por segundo (chamadas), não se preocupe. O node kickes ass! É bom demais. Vai te atender 100%.

Abs,

Augusto Bernardo
(55 11) 98851-6629
www.highdesign.com.br

email_hd


 


Fabrício Ferrari de Campos

unread,
Feb 24, 2014, 2:22:40 PM2/24/14
to nod...@googlegroups.com
Oi Samuel,

Nem é a questão das pessoas escreverem coisas erradas, o que acontece é que o ecosistema do Node vem evoluindo e maturando rapidamente. Portanto sempre busque artigos atualizados (de 2013 para cá).

Abraço!

Samuel Castro e Silva

unread,
Feb 24, 2014, 2:30:12 PM2/24/14
to nod...@googlegroups.com
Entendi Augusto, muito obrigado.

Venho a alguns anos desenvolvendo soluções em Java, e utilizo por exemplo, Spring, JPA, Hibernate e etc, onde controlo as transações, realizando rollback quando ocorrer algum erro, mapeamentos One-to-One, Many-to-One e etc, esses controles transacionais que estou mencionando.

Abs.

Augusto Pissarra

unread,
Feb 24, 2014, 2:46:04 PM2/24/14
to nod...@googlegroups.com
Samuel,

Em relação a isto, eu só posso falar sobre No-SQL (mais especificamente do mongodb). Ainda não trabalhei com SQL e o Node.

Pessoal, alguém tem alguma sugestão de driver para SQL que trabalha como o Hibernate ou algo do gênero?

Ricardo Tomasi

unread,
Feb 24, 2014, 3:23:49 PM2/24/14
to nod...@googlegroups.com
No início de 2010 já tínhamos jqtpl, kiwi, eco, mustache e outras, logo depois já vieram EJS, jade e handlebars, o final de 2010 foi a "golden age" do node :) Enfim, artigo bastante infeliz.

David Lojudice Sobrinho

unread,
Feb 24, 2014, 6:47:55 PM2/24/14
to nod...@googlegroups.com
@principe,

"Entretanto o que eu nao gosto do node eh a organizacao, vc poe tudo num app.js ou server.js e start o node...."

"Hoje utilizo o zend framework 2 por conta de sua modularização"

Vc está comparando banana com parafuso. O nodejs não impõe nenhuma organização porque ele não é um enquadramento (tradução literal de framework ;-) ) . Vc pode comparar o Zend com Rails, Sails.js ou outros Web Frameworks. Até comparar com o Express é uma comparação parcial. 

Eu tenho defendido, aqui principalmente [0], a não utilização de um framework end-to-end, com o stack completo. Mas se para iniciar um projeto em node vc acha que tudo tem que ficar em um arquivo (app.js), talvez um framework seja um bom guia para te ajudar a separar os interesses (concerns) em classes e arquivos. Mas isso é a modelagem / arquitetura da sua aplicação e o node.js não te ajuda (nem atrapalha) nesse ponto. 

@samuel, IMHO, o que deve ser levando em conta na hora de escolher a solução para seu projeto é [tecnologia + conhecimento do time + ecossistema].

Em tecnologia, o node.js se encaixa em muitos projetos pq ele é simplesmente uma VM javascript (muito foda, btw) com I/O assíncrono. Por ser simples, ele se encaixa em muitos (mas não todos) os projetos. Como eu falei acima para o @principe, o node.js é tão simples que não vem com muitas "cercas", do que pode ou o que não pode. Isso pode ser ruim, pois sua aplicação pode acabar virando uma lambança. Ou pode ser muito bom, pois vc tem liberdade para modelar sua aplicação como melhor entender.

Sobre o conhecimento do time, é importante pensar que o node é javascript e essa linguagem é simples e complicada ao mesmo tempo (prototype e funcional me veem a mente). Além disso node é assíncrono, e o modelo mental desse modo de programação é mais complicado ( arbrearquivo(function(texto) {...}) ) que o modelo síncrono ( texto = abreaquivo() ). Talvez sua equipe não se sinta confortável com esses conceitos. Mas dependendo do seu projeto esses pontos são apenas detalhes que valem seu custo. 

Já o ecossistema é talvez o ponto mais importante atualmente. No caso do node.js vc vai encontrar uma comunidade extremamente ativa e que não para de crescer (essa lista é um exemplo). A quantidade de módulos javascript que roda em node.js está entre as maiores entre as linguagens mais populares [1]. Vc encontra de tudo lá, até Web frameworks :), passando por ORMs, drivers para seus banco de dados e afins. 

E um último ponto, agora sendo menos vendedor e mais sincero, é importante ressaltar que algum dos principais módulos do node.js tem menos de 2 ou 3 anos. O próprio node.js foi criado em 2009. Comparado com outras tecnologias, mesmo com os pontos favoráveis acima, talvez vc queira algo mais maduro e mais estável (Java, .Net ou mesmo Rails) para alguns projetos. Algumas empresas tem culturas mais conservadoras e precisam ser respeitadas. Mas se o momento é questionar a cultura da empresa, o node.js é um bom jeito de mudar "dando exemplo" [2].

Bom, dado tudo isso, acho que node.js cabe, hoje em dia, em muitos e muitos projetos dentro das empresas, inclusive em um ERP. Se esse for esse o caminho que vc escolheu, é bom saber o que vc vai encontrar pela frente. 

[0]


__________________

   David L. S.
dals...@gmail.com
__________________

principe...@gmail.com

unread,
Feb 24, 2014, 7:47:16 PM2/24/14
to nod...@googlegroups.com
@david, entao por favor, me indique um framework...eu tenho testado o salis e o geddy, pode ser ma adaptabilidade minha, mas nao tenho me dado com estes framework, nao sei se eh minha interpretacao dos manuais, ou a ferramenta..

Filipe Deschamps

unread,
Feb 25, 2014, 5:31:49 AM2/25/14
to nod...@googlegroups.com
E o detalhe dos wrappers é muito importante, pois o que o Node não fizer de forma nativa e rápida, como por exemplo converter um vídeo ou otimizar uma imagem, com certeza haverá um wrapper para algum binário e que terá uma API incrivelmente boa de se utilizar, fora que é super fácil plugar e gerenciar isto com o NPM, seja qual for o ambiente em que estiver.

A questão das APIs é o que eu gosto no mundo do Javascript. Parece que, da mesma forma que existe uma cultura no mundo Apple para que tudo seja bonito, existe uma cultura no mundo Javascript para que todas as APIs sejam muito bem construídas. Há um carinho diferente e especial neste quesito.

Samuel Castro e Silva

unread,
Feb 25, 2014, 11:17:13 AM2/25/14
to nod...@googlegroups.com
Encontrei o que eu precisava sobre transações: http://sequelizejs.com/docs/latest/transactions.

Obrigado turma.

Abs.




Samuel Castro

(37) 9110-8850

Reply all
Reply to author
Forward
0 new messages