Cómo actualizar una aplicación web en vivo si no puede tener ningún tiempo de inactividad

En realidad no es tan difícil y hay varias formas de lograr lo que está pidiendo.

1. Actualización de tiempo de inactividad cero a nivel de aplicación

Consideremos que su aplicación se está ejecutando y, por lo tanto, escucha en un puerto, aceptando conexiones de red. Ahora que desea actualizar la aplicación, le dice a su programa que no acepte más conexiones (deje de escuchar en ese puerto) pero que siga ejecutándose. Al mismo tiempo, comienza su proceso actualizado e inmediatamente comienza a escuchar en el mismo puerto que la aplicación anterior. (Hay herramientas que permiten que su nueva aplicación “espere” para escuchar en ese puerto y, por lo tanto, siempre habrá un proceso de escucha: jbenet / go-reuseport) Mantendrá su aplicación anterior en funcionamiento hasta que no haya más conexiones abiertas o Decides matarlo. Al final, su aplicación tuvo cero tiempo de inactividad.

2. Otra opción es utilizar el equilibrio de carga y la alta disponibilidad.

Digamos que tenemos un equilibrador de carga y las instancias de la aplicación detrás. Primero le decimos al equilibrador de carga que deje de distribuir el tráfico a la instancia uno. Espere hasta que todas las conexiones abiertas a la instancia uno estén cerradas. Ciérrelo, actualícelo, reinícielo. Si se está ejecutando, dígale a LB que dirija el tráfico hacia él nuevamente. Repita para las tres instancias, hecho.

Depende de dónde se encuentre su infraestructura y tecnología.

Por lo general, tiene muchas computadoras con su sitio web en ejecución. Apaga cada uno de ellos actualizándolo mientras el tráfico es manejado por los que aún están activos.

O puede hacer esto: agregue un servidor con el sitio web / aplicación actualizado, migre cada conexión a esta nueva instancia y luego apague el viejo o e.

Bueno, esto normalmente se hace teniendo servidores redundantes para que diseñe su flujo de implementación de tal manera que no elimine todas sus máquinas a la vez, sino que actualice el código en x número de máquinas a la vez y siempre haya un servidor en línea para atender su solicitud mientras el código se implementa en otros servidores

More Interesting

¿Qué marco web usarías para crear un sitio web de clones de Udemy y por qué?

¿Por qué un equipo de desarrollo debería elegir Node.js para aplicaciones web? ¿Es cierta clase de aplicaciones realmente más fácil para desarrolladores expertos con Node.js?

¿Qué herramientas utilizan los diseñadores de productos para elegir colores y fuentes para aplicaciones web?

¿Existe una aplicación web que le permita administrar sus cuentas en varios sitios? Tengo varias cuentas de Twitter y Facebook para diferentes propósitos. ¿Existe una aplicación que me permita hacer un seguimiento de ellos?

Cómo explicar el término 'desarrollo o marco web full stack' a un niño de la escuela

Para una aplicación web simple, ¿cuál es la mejor opción para la implementación de JPA?

¿Qué herramientas necesito para construir un diccionario web?

¿Cuál es una buena herramienta para crear mapas interactivos para un blog de viajes?

¿Debo desarrollar mi aplicación web en Node.js o Ruby on Rails?

¿Cómo puedo proteger mi aplicación web de la inyección SQL?

¿Cuál es la mejor base de datos adecuada con Python para aplicaciones web?

¿Es un mal movimiento no incluir algún tipo de registro de correo electrónico / creación de cuenta al crear una aplicación web y solo confiar en el registro / inicio de sesión social?

¿Es segura una aplicación web node.js (r) de los ataques DDOS?

Cómo enviar datos push usando Firebase entre dos clientes

¿Cuáles son los mejores sitios web o aplicaciones móviles para encontrar bienes raíces internacionales?