¿Es realmente tan importante el tiempo de inicio de la aplicación web?

11

Tuve una conversación con alguien acerca de agregar un código de inicialización en el inicio de la aplicación y se quejó de que eso causó un aumento en el tiempo de inicio. Realmente no podía decir una razón (instinto o algo así, no lo sé). Esta no es una aplicación de uso intensivo y comienza en aproximadamente un minuto, implementamos algunas veces al año.

Recuerdo haber leído tales consejos sobre preguntas sobre SO hace algún tiempo, las personas que aconsejaban inicializar en el inicio en lugar de acceder a la página con el sello "si puede pagar la penalización".

He trabajado con aplicaciones web que comenzaron de 30 segundos a 4-5 minutos, pero una vez en línea se sacudieron.

Entonces, ¿qué me estoy perdiendo? A menos que sea una aplicación vital como ... No sé ... para el mercado financiero, aplicaciones médicas, exploración espacial, etc., ¿es realmente tan importante el tiempo de inicio?

PD: Me refiero estrictamente a las aplicaciones web, las aplicaciones de escritorio están destinadas a comenzar a la velocidad del rayo.

JohnDoDo
fuente
¿Existe un requisito no funcional definido para el inicio de la aplicación o es solo una discusión dentro del desarrollo?
StuperUser
@StuperUser: no es un requisito, solo una discusión hasta ahora.
JohnDoDo
En realidad, hay un sitio de Experiencia de usuario donde sería mejor preguntar esto.
Cyclops
@ Cyclops: en realidad estoy más interesado en los motivos del lado del servidor de la cerca, no del lado del usuario.
JohnDoDo

Respuestas:

18

Puede ser un factor importante durante el desarrollo: si su plataforma no admite el cambio de código en una aplicación en ejecución, entonces el tiempo de inicio se convierte en parte de su ciclo de retroalimentación, y allí, incluso 30 segundos son dolorosos y una amenaza para la productividad.

Para el entorno de producción, realmente no importa; o bien un poco de tiempo de inactividad es aceptable y 5 minutos aún no son mucho, o no lo es y usted tiene que implementar algún tipo de cambio en vivo.

Michael Borgwardt
fuente
Sí, pensé mucho sobre el ciclo de desarrollo, pero no es como si cambiamos una coma, implementamos, cambiamos un nombre de variable, implementamos, etc. Personalmente despliego en desarrollo un máximo de 10 veces / día. Un minuto de inicio o 1.2 no es una gran diferencia.
JohnDoDo
77
@JohnDoDo: ¿Cuánto de eso es realmente un flujo de trabajo natural y cuánto evita habitualmente una implementación prolongada? Un ciclo de retroalimentación rápido puede ayudar enormemente a la productividad. A veces, hacer pequeños cambios incrementales y ver de inmediato el resultado es lo que necesita. Hace 50 años, las personas escribían programas en papel, los enviaban a un operador y obtenían un resultado impreso al día siguiente, a veces solo un error del compilador. ¿No te parece una forma horriblemente ineficiente de trabajar para ti? Bueno, para muchos programadores, sus 10 implementaciones por día parecen ser así.
Michael Borgwardt
1
Si es posible, evalúe la opción de hacer un "simulacro" de inicio o de tener las estructuras serializadas en el disco con datos de prueba para acelerar los tiempos de inicio durante el desarrollo.
Vinko Vrsalovic
Estoy de acuerdo con Vinko, ¿hay alguna manera de desactivar las costosas funciones init () al construir en modo de depuración? Sin embargo, no se preocupe si lo que está inicializando le dará resultados diferentes en Desarrollo y Producción.
AndyMcKenna
4

Creo que este es el caso cuando el famoso principio dialéctico de Hegel de transición de la cantidad a la calidad realmente funciona.

Ya ves, el tiempo siempre es importante. Estoy de acuerdo con las palabras de Michael Borgwardt sobre la importancia de la construcción rápida durante el desarrollo / prueba, pero insisto en que (puede ser de alguna otra manera) también es muy importante para la producción.

Cada desarrollador que implementó algún código incorrecto en producción sabe que la revisión proporcionada en 5 minutos y en 1 minuto son cosas muy, muy diferentes.

shabunc
fuente
2

La verdadera pregunta es si la aplicación funcionará sin la inicialización. Tenemos nuevos empleados que se obsesionan con el "rendimiento", mi respuesta común es que no me importa la rapidez con la que da resultados incorrectos. En mi humilde opinión, los algoritmos de destrucción porque "será más rápido de esta manera" y otras grandes ideas solo introducen errores.

Si se requiere la inicialización, hágalo. ¿Cuánto tiempo se perderá cuando los usuarios finales obtengan los resultados incorrectos, eventualmente descubran que la aplicación web está equivocada, lo llamen y se quejen, y tengan que regresar y depurar / corregir / probar / volver a implementar? ahora pregunte a su colega cómo se ha ahorrado tiempo. (y apuesto a que los núcleos de su servidor están inactivos al 99% de todos modos)

jqa
fuente
2

Esta pregunta no pregunta sobre ninguna plataforma en particular. Hay plataformas en las que el tiempo de inicio es realmente muy importante.

Por ejemplo, en Google App Engine; Si no se accede a su página (o mejor dicho, se accede a ella con menos frecuencia que otra aplicación en el mismo nodo), se descargará ocasionalmente.

Por lo tanto, si se encuentra en el 99% inferior de la frecuencia de acceso al sitio, el tiempo de inicio es el tiempo de acceso; su aplicación se reinicia en casi todos los accesos. si se encuentra en el 1% superior, entonces su aplicación se está iniciando en muchos nodos, y aunque muchos accesos a la página regresarán de una instancia ya iniciada, algunos todavía no lo harán, por lo que tendrá tiempos de acceso intermitentes y largos .

Esto mismo es cierto en muchos otros entornos de alojamiento. Las fugas en bibliotecas de terceros, o incluso en su propio código que simplemente han eludido el descubrimiento, pueden significar que la única forma confiable de ejecutar su servicio web es recargarlo de vez en cuando (entre 100 y 10,000), y así el tiempo de inicio se paga con frecuencia. El uso de este patrón es aceptable cuando una aplicación tiene fugas, pero se inicia rápidamente; no funciona cuando la aplicación tarda más de unos segundos en iniciarse.

SingleNegationElimination
fuente
1

Corre el riesgo de que su aplicación se considere inferior al estándar o, lo que es peor, su capacidad de desarrollo. Ahora, esta aplicación puede estar ahorrando a alguien tanto tiempo y / o hacer una tarea tan necesaria que los usuarios agradecidos pueden mirar más allá del largo inicio.

Puede llevar más tiempo programar de tal manera que la aplicación se cargue de forma perezosa, pero solo los interesados ​​pueden determinar si vale la pena. Tuve un informe que se ejecutó en 55 segundos. y lo bajamos a 35. Nadie se dio cuenta. Aunque pasé el doble de tiempo entre 35 y 18, todos lo notaron y quedaron agradecidos e impresionados. Pasar de 5 a 3 minutos para una aplicación utilizada varias veces al año no es gran cosa. Los usuarios tendrán menos tiempo para pasar en Facebook o tomar un café.

La percepción es la clave. Si la empresa no está contenta con los equipos de desarrollo en general y esta aplicación específicamente, es posible que desee acumular buena voluntad y acelerar el proceso.

JeffO
fuente
Sin embargo, el tiempo de inicio de la aplicación web no debería afectar a los usuarios normales. El otro desarrollador está molesto porque personalmente reinicia la aplicación varias veces al día como parte del desarrollo regular.
AndyMcKenna