¿Cuál entre Go y Node.JS es una mejor opción para construir una solución de back-end, si el equipo de desarrollo no tiene experiencia en ninguno de ellos?

Todavía no he trabajado en ningún proyecto que requiera Go como solución de fondo. Sin embargo, como leí sobre el lenguaje y lo probé en algunos proyectos de prueba, puedo dar mi opinión y tratar de compararlo con Node.js.

Node.js se basa básicamente en la pila completa de JavaScript. Si está utilizando otros componentes de MEAN stack que Node.js es una opción obvia. Escuché que es una exageración para las API REST simples, sin embargo, considero que es más rápido que PHP o ASP .Net cuando construyo API. También funciona rápido, debido a que no depende de un contenedor separado. Es totalmente personalizable, por eso me gusta mucho.

Ahora el problema es que depende demasiado de las promesas y devoluciones de llamadas de JS. Se ejecuta en un único subproceso, por eso es más rápido que cualquier otra aplicación multiproceso, pero cuando tiene una operación compleja que bloquea el único subproceso, su aplicación completa se detiene. He usado otros hacks para superar esto, pero debes saber que un hack es siempre un hack.

Soy fanático de Node.js, aunque odio JavaScript. Me encanta su modularidad y escalabilidad. Pero por lo que he escuchado, las compañías que han estado desarrollando soluciones de backend en Node.js por un tiempo se están moviendo hacia Go ahora. Especialmente aquellos que tienen algún tipo de procesamiento de back-end, como procesamiento de texto, procesamiento de imágenes, aprendizaje automático, etc. Eso se debe a la razón mencionada anteriormente.

En mi opinión, Node.js es una mejor opción, excepto cuando no lo es. Obtendrá mucho apoyo de la comunidad y, lo más importante, NPM en el lado de Node.js. Pero eso es realmente dudoso en Go side según mí. Si no está buscando una operación compleja en el back-end, le sugiero que pruebe Node.js, pero si necesita un entorno multiproceso y no necesita soporte de la comunidad en forma de paquetes, elija Ir.

Encontré un artículo en el que una empresa explicaba su cambio de Node.js a Go, aunque es parcial, pero informativo:

De Node.js To Go, por qué una startup hizo el cambio: la nueva pila

Descargo de responsabilidad: podría estar equivocado sobre Go, ya que aún no lo he probado en un entorno de producción.

Node.js:

Pros:

* Básicamente es JavaScript del lado del servidor. Si conoce JavaScript, no hay mucha curva de aprendizaje. Uno solo necesita alinear su mente al pensar en escribir javascript que pueda ejecutarse en servidores de back-end y realizar las tareas habituales que hace un lenguaje de back-end. es decir, hablar con bases de datos, caché, preguntas, etc. Por lo tanto, es mucho más fácil de adoptar.

* Debido a su cercanía a JavaScript, muchos desarrolladores web ya se han mudado al nodo. Esto significa que hay un tremendo apoyo de la comunidad.

* Puede encontrar fácilmente complementos para la mayoría de las bases de datos, agrupación de conexiones, caché, colas, alogoritmos, etc.

* Debido a su modelo basado en eventos, es fácil de lograr múltiples subprocesos.

Contras:

* El bucle de eventos Node.js es de un solo subproceso. Entonces, en caso de que necesite algún cálculo complejo, Node.js no es para usted. (Aunque hay algunos trucos para superar esto, pero estos son bastante sucios por naturaleza y deberían evitarlos tanto como sea posible).


Ir:

Pros:

* Rápido.

* Soporte multihilo incorporado.

* Capaz de cálculos complejos.

Contras:

* Es bastante más difícil de adoptar.

* No hay mucho apoyo de la comunidad. Es difícil encontrar versiones estables de conectores para hablar con otras tecnologías de código abierto.


PD: Node.js debería preferirse actualmente, pero a la larga, Go es el idioma de acceso.

Nodejs es fácil de aprender, ya que es JavaScript. También es bueno para la programación asincrónica. Pero en el lado negativo no es bueno para las tareas intensivas de la CPU. Nodo js tiene un apoyo comunitario más amplio.

Golang, por otro lado, es todo lo que es el nodo y también es bueno para las tareas intensivas de la CPU. La sintaxis está más cerca de c / c ++ y no es tan fácil de aprender. A las personas que usan python les resulta más fácil adaptarse a la programación.

Tldr: usa golang si buscas una perspectiva a largo plazo. Use nodejs para un desarrollo rápido y fácil.

Iría con Node.js en lugar de ir, ya que aprender ‘nodejs’ es un poco más fácil que ‘ir’ y también es principalmente compatible con el front-end debido a JSON. Podemos lograr un comportamiento de subprocesamiento múltiple en un entorno de subproceso único que es muy fácil de construir y mantener, y ese no es el caso con go language.

Chicos Esto es lo que pregunté en enero de 2016. Continuamos desarrollando un sistema en Node.js y funcionó muy bien. Busque Node.js para servicios … si el cálculo dentro del servicio no es lo que usted es buscando.

Voy a romper la tendencia hacia Node.js. Principalmente porque creo que la programación debería ser divertida.

Node.js, como dice la gente, es solo javascript. Todo lo que puedo decir es)););}}])) 😉

Ir es simple, divertido y hermoso. Puede ser de largo alcance, un poco como escribir C ++ en comparación con algo como Python. Pero si quieres velocidad, flexibilidad y control, creo que se necesita algo de paliza.