Soy un antiguo fanático de Lua para el desarrollo web. Amo el idioma y amo la velocidad.
OpenResty es una locura rápida, y contrario a la creencia popular, eso puede ser importante. Una vez vi un servicio basado en Python que costaba más de $ 10k por mes para ejecutarse, con escalado automático y asignación dinámica de recursos. Los desarrolladores estaban realmente orgullosos de ello.
Tres servidores OpenResty podrían haber manejado la carga máxima a un costo de unos cientos de dólares al mes, con mucha menos complejidad, un código mucho más limpio y simple (debido a las rutinas), y la capacidad de manejar 10 veces su carga máxima sin siquiera sudar.
- Quiero poder crear aplicaciones web / híbridas. Estoy listo para profundizar y aprender. ¿Son las tecnologías que planeo aprender una buena elección? Leer detalles.
- Cómo crear una baliza web
- ¿Qué programadores contrato para crear un sitio web como IMDb?
- ¿Qué tipo de aplicaciones web puedes hacer con PHP central?
- ¿Cuáles son las ventajas de usar AngularJS?
Pero, como dije, soy un ex fanático. Todavía tengo un poco de código ejecutándose en OpenResty, y funciona bien, por lo que es posible que nunca lo cambie. Pero he redescubierto los beneficios de la escritura estática, y no voy a volver.
OpenResty y Lua siguen siendo rápidos, pero he hecho la transición a TypeScript y NodeJS. Los tipos estáticos le brindan protección contra categorías enteras de errores, aceleran el desarrollo en aproximadamente 2x (a menos que tenga una memoria perfecta para todas las estructuras de datos de su aplicación, y tengo una memoria realmente buena), y permiten una refactorización y una exploración de código realmente buenas en su herramientas.
Sin embargo, eso fue solo una parte de la historia. NodeJS tiene cientos de miles de bibliotecas disponibles para ello. TypeScript tiene declaraciones de tipo para más de dos mil de esas bibliotecas, por lo que puede usarlas con seguridad de tipo de competencia. El administrador de paquetes de Lua tiene alrededor de dos mil bibliotecas en total , y no todas funcionan en LuaJIT en OpenResty (que se basa en Lua 5.1, mientras que las versiones 5.2 y 5.3 tienen cambios importantes). Peor aún, he encontrado que muchas bibliotecas son deficientes o desactualizadas (algunas con solo soporte para Lua 5.0, por ejemplo).
La comunidad para NodeJS es solo un orden de magnitud mayor, por lo que hay mucho más soporte para casi todo.
Otro punto: el lenguaje Go de Google es más rápido incluso que Lua, por un buen margen, y ya tiene una gran comunidad y una increíble biblioteca incorporada. Entonces, si necesita ese último bit de velocidad, puede usar Go y obtener la velocidad y la seguridad de tipo estático. Por cierto, si compara Go con Lua, notará varias similitudes; Estoy bastante seguro de que algunas características fueron inspiradas por Lua.