¿Qué tecnologías elegirás para implementar el backend para una aplicación web escalable hoy?

Usaría AngularJS o Ember.js en el front-end, que consumirá puntos finales API (middleware). Elegiría uno de estos porque están listos para la producción y están bien respaldados. Los desplegaría usando una aplicación simple que sirve la página HTML inicial desde donde se inicia el Javascript.

Para el middleware, usaría Python o Go. Tengo mucha experiencia escribiendo API en Python, así que me siento más cómodo con él. También estoy familiarizado con Go, que tiene un gran modelo de simultaneidad para la escalabilidad, pero pierde muchas cosas buenas sobre la programación orientada a objetos, por lo que determinaría la mejor herramienta para eso. Es probable que los ejecute en contenedores Docker para escalar fácilmente agregando / eliminando contenedores según sea necesario para los niveles de tráfico.

Es probable que mi middleware consuma una capa API adicional (back-end) que lee y escribe en una o más bases de datos. Este servicio sería lo suficientemente inteligente como para saber que las operaciones de escritura deben ir a una base de datos maestra y que la mayoría de las operaciones de lectura podrían realizarse desde una base de datos esclava de solo lectura, suponiendo que fuera una base de datos relacional. Si se tratara de una base de datos noSQL, imagino que este servicio necesitaría conocer todos los hosts en ese clúster y consultarlos adecuadamente. También desplegaría este servicio en contenedores Docker para poder agregar más capacidad según sea necesario. Es probable que también los escriba en Go o Python por concurrencia y familiaridad.

Es probable que los sistemas de bases de datos se ejecuten en algo muy cercano al “metal desnudo” en los servidores, tan optimizado como sea posible (y tan práctico).

Prefiero usar Scala para la aplicación de fondo escalable, porque es más confiable que nodejs. CMIIW