En Figma, ejecutamos algunos servicios de comunicación basados en Node.js. Podría ser una buena opción, pero hay algunos ángulos a considerar.
- ¿Nativo o web? Una aplicación web habilitada para dispositivos móviles es fácil de encontrar para los usuarios y comenzar a usarla de inmediato. Android e iOS funcionarían de la misma manera, una gran ventaja porque no habría necesidad de escribir y mantener dos aplicaciones nativas diferentes. Sin embargo, la ruta HTML5 tenía inconvenientes. Probablemente consumirá más batería que una aplicación nativa y el rendimiento está muy influenciado por la forma en que se escriben JavaScript y CSS. No podrá aprovechar los servicios de notificación basados en inserción a menos que sea nativo, y cuando los usuarios cierren el navegador, los desconectará del chat. Una aplicación híbrida podría funcionar mejor, ya que la mayor parte de la capa de presentación del chat se escribe usando HTML5, pero las comunicaciones de red se escriben de forma nativa. Entonces solo necesita reescribir algunas partes para cada plataforma móvil nativa. Cualquiera de las vías tendrá que lidiar con una conectividad irregular almacenando en caché los mensajes que pueden “ponerse al día” con el cliente antes de la reconexión.
- Node.js en el backend? Esta es una buena opción porque Node es excelente para manejar muchas conexiones que tienen poco tráfico. La desventaja es que Node solo se ejecutará en un subproceso de CPU a la vez, por lo que si está creando más de unos pocos miles de conexiones activas concurrentes, es posible que tenga que pensar en ejecutar un clúster de procesos y tal vez descubrir una comunicación entre procesos sistema. Go lang ya tiene esto en la biblioteca de la clase base y podría ser más adecuado. La recolección de basura en Node también puede causar una congelación aleatoria temporal durante unos segundos, por lo que si esa pequeña pérdida de disponibilidad es importante, considere una alternativa compilada como Rust. El tamaño de almacenamiento dinámico de Node y otras características de manejo de memoria pueden controlarse mediante argumentos de línea de comandos, pero las aplicaciones de larga duración en Node pueden consumir rápidamente toda la memoria disponible en una máquina. Tenga cuidado con las pérdidas de memoria y considere usar el Script mecanográfico para ayudar a prevenirlas. Además, y no puedo enfatizar esto lo suficiente, debe usar un proxy front-end como nginx. Esto ayudará a asegurar su servicio y lo hará más inmune a los clientes lentos.
Entonces sí, es factible, pero hay compensaciones clave a considerar. Además, la dificultad principal no tendrá mucho que ver con HTML5 o Node: se tratará con interrupciones de conexión del cliente, problemas de monedas como el pedido de mensajes y la gestión operativa del lado del servidor.
- ¿Puedo hacer un juego en solo un mes?
- ¿Cuál es el mejor lenguaje de programación para un principiante si quiero crear diferentes aplicaciones como Stripe (pago) o Gaming o aplicaciones de correo electrónico?
- Cómo convertir una idea en una startup
- ¿Cuáles son las cosas que uno debe hacer para desarrollar una aplicación?
- ¿Cómo crean los desarrolladores aplicaciones de dibujo y pintura?