¿Qué necesito saber sobre el desarrollo de back-end para admitir un nuevo inicio?

Si mi interpretación (y edición) de su pregunta fue correcta, desea escribir un back-end para una aplicación o sitio web que pueda escalar razonablemente bien y que permita a los usuarios interactuar en tiempo real.

Para esos requisitos, elegiría una de dos plataformas / idiomas:

  • NodeJS
  • Ir

Ambos están diseñados para la interacción asincrónica con los usuarios, que es la mejor manera de obtener el máximo rendimiento de un servidor.

Para cualquiera que no haya hecho algo como esto antes, probablemente recomendaría NodeJS. Tiene la comunidad más fuerte y muchas opciones para el desarrollo de backend simple. Recomiendo también usar TypeScript (que es simplemente JavaScript + tipos) para la seguridad de tipos y mejores herramientas: si desea que su editor le diga qué miembros tiene un objeto en lugar de tener que mirar siempre la documentación, use TypeScript.

Ir es la opción más rápida. Dependiendo de lo que esté haciendo, tiene dos niveles de velocidad: más rápido que casi todas las demás opciones y más rápido que todo, excepto C ++ sintonizado a mano. La primera opción es si usa la biblioteca Go estándar. La segunda opción es si usa valyala / fast http.

Para una comparación aproximada, si tiene un servidor de alta gama bien ajustado intercambiando mensajes de chat a través de una base de datos (ver más abajo), y cada usuario envía un mensaje de texto cada 20 segundos, un servidor basado en NodeJS debería ser capaz de manejar entre 100,000 y 600,000 concurrentes usuarios. Go podría manejar el doble de usuarios, posiblemente más si su servidor está vinculado a la memoria.

Espere que estos números sean límites superiores realistas; Si no está escribiendo el código de manera óptima, o si utiliza un marco ineficiente, puede perder uno o dos órdenes de magnitud de rendimiento. Mire estos puntos de referencia, por ejemplo:

Puntos de referencia del marco TechEmpower

NodeJS puede alcanzar 92k consultas por segundo, pero si elige el marco sails.js, se reduce a 691 solicitudes por segundo. Go tiene tres marcos web que obtienen un mayor rendimiento que NodeJS optimizado, sin embargo, echo , goji y falcore . Cuatro si cuentas revel , aunque no fue este punto de referencia.

Si su aplicación se va a ejecutar en la web y desea admitir la comunicación en tiempo real, puede usar Socket.IO. Si está hablando con una aplicación, es posible que desee usar ZeroMQ, aunque esta última opción es más un desafío experto.

Después de elegir un idioma / ecosistema, debe elegir una estrategia de escala. Si elige un marco lo suficientemente rápido, probablemente pueda ignorar la mayor parte de esto al principio, y posiblemente para siempre (¿ realmente va a tener más de medio millón de usuarios concurrentes?), Pero es bueno diseñar con uno en mente. Un enfoque común es usar una base de datos para conectar a todos sus usuarios, si intercambian mensajes de chat o similares. Redis es una respuesta común, y puede replicarse en todos los servidores.

Si la aplicación está haciendo otra cosa, o algo más, la estrategia dependerá de la aplicación. Si yo fuera tú, leería sobre escalamiento e infraestructura. Ese es un tema completo en sí mismo, aunque afortunadamente puedes ignorarlo hasta que tu aplicación se vuelva popular.

Comience aprendiendo un lenguaje popular como Ruby, Python o C #. Luego…

  1. Lea sobre la construcción de una API que está al frente de una base de datos SQL o una base de datos de documentos sin SQL.
  2. Lea sobre el protocolo HTTP (es decir, los verbos GET, POST, PUT y DELETE).
  3. Intente crear una API súper simple con un par de métodos GET (uno que devuelva un objeto JSON y otro que devuelva una lista de objetos JSON).
  4. Descubre cómo implementar tu API en una plataforma en la nube como Heroku.
  5. Ejercita y prueba tu API con un cliente html como Paw o Postman.

Todo lo mejor.

Comience con cualquier idioma que desee. Realmente no importa.

No gaste un segundo en problemas de escala. Todo lo que necesitas es un producto! No hay problema de escala. Necesita resolver problemas reales y no crear otros nuevos.

Cree su MVP en el menor tiempo posible y pruébelo con clientes reales. No pierdas el tiempo aprendiendo algo que no necesitarás.

Esto es lo más importante para entender. Simplemente comienza a construir, no importa cómo. PHP, Java, Go, Python … ¿a quién le importa escalar si a la gente le encanta? Si lo hacen, de alguna manera descubrirán cómo funciona el escalado u otras personas lo implementarán cuando tengan fondos.

Conclusión: ¡Construye un producto, no importa cómo, y pruébalo!