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

Quiero aprender las pruebas de servicios web, principalmente las pruebas de servicios RESTful. ¿Dónde debo comenzar y cómo debo progresar?

Como aficionado al diseño y desarrollo web, quiero crear mi nuevo sitio web con WordPress. ¿Cómo podría configurar esto mientras mi dominio todavía está alojado en otra plataforma y migrarlo rápidamente a WordPress, con poco tiempo de inactividad?

Estaba viendo a algunas personas en el código de YouTube, los temas de WordPress y todos sus archivos .PHP tenían HTML. ¿Por qué no usan .HTML para el tipo de archivo?

Estoy a punto de crear una aplicación para Android y me pregunto si alguno de ustedes recomendaría usar un servicio de back-end como Firebase o Parse, o simplemente escribir el back-end por mi cuenta en Ruby on Rails.

Estoy aprendiendo desarrollo web pero realmente no lo disfruto. ¿Debo dejar de aprender?

Quiero tomar mis habilidades de diseño web y convertirlas en sitios web reales. ¿Qué debo aprender a codificar primero?

Cómo seleccionar todos los valores desplegables usando Selenium WebDriver

Quiero un trabajo de desarrollador PHP pero no tengo ninguna experiencia en este momento. Estoy desarrollando una muy buena aplicación web por mi cuenta. ¿Mi proyecto PHP será tratado como experiencia?

Estoy interesado en el desarrollo web pero no tengo antecedentes en él. ¿Qué lenguaje (s) de programación debo elegir y por qué?

Si uso CDN para mi sitio web de WordPress, ¿hay algún beneficio?

Cómo desechar una página web con Easy Data Feed 1.32.12

Hice una copia de seguridad y restauración de una colección de sitios de SharePoint de una aplicación web a otra, ¿el sitio raíz tenía un formulario de ruta de información al que no se puede acceder ahora?

¿Qué sitios web ayudan a estudiar diseño web desde casa?

El desarrollo web está creciendo y evolucionando rápidamente. ¿Debo considerar profundizar mi conocimiento?

¿Qué debo cambiar para mejorar mi sitio web al convertir nuevos clientes (https://maidonthespot.com)?