En 2017, ¿qué pila tecnológica debo usar para optimizar una aplicación en tiempo real para el rendimiento, la escalabilidad y la legibilidad?

Para alta escala, lo más importante es poder agrupar varios servidores. Los canales de Django pueden hacer esto. No me preocuparía demasiado el rendimiento de los servidores individuales cuando esté comenzando.

Para facilitar la lectura, es ideal si puede usar un código de estilo síncrono en lugar del estilo de devolución de llamada, al menos para la lógica de su aplicación. Hay un par de formas de abordar esto:

Una es usar un lenguaje de programación que esté controlado por eventos pero que admita la codificación de estilo sincrónico (también conocido como co-rutinas, hilos verdes o fibras). Go, C # y Erlang funcionan de esta manera de forma nativa, y ahora también se muestra una capacidad similar en otros idiomas. Node.js siempre estuvo controlado por eventos, pero ahora tiene palabras clave async / wait. Python es opcionalmente impulsado por eventos, y últimamente admite palabras clave asíncronas / en espera con él.

La otra forma es separar las preocupaciones asíncronas en un proceso / trabajador separado. Así es como funciona Django Channels. Maneja las partes asíncronas por usted, por lo que solo tiene que escribir código normal que no sea asincio para la lógica de su aplicación. Este es mi estilo arquitectónico preferido, y de hecho trabajo en un proyecto de código abierto llamado Pushpin que funciona de manera similar.

Con este tipo de separación de trabajadores asíncronos / sincronizados, he podido crear una variedad de aplicaciones en tiempo real utilizando el código de fondo normal de Django para la lógica. No necesita olvidar todo lo que sabe solo para la capacidad en tiempo real.

Su elección de tecnología no va a hacer una diferencia aquí.

Se puede usar cualquier idioma o biblioteca para escribir código legible.

En cuanto a rendimiento y escalabilidad, debe hacer dos cosas: aprender a usar el almacenamiento en caché correctamente y evitar escribir consultas SQL tontas. Eso te llevará mucho más lejos de lo que piensas.

Puede sonar extraño, pero el muy antiguo Erlang es el camino a seguir, por su naturaleza distribuida, su tolerancia a fallas y su concurrencia. Si no le gusta su sintaxis, es posible que desee el nuevo lenguaje Elixir en el antiguo BEAM (máquina virtual Erlang).

Para el front end, no hay otra opción que javascript. Tanto Angular 2 como React son lo suficientemente rápidos y móviles. Sin embargo, no me gusta Angular 2.

Creo que deberías probar golang + Angular 2

> El lenguaje de programación Go

> Angular

Ambos están creciendo muy rápido en comparación con cualquier otro

Creo que esta será la tecnología más preferible en el futuro