Voy a comenzar a desarrollar un gran proyecto de red social. ¿Debo usar Node.JS o necesito usar Java (para el backend)?

Independientemente del idioma en el que pueda mantener el código de manera efectiva y la herramienta adecuada para resolver problemas de escala desde el principio. No se trata del lenguaje el 99% del tiempo, sino de la arquitectura utilizada para construir los servicios y su capacidad de propagarse fácilmente por la infraestructura. Por ejemplo, ¿estás construyendo un monolito? ¿Sabes lo que digo cuando pregunto eso? ¿Conoces las alternativas a este enfoque? Si no lo hace, entonces no importará en qué idioma lo programe porque no está lo suficientemente lejos en el camino para comprender realmente lo que está haciendo. Simplemente escríbalo y espere que llegue a lo grande y obtenga suficiente capital para atraer a muchas personas para romper sus problemas y ayudar a resolverlos con / para usted si el éxito llega en su camino.

Como dijo Simon Kinahan, la gente le dirá qué usar y qué no usar. Si escuchas a esas personas, serán rápidamente contradichas por alguien que usó esas tecnologías que ha tenido un éxito masivo con ellas.

Al final, tiene 2 maestros para pagar en un entorno de usuario grande: escala y facilidad de mantenimiento. Si enfrenta estos desafíos, debe planificar cómo los enfrentará desde el principio; de lo contrario, cuando llegue el momento de enfrentarlos, sufrirá y enfrentará el potencial de perder dinero, usuarios y enfrentarse a la reacción violenta de las personas que le dieron dinero y los usuarios que optaron por utilizar su servicio.

¿Deberías usar Node? Seguro. Si todo su sistema está construido en Node o Java, ¿puede cocinarme un asado con helado y tacos? ¿Por qué elegiría Node o Java sobre las otras cosas disponibles? En realidad, todo se reduce a las intenciones de manejar la información y saber cuándo usar qué herramientas cuándo / dónde.

Node y Java: estas son dos bestias muy diferentes: ¿qué harás realmente y por qué elegirías un idioma / herramientas (u otros idiomas / herramientas en los que no estés pensando porque …?). Estas deberían ser sus preguntas y algo que la gente aquí no podría responder sin la información completa de lo que planea construir. “Redes sociales” significa muchas cosas diferentes para diferentes personas.

No hay reglas aquí y tanto Node.JS como Java serían opciones perfectamente buenas.

Esto se debe a que, al final del día, hay redes sociales y otras aplicaciones web de alto tráfico creadas en una amplia gama de idiomas.

  • LinkedIn es un gran sitio web de Java mientras
  • Hashnode es una red social en crecimiento construida con Node.JS. PayPal es un gran sitio que ha estado allí, hecho también.
  • PHP: Facebook comenzó PHP y evolucionó a Hack / HHVM
  • C #: Desbordamiento de pila usa una pila WISC
  • Python: Instagram es el sitio Django / Python más grande del mundo.
  • Ruby: Github es una aplicación exitosa de Ruby on Rails.

Claramente, el factor más importante es el talento de ingeniería disponible, ya que esta es una empresa no trivial. Averigua con qué idioma serás más rápido y ve desde allí.

Para las redes sociales en particular, manejar las líneas de tiempo ubicuas, los canales de notificación y el gráfico social es una carga de trabajo difícil de escalar. Stream (una API para líneas de tiempo y noticias; donde trabajo) definitivamente debería acelerar su desarrollo y simplificar el mantenimiento.

Hay muchas de estas preguntas en Quora. Hay tantos que me siento tentado a marcarlos como duplicados, pero es casi seguro que se deshagan. La forma general es “Estoy a punto de comenzar un proyecto de programación mucho más allá de lo que una persona puede hacer en un tiempo razonable, ¿qué tecnología debo usar?” La respuesta es que estás haciendo la pregunta equivocada.

El front-end de Facebook está escrito en PHP. La búsqueda de Google está escrita en C ++. Casi cualquiera diría que estas están entre las peores opciones para una aplicación web moderna. Sin embargo, estas son las compañías web más grandes y exitosas del mundo. Sus tecnologías principales están escritas usando tecnologías que nadie en su sano juicio usaría.

