Dada la opción entre .net rest API vs Node.js vs otra plataforma, ¿cuál elegirías como plataforma API para construir una aplicación sincrónica y sin bloqueo que debería manejar millones de solicitudes concurrentes?

Hay al menos 2 partes de este problema: una plataforma de API de descanso para usar y el aspecto de escalabilidad de la misma.

  • En términos de marcos de API de descanso, tienes. Net web api, Java spring MVC, Python Django, Node JS, etc.
  • En términos de escalabilidad, suponiendo que esté en la nube, hay 2 formas: servidor basado en escalado automático y menos servidor (que es escalado automático)

No hay una respuesta correcta para la plataforma API de descanso específica o el enfoque de escalabilidad que debe adoptar. Realmente depende de la definición de su problema, el conjunto de habilidades de su organización, su inversión en Azure o AWS o Google Cloud, etc. y la preferencia de su organización por un servidor basado en un servidor menos.

Así que aquí hay una respuesta subjetiva personal .

  • Cuando intentamos resolver un problema comercial, solo el 20% es realmente un problema único, técnicamente.
    • El 80% es un conjunto rutinario de trabajo duro. Trabajo muy muy importante, pero aún trabajo duro.
    • Esto implica configurar la API de descanso o los marcos web, aprovisionar máquinas, configurar servidores web, implementar en estas máquinas, configurar equilibradores de carga para ellos, escribir registros y métricas, configurar autenticación y autorización, escalabilidad, aceleración, control de versiones, compatibilidad con versiones anteriores, etc. .
    • La lista de cosas anterior es muy común para cada problema que intentamos resolver. En algún lugar de todo ese montón, hay un poco de trabajo, que es la pieza única específica de nuestra definición del problema.
      • Por ejemplo, obtener órdenes de compra de una base de datos, calcular los controladores de Uber más cercanos, hacer coincidir los mejores perfiles de citas, etc.
      • Todo a su alrededor es un trabajo glorioso, y la gente ha pasado años en la toma de decisiones y argumentos.
  • Personalmente, me gusta centrarme en lo mínimo, arquitectónicamente. Y últimamente, han surgido varias tecnologías nuevas que te permiten hacer eso.
  • Un ejemplo específico aquí es aws api gateway con código lambda basado en nodo js. 100% sin servidor.
    • Con la puerta de enlace de la API, elimina un marco de API de descanso programático y deja que aws se encargue o eso.
    • Con lambda, eliminas los servidores.
    • Su código en última instancia no es un código de API de descanso o un código de aplicación web. Es un simple código de nodo central js. Solo un método. Nada mas ni menos.
    • Puede probar este método por unidad, como prueba cualquier otro método. Sin burlarse del contexto http, el contexto web, las rutas y los controladores.
    • Obtiene toda la experiencia de aws en escalado. Es inimaginable.
  • No hay equilibradores de carga para aprovisionar, no hay máquinas ec2 para aprovisionar, no hay sistema operativo para decidir, no hay marcos para evaluar, no hay debates sobre los marcos de la API de descanso, no hay esfuerzo para escalar, obtienes enormes métricas listas para usar, soporte de versiones, etc.
  • Y solo va a mejorar cada vez mejor.
  • El equivalente en Azure son las funciones de Azure.
  • Al final del día, ha eliminado la mayoría de los trabajos grupales periféricos y se ha centrado en el método central que es su problema específico para resolver.
  • Y a medida que profundice más, verá autenticación, autorización (claves api, roles iam y aurhtoizers personalizados) listos para usar.
  • Y lo más importante, su código está tan simplificado para ser solo métodos de biblioteca. Es una alegría.

Esa es mi opinión personal sobre las cosas.

¿No quieres decir “asíncrono, sin bloqueo”? “Síncrono, sin bloqueo” no existe, porque “síncrono” es, por definición, bloqueo.

Tu respuesta es Restbed de todos modos. Es un nuevo marco REST de C ++ poco conocido que ejecuta círculos alrededor de .net, Node.js y todo el paquete de plataformas REST que aparecieron antes. Caso en cuestión: un ejecutable de 100K puede ser una API REST completa, pila completa. No se necesita ningún otro software de servidor, y la velocidad es exponencial a la de Node.js. Tendrás que escribir en C ++. Es mucho, mucho más poderoso que cualquier otro marco REST.

Elijo Node.js, porque está diseñado para manejar millones o solicitudes concurrentes, altamente escalable y sin bloqueo. Este artículo describe quién usa Node.js en 2017.

Nodo o Ir. La barra es algo más baja para Node, en un sistema bien diseñado, sospecho que Go funcionará mejor, aunque hay muchos ejemplos de Node ejecutándose a escala de Internet. Al final del día, tendrá que hacer coincidir su hardware con su pila de software para obtener el rendimiento que está buscando.

Yo mismo no usaría .NET, pero también hará el trabajo.