Lo que importa es lo que haces, no cómo lo haces.

Soy desarrollador de Node.js. Para este proyecto del que está hablando, use absolutamente Java, Scala, TypeScript u otro lenguaje estáticamente tipado. Node.js se vuelve muy difícil de mantener en proyectos más grandes. Akka.io, Vert.x y otras plataformas JVM también tienen E / S asincrónicas (servidores sin bloqueo). Node.js es fuerte para proyectos más pequeños, microservicios y proyectos que realmente necesitan metaprogramación y las fortalezas de un lenguaje dinámico. Con un gran servicio de backend estándar, probablemente * no * necesitará capacidades de metaprogramación y, a la larga, las fortalezas de un lenguaje de tipo estático pagarán dividendos.

Entonces, si realmente quieres algo parecido a JS, usa TypeScript en el backend y TypeScript con Angular2.0 y probablemente estarás muy contento.

Como ejemplo, la refactorización de un nombre de variable (por ejemplo, una columna en una tabla de base de datos) puede llevar horas o incluso días en un servidor Node.js, pero podría tomar segundos en uno escrito con un lenguaje estáticamente escrito.

Como ya respondió, el idioma no es relevante. Sin embargo, estoy más preocupado por tu negocio. Debe hacer preguntas sobre lo que desea lograr y hacer comentarios. Podría ahorrarle un tiempo serio (tal vez desarrollando algunas características primero, o no desarrollando otras, etc.).

Use lo que le resulte más cómodo. Haz el producto primero. Puede cambiarlo más tarde si se siente tan inclinado. Twitter comenzó con Ruby; ahora está en Scala.

No hay nada aquí con lo que se sienta cómodo, ya que depende totalmente del requisito. Si desea más votos híbridos, nodos JS y si desea más votos nativos, entonces Java, entonces eso depende.

Gracias

Yo iría con Node. Es rápido, por lo que a medida que el sitio web escala se alegrará de haberlo hecho.

More Interesting

Mi sitio web está a punto de ser lanzado. Está construido en HTML, PHP y Javascript. ¿Cuáles son algunas medidas de seguridad que puedo tomar?

¿Por qué me cuesta codificar cuando no están todos mis compañeros de clase?

¿Cómo se edita el código de otro sitio web y se ejecuta en mi propio sitio web?

Quiero especializarme en lugar de ser un desarrollador de pila completa. ¿Cuáles son algunos nichos que debería mirar?

Estoy estudiando ingeniería de software y también desarrollo de backend. Estoy rodeado de personas que piensan que los desarrolladores de backend ganan menos. ¿Les creeré?

Quiero desarrollar un sitio web de compras en dotnet, pero no sé nada sobre dotnet. ¿Dónde debería comenzar a estudiar? ¿Cuáles son algunos libros electrónicos gratuitos que me pueden ayudar? (principalmente libros electrónicos para ASP.NET).

Quiero convertirme en desarrollador front y backend. No sé por dónde empezar, pero quiero hacerlo. ¿Cómo es posible esto?

Tengo la carga de manejar el back-end para el inicio de una aplicación web. ¿Cuál es el orden apropiado para aprender estas pilas: MySQL, Flask (Python), SQLAlchemy, Javascript y Twitter Bootstrap?

Cómo integrar CKEditor con el modelo y vista Codeigniter

Tengo una idea increíble de aplicación / sitio web que puede obtener más de mil millones de usuarios. Pero no he requerido dinero y habilidades de codificación. Intenté la financiación colectiva pero no me ayudó. ¿Qué tengo que hacer?

Cómo comparar las cotizaciones recibidas de las empresas de desarrollo de sitios web para diseñar y construir un nuevo sitio web

¿Estoy siendo estúpido al elegir MySQL para mi aplicación Node.js en 2016?

¿Las personas se están alejando de PHP? ¿Por qué?

Quiero crear un sitio web desde cero, ¿cuáles son los conceptos básicos que debo saber?

Estoy a punto de tomar un curso de Mongo DB sobre Udacity. Pero no tengo ningún conocimiento previo sobre conceptos de bases de datos como MySQL, etc. ¿Debo tomar el curso o debo comenzar con MySQL?